All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Peres <martin.peres-GANU6spQydw@public.gmane.org>
To: nouveau <Nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>
Subject: [TESTING CALL] Fan management
Date: Mon, 29 Aug 2011 16:07:15 +0200	[thread overview]
Message-ID: <4E5B9D13.90605@free.fr> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 3999 bytes --]

Hi Nouveau users,

Just saw the bitching on Phoronix about lack of fan management in 
nouveau (no offence Michael, it was justified ;) ).
Since it has been working flawlessly for more than a week on my desktop, 
I decided to let you guys know about it and ask for testing.

Here is the code: 
http://gitorious.org/linux-nouveau-pm/linux-nouveau-pm/commits/thermal
Please read the following paragraphs before pulling this branch and fry 
your GPU.

The hardware and current limitations
---------------------------------------------------

This branch introduces code to drive the most common fan type (and the 
most problematic one, I guess/hope). We call them PWM fan.
The other types are TOGGLE (can only be ON or OFF) and I2C (driven using 
an I2C chip).

The TOGGLE fans aren't supported because I think I lack the hw (to be 
confirmed).

The PWM fans are the most common ones. It supports a full range of speed 
(from 0% to 100%).

The I2C-accessible fans are usually limited to high-end cards. At the 
moment, the only thing we can do for them is to launch their hwmon driver.
This is due to a limitation in hwmon that doesn't let kernel drivers 
accessing the i2c chips' methods. We are working with the hwmon team and 
provided
a patch to support that: 
http://www.spinics.net/lists/lm-sensors/msg32906.html
If you have such a fan, you can manage it from the userspace.

The implemented fan management support
-----------------------------------------------------------

Current fan management should only work on what we call PWM fans.

This work should be usable up to (not including) nva3 chipset generation.
This is because nva3+ cards all have hw to drive the speed of the fan 
(pwm or i2c).

Reading the fan speed (power): cat /sys/class/drm/cardX/device/pwm0

Reading the fan speed (RPM): cat /sys/class/drm/cardX/device/fan0_input

Setting the fan management method: echo X > 
/sys/class/drm/cardX/device/pwm0_enable
- X = 0: Fan management disabled, fan power set to 100%
- X = 1: Manual fan management (you can set the speed by writing 
[0->100] to /sys/class/drm/cardX/device/pwm0)
- X = 2: The default automatic fan management (equivalent to X = 3 for 
the moment)
- X = 3: Linear fan management. The fan speed is linearly correlated to 
the temperature.
- X = 4: Target temperature management. The fan is driven to keep the 
GPU to a certain temperature

The thermal zone implementation
------------------------------------------------

Since I believe thermal zones are great but massively under-used. I used 
thermal zones to define some trip points.

Here are some noteworthy trip points:
- Default mode: Listen to the user commands
- Fan boost: Whenever the GPU reaches this temperature, the fan will 
blow at 100%
- Downclocking: Whenever the GPU reaches this temperature, your GPU will 
be downclocked to the lowest perflvl
- Critical: Whenever the GPU reaches this temperature, your computer 
will shut down to prevent damages.

BIG FAT WARNING
-----------------------------

For those willing to try this, please watch your GPU temperature closely 
at any time using "$ sensors" and your fingers.
If you think sensors doesn't report the right temperature, please send 
us a mail with your vbios and show up on IRC (ask mupuf).

Check this before having fun with fan management, it is very important!

Installation
------------------

cd my_package_directory
git clone git://gitorious.org/linux-nouveau-pm/linux-nouveau-pm.git
git branch --track thermal origin/thermal

Then it is just a matter of compiling and testing your kernel. Please 
follow your distribution's guide.

Report
------------

Please report your story on our IRC channel. Please also send your 
kernel logs along with your vbios to martin.peres <at> free(dot)fr.

Conclusion
------------

Hope you like it. Keep us informed of how well it works ;)

Martin (AKA mupuf)

PS: Another testing call about power management should also follow but 
there is something I want to implement before people try it.

[-- Attachment #1.2: Type: text/html, Size: 5264 bytes --]

[-- Attachment #2: Type: text/plain, Size: 181 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

             reply	other threads:[~2011-08-29 14:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-29 14:07 Martin Peres [this message]
     [not found] ` <4E5B9D13.90605-GANU6spQydw@public.gmane.org>
2011-08-31 11:48   ` [TESTING CALL] Fan management Mr Dash Four
     [not found]     ` <4E5E1FA7.2010705-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
2011-08-31 11:52       ` Martin Peres

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E5B9D13.90605@free.fr \
    --to=martin.peres-ganu6spqydw@public.gmane.org \
    --cc=Nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.