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
_______________________________________________
xorg-driver-ati mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-ati

Reply via email to