Bug 94387

Summary: Approx 35W more power usage in multi-screen
Product: DRI Reporter: Steve <netwiz>
Component: DRM/RadeonAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED MOVED QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
dmesg output
none
Xorg.0.log as requested none

Description Steve 2016-03-03 12:29:09 UTC
When using multiscreen on the radeon driver, dpm is disabled. This means the adapter draws approx 35W more power due to no dynamic power management.

While I would love to continue to use this card + radeon driver (which works perfectly in all other regards), the extra heat generated make this not an option.

Multi-monitor configs are becoming more and more common - but they are almost unusable power / heat wise.

While this is probably a pipe-dream - what are the chances of getting some form of power management that isn't just "severely cripple the card"?
Comment 1 Alex Deucher 2016-03-03 14:19:01 UTC
DPM works with multi-monitor.  What chip are you using?  Please attach your xorg log and dmesg output.
Comment 2 Steve 2016-03-03 21:27:00 UTC
Created attachment 122105 [details]
dmesg output

You are right - I notice:
[    3.055513] [drm] Loading BARTS Microcode
[    3.055579] [drm] Internal thermal controller with fan control
[    3.061488] [drm] radeon: dpm initialized

This is interesting - as the fan sure works harder under the radeon driver than the fglrx - and you can feel the extra heat coming out the back of the card.

Is there any further information I can supply re power levels on the card to try and see what causes the extra power / heat usage?
Comment 3 Steve 2016-03-03 21:27:28 UTC
Created attachment 122106 [details]
Xorg.0.log as requested
Comment 4 Steve 2016-03-05 04:04:40 UTC
I've been digging more into this.... I have 3 x displays - 2 x DVI, 1 x DP.

Looking into debugfs, I can see that the clocks never change from sclk 900MHz, mclk: 105000.

ie:
# cat /sys/kernel/debug/dri/64/radeon_pm_info
uvd    vclk: 0 dclk: 0
power level 2    sclk: 90000 mclk: 105000 vddc: 1175 vddci: 1150

My kernel options are:
# for i in /sys/class/drm/card0/device/power_*; do echo "$i: `cat $i`"; done
/sys/class/drm/card0/device/power_dpm_force_performance_level: auto
/sys/class/drm/card0/device/power_dpm_state: balanced
/sys/class/drm/card0/device/power_method: dpm
/sys/class/drm/card0/device/power_profile: default

# for i in /sys/module/radeon/parameters/*; do echo "$i: `cat $i`"; done
/sys/module/radeon/parameters/agpmode: 0
/sys/module/radeon/parameters/aspm: -1
/sys/module/radeon/parameters/audio: 0
/sys/module/radeon/parameters/auxch: -1
/sys/module/radeon/parameters/backlight: -1
/sys/module/radeon/parameters/bapm: -1
/sys/module/radeon/parameters/benchmark: 0
/sys/module/radeon/parameters/connector_table: 0
/sys/module/radeon/parameters/deep_color: 0
/sys/module/radeon/parameters/disp_priority: 0
/sys/module/radeon/parameters/dpm: -1
/sys/module/radeon/parameters/dynclks: -1
/sys/module/radeon/parameters/fastfb: 0
/sys/module/radeon/parameters/gartsize: 1024
/sys/module/radeon/parameters/hard_reset: 0
/sys/module/radeon/parameters/hw_i2c: 0
/sys/module/radeon/parameters/lockup_timeout: 10000
/sys/module/radeon/parameters/modeset: 1
/sys/module/radeon/parameters/msi: -1
/sys/module/radeon/parameters/mst: 0
/sys/module/radeon/parameters/no_wb: 0
/sys/module/radeon/parameters/pcie_gen2: -1
/sys/module/radeon/parameters/r4xx_atom: 0
/sys/module/radeon/parameters/runpm: -1
/sys/module/radeon/parameters/test: 0
/sys/module/radeon/parameters/tv: 0
/sys/module/radeon/parameters/use_pflipirq: 2
/sys/module/radeon/parameters/vm_block_size: 12
/sys/module/radeon/parameters/vm_size: 8
/sys/module/radeon/parameters/vramlimit: 0

# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.4.3-300.fc23.x86_64 root=UUID=03ee98ed-d998-4518-b216-b77822a9319b ro quiet radeon.audio=0 radeon.tv=0 audit=0 selinux=0

# cat /proc/version
Linux version 4.4.3-300.fc23.x86_64 (mockbuild@bkernel01.phx2.fedoraproject.org) (gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC) ) #1 SMP Fri Feb 26 18:45:40 UTC 2016
Comment 5 Steve 2016-03-05 04:37:26 UTC
Further digging in this BZ seems to show this as a similar problem to:
https://bugzilla.kernel.org/show_bug.cgi?id=60523

/sys/class/drm/card0/device $ cat power_dpm_force_performance_level
auto

/sys/class/drm/card0/device $ echo low > power_dpm_force_performance_level
-bash: echo: write error: Invalid argument

/sys/class/drm/card0/device $ cat power_dpm_force_performance_level
auto

/sys/class/drm/card0/device $ echo high > power_dpm_force_performance_level
-bash: echo: write error: Invalid argument

/sys/class/drm/card0/device $ echo auto > power_dpm_force_performance_level
-bash: echo: write error: Invalid argument

Video card is:
$ lspci -v -s 03:00.0
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Barts XT [Radeon HD 6870] (prog-if 00 [VGA controller])
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device 00d0
        Flags: bus master, fast devsel, latency 0, IRQ 37
        Memory at d0000000 (64-bit, prefetchable) [size=256M]
        Memory at fbcc0000 (64-bit, non-prefetchable) [size=128K]
        I/O ports at d000 [size=256]
        Expansion ROM at fbca0000 [disabled] [size=128K]
        Capabilities: [50] Power Management version 3
        Capabilities: [58] Express Legacy Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Capabilities: [150] Advanced Error Reporting
        Kernel driver in use: radeon
        Kernel modules: radeon
Comment 6 Martin Peres 2019-11-19 09:13:28 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/drm/amd/issues/697.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.