pm_policy(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… pm_policy(9) πŸ’…

okay bestie, this one's from the Kernel API Manual, and it's literally all about letting your SOC pick a vibe for power management. let's get into it 🫢


✨ NAME ✨

pm_policy β€” the sysfs situation where you tell your GPU how to balance clock/throttling energy ⚑


🌸 DESCRIPTION 🌸

so, here's the tea: certain SOCs can support different power policies to optimize application performance. but β€” and this is the important part β€” this policy is provided only at SOC level, not at a per-process level. which honestly slaps when the entire SOC is utilized for a dedicated workload. main character SOC energy πŸ‘‘

The amdgpu driver provides a sysfs API for selecting the policy. Presently, only two types of policies are supported through this interface. two. that's it. that's the roster πŸ’…

  • Pstate Policy Selection β€” this is to select different Pstate profiles which decides clock/throttling preferences. your whole speed-vs-chill situation ✨
  • XGMI PLPD Policy Selection β€” when multiple devices are connected over XGMI, this helps to select policy to be applied for per link power down. link-by-link power down, iykyk πŸ”—
heads up babe: the list of available policies and policy levels vary between SOCs. they can be viewed under the pm_policy node directory. and if the SOC doesn't support any policy, this node won't be available at all β€” like, not even invited. the different policies supported will be available as separate nodes under pm_policy. πŸŽ€

πŸ¦‹ Reading the policy file

cat /sys/bus/pci/devices/.../pm_policy/<policy_type>

Reading the policy file shows the different levels supported. the level which is applied presently is denoted by * (asterisk). so look for the little star, that's your current fave ⭐ E.g.:

cat /sys/bus/pci/devices/.../pm_policy/soc_pstate
0 : soc_pstate_default
1 : soc_pstate_0
2 : soc_pstate_1*
3 : soc_pstate_2

cat /sys/bus/pci/devices/.../pm_policy/xgmi_plpd
0 : plpd_disallow
1 : plpd_default
2 : plpd_optimized*

see that 2 : soc_pstate_1*? that's the one currently serving looks πŸ’…


πŸŽ€ To apply a specific policy

"echo  <level> > /sys/bus/pci/devices/.../pm_policy/<policy_type>"

for the levels listed in the example above, to select "plpd_optimized" for XGMI and "soc_pstate_2" for soc pstate policy β€”

echo "2" > /sys/bus/pci/devices/.../pm_policy/xgmi_plpd
echo "3" > /sys/bus/pci/devices/.../pm_policy/soc_pstate

and boom, policy applied, slay πŸ”₯


🌈 SEE ALSO 🌈

okay this list is long but we don't skip, we don't summarize, we list every single one because that's what icons do πŸ’œ


and that's the whole page, bestie 🧚 this one came straight out of ./drivers/gpu/drm/amd/pm, dated October 2026, and it's giving pm_policy(9) energy from start to finish. mwah πŸ’–

πŸ“¦ where this page comes from