Bug 30922

Summary: [radeon] Noisy fan with Radeon R600 and Toshiba Satellite L500-164
Product: Drivers Reporter: Denis Washington (denisw)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: RESOLVED OBSOLETE    
Severity: normal CC: alan, alexdeucher
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.38-rc8 (at least since 2.6.35) Subsystem:
Regression: No Bisected commit-id:

Description Denis Washington 2011-03-11 13:38:35 UTC
When I use my Toshiba Satellite L500-164 laptop (AMD/ATI Radeon HD 4650) with the radeon KMS driver, the GPU fan spins up very quickly (and loudly) after booting and makes no attempt at spinning down subsequently (I need to fully reboot for this to happen). The resulting noise makes the driver unusable for me currently, which is unfortunate as it works perfectly otherwise.

I have tested this with every kernel version since I have this laptop, that is, 2.6.35, 2.6.36, 2.6.37 (different distributions each), and 2.6.38-rc8 mainline.

I don't know if it is helpful in any way, but I have looked to see if the machine has any external thermal sensors attached to the GPU (using lm_sensors and by looking into sysfs), but only the Intel Core sensors (coretemp) have been found. I assume that means that the GPU has an internal thermal sensor, but I don't know.

With the propietary fglrx driver, fan speed control works just fine.

If you need any further information, just ask.
Comment 1 Alex Deucher 2011-03-15 07:29:57 UTC
For more information about the power management options in the driver, see the "KMS Power Management Options" section of this page:
http://wiki.x.org/wiki/RadeonFeature
Comment 2 Alex Deucher 2011-03-15 07:30:38 UTC
Laptops generally expose the GPU temperature via an acpi thermal zone or an oem specific sensor.
Comment 3 Denis Washington 2011-04-05 13:30:30 UTC
I am aware of the power management options you pointed to, but they don't help with the fan problem (at best, they delay it slightly). /sys/class/thermal does not contain any thermal zones, there are only two CPU-related cooling devices and an LCD cooling device listed there:

$ ls /sys/class/thermal
cooling_device0
cooling_device1
cooling_device2
$ cat /sys/class/thermal/cooling_device0/type
Processor
$ cat /sys/class/thermal/cooling_device0/device/path
\_PR_.CPU0
$ cat /sys/class/thermal/cooling_device1/type
Processor
$ cat /sys/class/thermal/cooling_device1/device/path
\_PR_.CPU1
$ cat /sys/class/thermal/cooling_device2/type
LCD
$ cat /sys/class/thermal/cooling_device2/device/path
\_SB_.PCI0.P0P2.VGA_.LCD_

Does that mean it is an OEM-specific sensor? Why is it that fglrx can control the fan just fine then? (Or does fglrx have code specific to certain hardware vendors?) How I can find out more about how the GPU fan is controlled with this laptop?
Comment 4 Denis Washington 2011-05-27 09:30:10 UTC
I have talked to Dave Airlie on IRC (#radeon at freenode) today and it seems that my assumption that thermal sensor access is needed for proper fan control is wrong. Rather, the GPU seems to do fan control automatically and can only be influenced by the driver by giving a new policy table to the graphics card's BIOS.

The radeon driver doesn't currently do this, however, and relies on the BIOS' defaults, which however seem to be bad on my machine. This is why my fan mostly runs in full speed.

Dave says he thinks that there's some of the code lying around inside AMD to do proper fan control setup, but still in need of a lot of review. If this is the case, I would be happy to test the code once it's published in git.

(Please correct me if I am wrong about anything I've written here.)
Comment 5 Alex Deucher 2011-05-27 14:23:25 UTC
Laptops don't generally use the onboard GPU fan controller and thermal sensor since they usually have a single fan for both the GPU and the CPU.  The fan and thermal zones are generally exposed via ACPI or a vendor specific control.  For more info on the power management options in the driver see the page I linked in comment #1.
Comment 6 Denis Washington 2011-06-02 10:46:39 UTC
As I have already stated, changing the power management options didn't change anything at all. Even running the "low" profile doesn't stop the fan from cranking up to full speed under normal desktop load and never spinning down again, even if the system is idling.

I am also most certain that my laptop has a separate GPU fan; I can, in fact, control the CPU fan per sysfs, but whatever I do, the GPU fan keeps spinning at the same speed, so I guess there must be separate fans for CPU and GPU.