Radeon overheating (6900M)
Brad Campbell
lists2009 at fnarfbargle.com
Thu Sep 8 08:39:15 PDT 2011
G'day All,
I've just picked up a 2011 27" iMac. This has a Radon 6900M series GPU.
01:00.0 VGA compatible controller: ATI Technologies Inc Device 6720
I'm running a 3.1-rc5 kernel and X from the Ubuntu "edgers" ppa. I'm
running a 32 bit userspace on a 64bit kernel.
X.Org X Server 1.8.2
Release Date: 2010-07-01
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.24-28-xen i686 Ubuntu
Current Operating System: Linux bkmac 3.1.0-rc5+ #9 SMP Thu Sep 8
23:14:27 WST 2011 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.1.0-rc5+
root=UUID=7ac80060-64c1-467d-a242-cb39cda586b4 ro radeon.dynclks=1 quiet
splash
Build Date: 08 July 2010 01:50:14AM
xorg-server
2:1.8.2+git20100705+server-1.8-branch.665aa7ce-0ubuntu0sarvatt2~lucid
(For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.21.4
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
When I got the machine it was running _very_ hot, so I did some digging
and found that by setting the gpu power_profile to "low", it ran
significantly cooler.
I don't use 3D and don't need ultimate performance, so the slightly
slower refresh and re-draw was fair exchange for the much lower fan noise.
Today when I plugged in my remaining 2 monitors I found that even when
set to "low", the clock speed did not change and the machine was cooking
again.
I had a dig around in the kernel source, and knowing barely enough to be
dangerous, I forced the power_profile "low" setting to be the same for
single and multi-head :
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c
b/drivers/gpu/drm/radeon/radeon_pm.c
index 6fabe89..de85eda 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -102,7 +102,7 @@ static void radeon_pm_update_profile(struct
radeon_device *rdev)
break;
case PM_PROFILE_LOW:
if (rdev->pm.active_crtc_count > 1)
- rdev->pm.profile_index = PM_PROFILE_LOW_MH_IDX;
+ rdev->pm.profile_index = PM_PROFILE_LOW_SH_IDX;
else
rdev->pm.profile_index = PM_PROFILE_LOW_SH_IDX;
break;
And lo, I was back to a much more acceptable level of noise, and no
apparent evil side affects (well, if you run a copy of glxgears on each
head simultaneously they do jump a bit).
Obviously running a 2560x1440 and 2 1920x1200 monitors consumes some
extra horsepower, but according to my widget on the wall making this
change dropped about 40W from the power consumption, and cut the GPU fan
speed by about 60%.
I realize blindly bumbling around in GPU drivers is a pretty stupid
thing to do, but is there any other way to achieve the same outcomes
without patching the kernel?
Regards,
Brad
More information about the xorg-driver-ati
mailing list