I had similar issues with power management for a Radeon 6950 on Linux, basically it was this
1. Single monitor power management would work with setting low/medium/high (I don't use dynpm)
2. Dual monitor power management kept the same clock speeds for low/medium/high (I don't use dynpm)
After adding the flag drm.debug=0x02 to the kernel command line I was able to see the issue, the power tables in the video bios were not configured correctly to match the radeon kernel module.
With a single monitor State 1: Performance was being used which allowed for the most effective power management. However, with dual monitors State 0: Default was being used because the driver couldn't find a power state to use for dual monitors based on its search algorithm. To get around this I hacked around the driver to always use State 1: Performance which allows for using the power management with dual monitors. Depending on how the power tables are setup across different cards from different generations/manufactorers seems to dictate the level of success with power management.
When using Windows the AMD/ATI driver actually uses State 2: Default for power manegement which doesn't make too much sense to me, but it is likely that in their driver there are different search algorithms for the power states to use. A userspace tool to manually select the power states would be a good idea, with the caveat that it may cause display issues.
1. Single monitor power management would work with setting low/medium/high (I don't use dynpm)
2. Dual monitor power management kept the same clock speeds for low/medium/high (I don't use dynpm)
After adding the flag drm.debug=0x02 to the kernel command line I was able to see the issue, the power tables in the video bios were not configured correctly to match the radeon kernel module.
Code:
[ 0.917689] [drm:radeon_pm_print_states], 4 Power State(s) [ 0.917690] [drm:radeon_pm_print_states], State 0: Default [ 0.917691] [drm:radeon_pm_print_states], Default [ 0.917692] [drm:radeon_pm_print_states], 16 PCIE Lanes [ 0.917693] [drm:radeon_pm_print_states], 3 Clock Mode(s) [ 0.917694] [drm:radeon_pm_print_states], 0 e: 800000 m: 1250000 v: 1175 No display only [ 0.917696] [drm:radeon_pm_print_states], 1 e: 800000 m: 1250000 v: 1175 [ 0.917698] [drm:radeon_pm_print_states], 2 e: 800000 m: 1250000 v: 1175 [ 0.917700] [drm:radeon_pm_print_states], State 1: Performance [ 0.917701] [drm:radeon_pm_print_states], 16 PCIE Lanes [ 0.917702] [drm:radeon_pm_print_states], 3 Clock Mode(s) [ 0.917703] [drm:radeon_pm_print_states], 0 e: 250000 m: 150000 v: 900 No display only [ 0.917705] [drm:radeon_pm_print_states], 1 e: 500000 m: 1250000 v: 1000 [ 0.917706] [drm:radeon_pm_print_states], 2 e: 870000 m: 1250000 v: 1175 [ 0.917708] [drm:radeon_pm_print_states], State 2: Default [ 0.917709] [drm:radeon_pm_print_states], 16 PCIE Lanes [ 0.917710] [drm:radeon_pm_print_states], 3 Clock Mode(s) [ 0.917711] [drm:radeon_pm_print_states], 0 e: 500000 m: 1250000 v: 1000 No display only [ 0.917712] [drm:radeon_pm_print_states], 1 e: 500000 m: 1250000 v: 1000 [ 0.917714] [drm:radeon_pm_print_states], 2 e: 870000 m: 1250000 v: 1175 [ 0.917715] [drm:radeon_pm_print_states], State 3: Default [ 0.917716] [drm:radeon_pm_print_states], 16 PCIE Lanes [ 0.917717] [drm:radeon_pm_print_states], 3 Clock Mode(s) [ 0.917719] [drm:radeon_pm_print_states], 0 e: 500000 m: 1250000 v: 1000 No display only [ 0.917720] [drm:radeon_pm_print_states], 1 e: 500000 m: 1250000 v: 1000 [ 0.917721] [drm:radeon_pm_print_states], 2 e: 870000 m: 1250000 v: 1175
When using Windows the AMD/ATI driver actually uses State 2: Default for power manegement which doesn't make too much sense to me, but it is likely that in their driver there are different search algorithms for the power states to use. A userspace tool to manually select the power states would be a good idea, with the caveat that it may cause display issues.
Comment