pm_policy(9)
π 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 thepm_policynode 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 underpm_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 π
- Kernel file
./drivers/gpu/drm/amd/pm/amdgpu_pm.c amdgpu_pm_dev_state_check(9),amdgpu_pm_get_access(9),amdgpu_pm_get_access_if_active(9),amdgpu_pm_put_access(9),power_dpm_state(9),power_dpm_force_performance_level(9),pp_table(9),pp_od_clk_voltage(9),pp_features(9),pp_dpm_sclkpp_dpm_mclkpp_dpm_socclkpp_dpm_fclkpp_dpm_dcefclkpp_dpm_pcie(9),pp_power_profile_mode(9),gpu_busy_percent(9),mem_busy_percent(9),vcn_busy_percent(9),pcie_bw(9),unique_id(9),thermal_throttling_logging(9),apu_thermal_cap(9),gpu_metrics(9),smartshift_apu_power(9),smartshift_dgpu_power(9),smartshift_bias(9),board(9),baseboard_temp(9),gpuboard_temp(9),cur_node_power_limit(9),node_power(9),npm_status(9),global_ppt_resid(9),max_node_power_limit(9),baseboard_power(9),baseboard_power_limit(9),hwmon(9),fan_curve(9),acoustic_limit_rpm_threshold(9),acoustic_target_rpm_threshold(9),fan_target_temperature(9),fan_minimum_pwm(9),fan_zero_rpm_enable(9),fan_zero_rpm_stop_temperature(9)
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
- 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