ENUM PP_FEATURE_MASK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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