[FrontPage] [TitleIndex] [WordIndex

The following page contains information about the current state of PM, examples of how to use it and possible ways to determine if it may be used on your system.

It is currently only possible to read temperature and performance levels on several cards, as long as you have a recent enough kernel (nouveau git from October 2010 or 2.6.37), and a supported card.

Please note that this page is only a rough approximation of the current state of PM.

Key

Status Matrix

Chipset

NV04/05

NV10

NV20

NV30

NV40

NV50

NVC0

NVE0

VBIOS tables parsing

Performance levels

N/A

MOSTLY

MOSTLY

MOSTLY

MOSTLY

MOSTLY

MOSTLY

TODO

Voltage

N/A

N/A

N/A

MOSTLY

MOSTLY

MOSTLY

MOSTLY

TODO

Thermal settings

N/A

N/A

N/A

MOSTLY

MOSTLY

MOSTLY

MOSTLY

TODO

Memory timings

N/A

?

?

STALLED

STALLED

MOSTLY

MOSTLY

TODO

Mem clock/timing mapping

N/A

N/A

N/A

N/A

Done

MOSTLY

MOSTLY

TODO

Power Management

Engine reclocking

N/A

N/A

N/A

MOSTLY

MOSTLY

MOSTLY

MOSTLY

?

Memory reclocking

N/A

MOSTLY

MOSTLY

MOSTLY

MOSTLY

MOSTLY

WIP

?

Voltage adjusting

N/A

N/A

N/A

internal only

internal only

internal only

internal only

?

Thermal sensors

N/A

N/A

MOSTLY

MOSTLY

internal & i2c

internal & i2c

internal only & i2c

?

Fanspeed control

N/A

N/A

N/A

MOSTLY

MOSTLY

MOSTLY

MOSTLY

?

Notes on VBIOS tables

Performance levels tables

They should contain the clocks (frequencies) the card should be set at, the specific voltage, and the fan speed. On more recent cards they also contain the index of the memory timings entry that should be used.

They vary between card generations, and sometimes within a specific generation as well. The latest version 4.0 found on nvAx and nvCx cards has widely changed, thus many of the information is unknown.

Voltage tables

They contain a voltage label and the GPIO that should be set in order to achieve that voltage.

They do not differ so greatly, except the latest version v4.0 which has been totally reorganized and restructured.

Thermal tables

A simple entry/data kind of table, storing various thermal settings, such as offset constant, slope divisor and others, helping with setting up the sensor or determining the appropriate critical temperatures for the card

The purpose of many entries in the Thermal table is still unknown (although the most important ones have been covered). If you have some skills and would like to do some hacking, please contact us.

Memory timings table

When the card has multiple performance levels, it is sometimes necessary to change the memory timings so that the memory can operate efficiently and correctly. On many cards (mainly desktop) the table can be empty although the early signs of such a table have been found in a nv30 vbios (mobile). On Geforce FX cards (and possibly earlier) this timing info is not in a separate table, but rather available in the Performance level table.

There is quite a bit of magic involved so if you want to help, please join us.

Notes on Power Management

Currently only static clock setting is being tested by developers. The goal in the future will be to dynamically change the clocks when more/less resources of the card are being used.

Engine reclocking

There are quite a few PLLs that should be changed and considered, although the exact purpose of some is still unknown.

Memory reclocking

This is usually the biggest source of graphical corruption and/or card lockups. It's mainly related to the lack of proper mem timings support.

Voltage adjusting

The voltage can be read/written using the GPIO "engine", although a control via onboard i2c chip should be implemented.

Thermal Sensors

Currently the internal and i2c sensors should be working properly. Some older cards lack a temperature sensor.

Fanspeed Control

If Nouveau detects an i2c chip controlling the fan, you can control the fan from user space, but Nouveau itself cannot control it automatically yet. It is also possible to have an i2c chip that is not detected, hence no fan control by software. In the third case, fans are controlled via PWM registers. The PWM registers are being reverse-engineered.

In many cases, at least with i2c chips, the fan speed is temperature controlled by hardware, that is, it is in "auto" mode. In some cases, the fan is at full speed by default, being very loud.

There is some developer documentation (at the end), although adding proper fanspeed control in nouveau-pm would be great.

How to see if PM may work on my system

Temperature

Please test following these instructions.

You can also just try to run the sensors tool. Example output on nv84 :

nouveau-pci-0100
Adapter: PCI adapter
temp1:       +67.0°C  (high = +100.0°C, crit = +110.0°C)

Available Performance Levels

Nouveau prints them in the kernel log during loading.

dmesg | grep -A4 "available performance level"

Example output on nv84 :

[    4.586621] [drm] nouveau 0000:01:00.0: 3 available performance level(s)
[    4.586627] [drm] nouveau 0000:01:00.0: 0: memory 100MHz core 169MHz shader 338MHz voltage 1150mV fanspeed 100%
[    4.586631] [drm] nouveau 0000:01:00.0: 1: memory 301MHz core 275MHz shader 550MHz voltage 1150mV fanspeed 100%
[    4.586635] [drm] nouveau 0000:01:00.0: 2: memory 702MHz core 475MHz shader 950MHz voltage 1200mV fanspeed 100%
[    4.586659] [drm] nouveau 0000:01:00.0: c: memory 302MHz core 275MHz shader 550MHz voltage 1150mV

They are also available in /sys/class/drm/card0/device/performance_level* files

Some cards do not have shader clock, voltage, or fanspeed settings in their performance levels.

Docs

http://github.com/pathscale/pscnv/wiki/Power-Management


2013-03-24 13:16