ENUM PP_FEATURE_MASK(9)
π enum PP_FEATURE_MASK(9) β the kernel API manual, bestie edition
Okay so picture this: it's a page straight out of the Kernel API Manual, and the main character is enum PP_FEATURE_MASK. That's literally the whole vibe. Let's get into it π«Ά
β¨ NAME β¨
enum PP_FEATURE_MASK β bestie, this is the thing used to mask power play features. That's it. That's the job. π
β¨ SYNOPSIS β¨
Here's the whole enum, every single member, no skips, no cuts, we stan a complete list:
enum PP_FEATURE_MASK {
PP_SCLK_DPM_MASK ,
PP_MCLK_DPM_MASK ,
PP_PCIE_DPM_MASK ,
PP_SCLK_DEEP_SLEEP_MASK ,
PP_POWER_CONTAINMENT_MASK ,
PP_UVD_HANDSHAKE_MASK ,
PP_SMC_VOLTAGE_CONTROL_MASK ,
PP_VBI_TIME_SUPPORT_MASK ,
PP_ULV_MASK ,
PP_ENABLE_GFX_CG_THRU_SMU ,
PP_CLOCK_STRETCH_MASK ,
PP_OD_FUZZY_FAN_CONTROL_MASK ,
PP_SOCCLK_DPM_MASK ,
PP_DCEFCLK_DPM_MASK ,
PP_OVERDRIVE_MASK ,
PP_GFXOFF_MASK ,
PP_ACG_MASK ,
PP_STUTTER_MODE ,
PP_AVFS_MASK ,
PP_GFX_DCS_MASK
};
Twenty constants, one enum, zero notes. Iconic honestly. β¨
π Constants π
Okay now the part where we meet everybody one by one. Every mask gets its moment, as it should π
PP_SCLK_DPM_MASKβ dynamic adjustment of the system (graphics) clock. She adjusts, dynamically, as one does.PP_MCLK_DPM_MASKβ dynamic adjustment of the memory clock. Memory clock said "I contain multitudes" and honestly same.PP_PCIE_DPM_MASKβ dynamic adjustment of PCIE clocks and lanes. Lanes too. The whole highway.PP_SCLK_DEEP_SLEEP_MASKβ system (graphics) clock deep sleep. Nap time, but make it clock-related π΄PP_POWER_CONTAINMENT_MASKβ power containment. Keeping the power contained, keeping the vibes contained, fr fr.PP_UVD_HANDSHAKE_MASKβ unified video decoder handshake. A little professional agreement between colleagues π€PP_SMC_VOLTAGE_CONTROL_MASKβ dynamic voltage control.PP_VBI_TIME_SUPPORT_MASKβ vertical blank interval support. Supportive queen.PP_ULV_MASKβ ultra low voltage. Lowkey low voltage, highkey iconic.PP_ENABLE_GFX_CG_THRU_SMUβ SMU control of GFX engine clockgating. Not..._MASK, don't come for me, I'm just reading the enum.PP_CLOCK_STRETCH_MASKβ clock stretching. Get that clock its yoga mat π§PP_OD_FUZZY_FAN_CONTROL_MASKβ overdrive fuzzy fan control. Fuzzy. Fan. Control. The three words I did not expect together and yet.PP_SOCCLK_DPM_MASKβ dynamic adjustment of the SoC clock.PP_DCEFCLK_DPM_MASKβ dynamic adjustment of the Display Controller Engine Fabric clock. Say that five times fast, I dare you πPP_OVERDRIVE_MASKβ over- and under-clocking support. Both directions! Versatile legend.PP_GFXOFF_MASKβ dynamic graphics engine power control.PP_ACG_MASKβ adaptive clock generator. Adapting, generating, slaying.PP_STUTTER_MODEβ stutter mode. It's a whole mode. It's called stutter. Moving on πPP_AVFS_MASKβ adaptive voltage and frequency scaling.PP_GFX_DCS_MASKβ GFX Async DCS.
πΈ Description πΈ
Now the part you actually came for β how to use this thing, bestie.
To override these settings on boot, append amdgpu.ppfeaturemask=<mask> to the kernel's command line parameters. This is usually done through a system's boot loader (E.g. GRUB). π»
And if you're manually loading the driver, pass ppfeaturemask=<mask> as a modprobe parameter instead. Different situation, different flag, keep them straight π«Ά
Heads up bestie: this is boot-time / driver-load-time territory, so get your <mask> right before you commit. The page doesn't tell you what happens if you don't, and I'm not gonna invent lore β¨
π¦ SEE ALSO π¦
The friend group, all linked with love:
- Kernel file
./drivers/gpu/drm/amd/include/amd_shared.h IP Blocks(9)enum amd_ip_block_type(9)enum DC_FEATURE_MASK(9)enum DC_DEBUG_MASK(9)struct amd_ip_funcs(9)
And that's the page, babes π It lives in ./drivers/gpu/drm/amd/include, and the version stamp is October 2026. Genuinely a whole era. Bye bestie, go mask some power play features responsibly ππ
β enum PP_FEATURE_MASK(9), out π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms