[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