Well .. even if it is within tolerances it might still be interesting see if the temperature can be lowered. Especially since it's suppoed to run way cooler under windows. (It's also an excuse for me to finally take a closer look at the documentation dumps :P)
I compared the thermistor values with the ones from the cpu sensors. My 3-5°C estimate was apparently bit on the high side, it's probably closer to 2°C when the ports are disabled.
You can get the device numbers from lspci or the register guide (it shows them in decimal though).
Or select the device by its vender and device id, which you can get from lspci or the register guide aswell.
0x1002 is AMD's vendor id
The device id depends on the mode set by the BIOS. From register guide page 12:
IDE 0x4390
AHCI 0x4391
RAID without RAID 5 option 0x4392
RAID with RAID 5 option SATA + FC enabled 0x4393 or 0x4394
silly example:
About the meaning of the bits. 0x38 in hex is 00111000 in binary.
Google can do the translation for you:
http://www.google.com/search?q=0x38+in+binary
http://www.google.com/search?q=0b00111000+in+hex
It leaves out leading zeros though.
The ports count up from the right. Every bit that's set to one disables a port. The two left most bits are reserved so leave them alone.
To figure out which device is attached to which port you can look through the dmesg output or into sysfs.
dmesg is probably easier:
with sysfs it'd be something like this:
I looked into a few more things...
This is something that powertop suggests and it really cools the chip down slightly.
If you set it from powertop it only sets the first host to min_power. You can also set that for the other hosts. But doing so didn't make a difference here. Either it really only needs to be set for the first one or it's because the other devices are a dvd drive and a fairly old hdd.
This sets all hosts to min_power:
Disabling some unused USB ports slightly cooled the chip too.. but it wasn't a whole lot.
This disables all but the first 6 ports:
There are three usb controllers with 14 ports, bit zero to two control the first six ports, bit four to six another six and bit seven the last two. Set any group to zero to disable that range. It's a bit confusing.. for the exact meaning of the bits check register programming requirements page 43 and register guide page 62 and 133. Not sure if it's worth fooling around with these. The difference is probably less than one degree.
It's all a bit crude anyway. If anything here makes a noticeable difference it might be worth patching the drivers directly. Right now they get pretty unhappy when you try to acces the disabled ports.