From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 73338] Fan speed in idle at 40% with radeonsi and at 18% with
catalyst
Date: Mon, 06 Jan 2014 23:35:02 +0000
Message-ID:
What
Removed
Added
Severity
normal
enhancement
Assignee
xorg-driver-ati@lists.x.org
dri-devel@lists.freedesktop.org
QA Contact
xorg-team@lists.x.org
Product
xorg
DRI
Component
Driver/Radeon
DRM/Radeon
The open source driver currently relies on the vbios fan profile. There is no
support yet for driver defined or user defined profiles. Marking as an
enhancement request.
What | Removed | Added |
---|---|---|
CC | contact@nicolas-delvaux.org |
Same problem here on an MSI R7970 Lightning, tested with the l= atest Mesa version. Enabling dpm change nothing. For the record, here is the sensors output when the system is idle: radeon-pci-0100 Adapter: PCI adapter temp1: +33.0=C2=B0C=20=20 So this indeed seems to just be a fan control issue.
I can confirm this bug. I am currently using an MSI Radeon R9 270X, and fan speeds are indeed at around 40% with no ability to make adjustments.
I can confirm this too, using ATI Sapphire 7850 2GB OC, with fglrx drivers the fan is absolutely silent after the OS boots up and automatically speeds up in heavy load. With these drivers, the fan speed is always constant, no matter what load. Would be great if it would also change accordingly. Not sure how to help to fix this, I can provide any information needed.
I have the same issue, but with MSI HD7770. It would be great to fix this.
Is there any progress in this issue? I think it's more kernel issue than Xorg drivers. Can I somehow help resolving this? It is still present using 3.14.4 kernel.
Yes the issue is still active with 3.14.4. I tested the open driver up to 3.15rc4 and there were no changes yet. Neither in performance nor fan noise. (on the R9 270 from MSI)
AMD Gigabyte 280X user here (Windforce3 model) Fans at 40% speed for me, is very very loud. Using the 3.15 kernel in Fedor= a 20 with the radeonSI drivers, and the noise almost forces me to use the closed source drivers.=20 When I was back in Ubuntu and with fglrx, the fanspeed was working correctl= y, it was very low (don't know how much, but maybe 10%). When you install Windows for example and are using the WDDM drivers or defa= ult ones, the fan speed stays around the same level (40%), which makes me belie= ve this is somewhat at driver level, and not Kernel. Is there any way to reduce the speed manually, and increase it when the load increases? (The fans ramp up with DPM already in 3.15)
Although Alex already indicated the reason why this happens, I thought I'd chime in to add myself to the list of those affected. I have a Visiontek Radeon R7 260X, and the fan spins at 40% when the system starts up, until Catalyst kicks in and drops it to 20%. As others have reported, radeonsi fails to do this. It seems that just in this thread we now have MSI, VisionTek, Sapphire, and Gigabyte users so that's quite a few manufacturers who put a relatively high default fan speed (I'm sort of glad that I'm not alone!). I wonder if this is the same with Nvidia cards? Does nouveau have the ability to do fan control?
(In reply to comment #13) > I wonder if this is the same with Nvidia cards? Does nouveau have the ability > to do fan control? Yes, we do have support for fan control in Nouveau. Manufacturers do not really fiddle with temperature management anymore, so we do not have this problem. We have had one person complaining about a similar bug as this, although not as dramatic (35% instead of 30%, which is the minimum fan speed on most cards and is barely hearable).
(In reply to comment #13) > ... > It seems that just in this thread we now have MSI, VisionTek, Sapphire, and > Gigabyte users so that's quite a few manufacturers who put a relatively high > default fan speed (I'm sort of glad that I'm not alone!). I wonder if this > is the same with Nvidia cards? Does nouveau have the ability to do fan > control? You can add ASUS to the list. I own an Radeon HD 7950 Direct CU II which fan speed is by default around 40% which results in unbearable noise. fglrx dims the speed when xorg starts. Would be nice to have this fixed.
Any further news? Gigabyte HD7870 same issues as above. I have to use catalyst because of the fan noise.
I'm not sure of the standard etiquette here - is a +1 useful to get a sense of the number of people the bug is affecting, or just noise? Either way, +1 for Radeon HD7970 and apologies if it's NOT useful :)
(In reply to comment #17) > I'm not sure of the standard etiquette here - is a +1 useful to get a sense > of the number of people the bug is affecting, or just noise? At the least, it's good etiquette to read the discussion before replying. As stated in comment #5, developers already know about this. It's not a bug, but a missing feature. Please stop with the +1s.
So I'm starting to implement fan speed control, at least partially. Since I haven't found any related docs, this work is basically reverse-engineering. Here's my mmiotrace for BONAIRE R7 260X on 3.17-rc2 so far MARK 560.042950 R 4 580.364585 2 0xf0808010 0x3028 0x0 0 // read GRBM STATUS R 4 580.364590 2 0xf080d034 0x76ceed57 0x0 0 // read SDMA0_STATUS_REG R 4 580.364593 2 0xf080d834 0x46cee557 0x0 0 // read R_00D834_DMA_STATUS_REG R 4 580.364629 2 0xf0808010 0x3028 0x0 0 // read GRBM STATUS R 4 580.364632 2 0xf080d034 0x76ceed57 0x0 0 // read SDMA0_STATUS_REG R 4 580.364634 2 0xf080d834 0x46cee557 0x0 0 // read R_00D834_DMA_STATUS_REG W 4 580.364639 2 0xf0800200 0x80000004 0x0 0 // write to SMC_IND_INDEX_0 a 0x80000004 R 4 580.364641 2 0xf0800204 0x1000000 0x0 0 // read from SMC_IND_DATA_0 W 4 580.364643 2 0xf0800200 0x80000370 0x0 0 // write to SMC_IND_INDEX_0 R 4 580.364645 2 0xf0800204 0x23730 0x0 0 // read from SMC_IND_DATA_0 W 4 580.364646 2 0xf0800250 0x5c 0x0 0 // write to SMC_MESSAGE_0 (!) R 4 580.364649 2 0xf0800254 0x0 0x0 0 // wait for SMC_RESP R 4 580.364652 2 0xf0800254 0x0 0x0 0 // ... R 4 580.364655 2 0xf0800254 0x0 0x0 0 // ... R 4 580.364659 2 0xf0800254 0x1 0x0 0 // got it! R 4 580.364661 2 0xf0800254 0x1 0x0 0 W 4 580.364662 2 0xf0800200 0xc0300068 0x0 0 // write to SMC_IND_INDEX_0 R 4 580.364665 2 0xf0800204 0x40252f87 0x0 0 // read from SMC_IND_DATA_0 W 4 580.364666 2 0xf0800200 0xc0300064 0x0 0 // write to SMC_IND_INDEX_0 R 4 580.364668 2 0xf0800204 0x181431b 0x0 0 // read from SMC_IND_DATA_0 W 4 580.364670 2 0xf0800200 0xc0300064 0x0 0 // write to SMC_IND_INDEX_0 W 4 580.364671 2 0xf0800204 0x1814351 0x0 0 // read from SMC_IND_DATA_0 - this is the speed! W 4 580.364672 2 0xf0800200 0xc030006c 0x0 0 // write to SMC_IND_INDEX_0 R 4 580.364674 2 0xf0800204 0x50cb0c00 0x0 0 // read from SMC_IND_DATA_0 W 4 580.364676 2 0xf0800200 0xc030006c 0x0 0 // write to SMC_IND_INDEX_0 W 4 580.364677 2 0xf0800204 0x50cb0c00 0x0 0 // read from SMC_IND_DATA_0 W 4 580.364678 2 0xf0800200 0xc030006c 0x0 0 // write to SMC_IND_INDEX_0 R 4 580.364681 2 0xf0800204 0x50cb0c00 0x0 0 // read from SMC_IND_DATA_0 W 4 580.364682 2 0xf0800200 0xc030006c 0x0 0 // write to SMC_IND_INDEX_0 W 4 580.364683 2 0xf0800204 0x50cb0c00 0x0 0 // read from SMC_IND_DATA_0 I've almost clearly understand the register keys here but I don't understand some values that are written and read in the process.
Oleg, thanks a lot! Alex (or anyone else, particularly if you're from AMD): would it be possibl= e to point Oleg to the relevant documentation if it exists, or at least find out whether it can be published in the near future (if it doesn't exist publicly yet), so that it doesn't have to reverse-engineered from scratch? Many than= ks for any helpful info.
(In reply to comment #20) > Oleg, thanks a lot! > > Alex (or anyone else, particularly if you're from AMD): would it be possible > to point Oleg to the relevant documentation if it exists, or at least find > out whether it can be published in the near future (if it doesn't exist > publicly yet), so that it doesn't have to reverse-engineered from scratch? > Many thanks for any helpful info. Actually I already come to some conclusions. First SMC writes and reads (before SMC_MESSAGE) is just the "ci_check_smc_running" function (seems its analogue presents in proprietary driver as well). 0x5c value should be some sort of command, so it can be defined with already known ones in headers. About other values things are not so clear. I suppose to get real fan speed we need to somehow mask and shift data at smc index 0xc0300064. I'll try to make other traces with different parameters to compare percentages and values to the register reads and writes. P.S. yep, some docs would be helpful, thanks
Among other querstions - is this legal? I mean, taking traces from proprietary driver and trying to reverse-engineer it. I live in Russia if that's important
I have a similar problem with Radeon7870HD https://bugs.freedesktop.org/show_bug.cgi?id=83453 But there are some differences in the windows ... Catalyst says that the cooler is spinning at a rate of 40% - it is quiet, but Linuxs on hearing much more ...
Created attachment 105853 [details] [review] experimental patch for CI (BONAIRE etc.) for enabling fan control So I've come up with patch that enables manual fan override for CI family at least. I've tested it on my BONAIRE card, Radeon R7 260X. INSTALLATION: After compile and reboot there will be new debugfs file, /sys/class/drm/card0/device/power_fan_control READ: cat /sys/class/drm/card0/device/power_fan_control correct values are 0 to 100 on first reads it'll probably show some incorrect percentage value due to manual control not yet enabled WRITE: echo 40 > /sys/class/drm/card0/device/power_fan_control correct values are 0 to 100
(In reply to comment #24) > Created attachment 105853 [details] [review] [review] > experimental patch for CI (BONAIRE etc.) for enabling fan control > > So I've come up with patch that enables manual fan override for CI family at > least. I've tested it on my BONAIRE card, Radeon R7 260X. > > INSTALLATION: > After compile and reboot there will be new debugfs file, > /sys/class/drm/card0/device/power_fan_control Hey, I am the Nouveau developer who added fan management support. I would really advice you follow the hwmon recommendations and name this file pwm1. More information about this: https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface
(In reply to comment #25) > I am the Nouveau developer who added fan management support. I would really > advice you follow the hwmon recommendations and name this file pwm1. Sorry, I'm novice, didn't know about these. Though it's not a hw interface really, the exchange is done through io-mapped SMC registers... Ok, I'll make necessary changes. I assume it will allow lm-sensors to pick it up automatically, is it correct?
(In reply to comment #26) > (In reply to comment #25) > > > I am the Nouveau developer who added fan management support. I would really > > advice you follow the hwmon recommendations and name this file pwm1. > > Sorry, I'm novice, didn't know about these. Don't feel bad, you cannot know possibly know everything ;) > Though it's not a hw interface > really, the exchange is done through io-mapped SMC registers... Not sure how more hw-oriented the interface could get :D That is still irrelevant to the discussion though. HWMON is software interface for the userspace. > > Ok, I'll make necessary changes. I assume it will allow lm-sensors to pick > it up automatically, is it correct? Yes, it will! Just to make sure we understood each others: - pwm1 (RW) exposes the current pwm value (what you called power) - pwm1_min(RW) min exposes the mininimum power that should be used by the fan - pwm1_max(RW) min exposes the maximum power that should be used by the fan - pwm1_enable (RW) exposes the current fan mode. 0 = DISABLED, 1 = MANUAL (the user writes the fan power he/she wants to pwm1), 2 = AUTOMATIC (linear fan management?). Here is Nouveau's documentation on fan management: http://cgit.freedesktop.org/nouveau/linux-2.6/tree/Documentation/thermal/nouveau_thermal I know it is a lot of changes I am asking you to do, but consistency across drivers is great feature!
(In reply to comment #27) I think I got your point. So I'll read through documentation you provided and expose these values as hwmon interface. > I know it is a lot of changes I am asking you to do, but consistency across drivers is great feature! Agreed, and thanks for the hint. P.S. You should remember that my implementation is highly experimental and naive (it's even tested only on my card). I can't expose some particular values or allow to write them. E.g. I don't know how to enable automatic fan management again after I've disabled it for now. What should I return in such case?