Bug 207183 - radeon.dpm=1 with second monitor runs hot
Summary: radeon.dpm=1 with second monitor runs hot
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Video(DRI - non Intel) (show other bugs)
Hardware: x86-64 Linux
: P1 normal
Assignee: drivers_video-dri
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-04-09 21:14 UTC by Erik Huelsmann
Modified: 2020-04-12 15:21 UTC (History)
2 users (show)

See Also:
Kernel Version: 5.3.18
Subsystem:
Regression: No
Bisected commit-id:


Attachments
dmesg | grep -iE "drm|radeon" (8.14 KB, text/plain)
2020-04-09 21:14 UTC, Erik Huelsmann
Details

Description Erik Huelsmann 2020-04-09 21:14:01 UTC
Created attachment 288315 [details]
dmesg | grep -iE "drm|radeon"

for a long time, I've been searching for the reason why my card was running fans high on Linux. (It started after a kernel update; don't know which one -- years ago) While at the time, I ran Windows on the same laptop every now and then, it would work correctly.

My card reports `lspci | grep VGA`:

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Venus XT [Radeon HD 8870M / R9 M270X/M370X]


Without radeon.dpm or with radeon.dpm=1, the card runs hot: within minutes fans will run at 3300+ RPM keeping the card barely below 66 degC. Note that `radeontop` reports an `Graphics pipe` of 0.00% most of the time.

After discovery of the setting radeon.dpm yesterday, after a few failed trials to set the setting to '1', I set `radeon.dpm=0`. After letting the PC cool down (turned off) and starting again, the PC ran 10 minutes without fans and is running at 53 degC with fans running at 2100 RPM.
Comment 1 Erik Huelsmann 2020-04-10 11:45:16 UTC
Note that the system doesn't exhibit this problem when only a single monitor is attached. Monitor output in use: HDMI.
Comment 2 Alex Deucher 2020-04-10 12:07:01 UTC
Note that the memory clock runs at high when multiple monitors are attached because changing the memory clock has to happen during vblank time to avoid glitches on the screen and with multiple monitors that is not aligned.
Comment 3 Erik Huelsmann 2020-04-10 12:25:25 UTC
Thanks for commenting. Does 'radeon.dpm=0' suppress that? I'm not having issues when I set that parameter on the kernel command line.
Comment 4 Alex Deucher 2020-04-10 12:38:32 UTC
(In reply to Erik Huelsmann from comment #3)
> Thanks for commenting. Does 'radeon.dpm=0' suppress that? I'm not having
> issues when I set that parameter on the kernel command line.

That leave the GPU with the boot up clocks which are low.
Comment 5 Erik Huelsmann 2020-04-10 14:15:16 UTC
Is the fact that it's apparently not possible to switch the memory clock with 2 monitors attached a design error in the hardware? Unfortunately, I don't have the Windows setup anymore to investigate it.
I'm extremely happy with my 'radeon.dpm=0' setup, because I'm only doing text-editing, programming and web browsing.

As I understand it, it's a choice where you have to run a high clock continually or cause possible on-screen glitches? That's too bad. I personally wouldn't mind a small flicker if that would help the noise of my laptop, but I do understand others may make other choices here.
Comment 6 Alex Deucher 2020-04-12 15:21:07 UTC
(In reply to Erik Huelsmann from comment #5)
> Is the fact that it's apparently not possible to switch the memory clock
> with 2 monitors attached a design error in the hardware? Unfortunately, I
> don't have the Windows setup anymore to investigate it.
> I'm extremely happy with my 'radeon.dpm=0' setup, because I'm only doing
> text-editing, programming and web browsing.
> 

The GPU dynamically changes the memory and gfx engine clocks at runtime based on GPU load.  Unfortunately if changed the memory clock dynamically you'd see flickering almost every frame if the GPU load changed.

You can manually force the clocks low or high via sysfs (as root):

force clocks low:
echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level
force clocks high:
echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level
dynamic:
echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level

Note You need to log in before you can comment on or make changes to this bug.