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

_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to