[Nouveau] [RFC PATCH 0/5] stabilize kepler reclocking

Karol Herbst nouveau at karolherbst.de
Tue Dec 1 08:42:15 PST 2015


this series solves different issues we encounter on kepler cards while reclocking:

1. core clock doesn't change at all and produces a volting error (patch 1)
	this can happen when the voltage table has only 0ed values in the header
	so we have to parse the entries itself, which contain the right voltages
2. kepler won't clock to highest cstates (patch 2)
	this happens, because there are entries in the cstep table with too high voltages attached
	in this case we should simply drop those cstates, because they can't even be used by the gpu
	the voltage limit is found in the voltage map table
3. heat issues after clocking to highest pstate (patch 3-5)
	sometimes the gpu is able to handle the highest cstate, but the gpu isn't build for that high voltages
	in that case we should just parse the baseclock table, which tells us the clocks the gpu is intented to run with

the last patches also introduce a new config option: NvBoost

0: highest clock available is the base clock (default)
1: highest clock available is the boost clock
else: all cstates are available

because this will regress performance on some cards, the new option should be advertised later on, but I think
it is a better idea to be safe here, because otherwise nouveau can easily go above the TDP of the gpu and this
leads to complete different issues.

After this, we can then try to understand which factors are important for boosting and implement it in a better way, but for this we need:
1. support for power consumption sensors
2. better understanding on which power budget is the right one
3. in which situation we can boost how far

Because this series can mess up reclocking for a wide range of cards, I really want to have it tested on several systems, thanks

Karol Herbst (5):
  bios/volt: handle voltage table version 0x50 with 0ed header
  clk: drop cstates with too high voltage
  nvbios: add parsing of BASE CLOCK table
  subdev/clk: print the base clocks
  clk: allow boosting only when NvBoost is set

 drm/nouveau/include/nvkm/subdev/bios/baseclock.h | 23 +++++++
 drm/nouveau/include/nvkm/subdev/clk.h            | 10 ++-
 drm/nouveau/include/nvkm/subdev/volt.h           |  4 ++
 drm/nouveau/nvkm/subdev/bios/Kbuild              |  1 +
 drm/nouveau/nvkm/subdev/bios/baseclock.c         | 79 ++++++++++++++++++++++++
 drm/nouveau/nvkm/subdev/bios/volt.c              |  3 +
 drm/nouveau/nvkm/subdev/clk/base.c               | 37 +++++++++++
 drm/nouveau/nvkm/subdev/clk/gf100.c              |  2 +-
 drm/nouveau/nvkm/subdev/clk/gk104.c              |  2 +-
 drm/nouveau/nvkm/subdev/volt/base.c              | 18 +++++-
 10 files changed, 174 insertions(+), 5 deletions(-)
 create mode 100644 drm/nouveau/include/nvkm/subdev/bios/baseclock.h
 create mode 100644 drm/nouveau/nvkm/subdev/bios/baseclock.c

-- 
2.6.3



More information about the Nouveau mailing list