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