[Nouveau] [PATCH v4 00/37] Volting/Clocking improvements for Fermi and newer
Karol Herbst
nouveau at karolherbst.de
Mon Apr 18 19:13:34 UTC 2016
We are slowly getting there!
v4 of the series with some realy good improvements, so I am sure this is like
95% done and only needs some proper polishing and proper Reviews!
I also added the NvVoltOffsetmV module parameter, so that a user is able to
over and !under!-volt the GPU. Overvolting makes sense, when there are still
some reclocking issues left, which might be solved by a higher voltage.
Undervolting makes sense to decrease the used voltage for each Cstate and to
make more C-States available on a handfull cards. This is some sort of really
basic Overclocking support, which comes at the cost of stability, but has
nearly no impact on the power consumption or heat production.
But because this doesn't add new stuff and only directly modifies the voltage
calculation, it is all still according to the vbios and doesn't add new clocks
or something like that.
If anything is unclear how I REed or got the information, please leave a note
so that I can provide additional information in the commits.
This series can be found on my "stable_reclocking_kepler_v4" branch on github
Happy testing and happy reviewing!
v3: adjust to temperature and minor fixes in the commits
v4: add speedo values
add proper coefficients based on speedo
refactor some code in clk to not affect pre-fermi chips
add NvVoltOffsetmV option
Karol Herbst (37):
bios/volt: handle voltage table version 0x50 with 0ed header
volt: properly detect entry based voltage tables
volt: save the voltage range we are able to set
volt: add nvkm_volt_map_min function
clk: don't create cstates whit voltages higher than what the gpu can
do
volt: parse the max voltage map entries
volt: add min_id parameter to nvkm_volt_set_id
clk: export nvkm_volt_map
clk: add index field to nvkm_cstate
add daemon to compare nouveau with blob voltage
volt: add temperature parameter to nvkm_volt_map
clk: fixup cstate selection
clk: respect voltage limits in nvkm_cstate_prog
bios: add parsing of BASE CLOCK table
clk: allow boosting only when NvBoost is set
volt: don't require perfect fit
bios/vmap: unk0 field is the mode
volt: add speedo
volt: add gf100 subdev with speedo
volt: add coefficients
clk: save the max clock we can set
clk: rename nvkm_pstate_calc to nvkm_clk_update
nvif: add boost info and set operations
debugfs: add boost interface to change the boost_mode
clk: remove dstate and tstate
therm: don't cancel the timer
clk: make pstate a pointer to nvkm_pstate
clk: hold information about the current cstate status
clk: we should pass the pstate id around not the index in the list
clk: seperate the locking from the implementation in nvkm_clk_update
clk: split out update code to nv40
clk: only do partial reclocks as required
therm: trigger reclock in temperature daemon
mc: fix NULL pointer access in libnouveau
clk: set clocks to pre suspend state after suspend
WIP volt/gk104: readout speedo
volt: add NvVoltOffsetmV option
bin/nv_cmp_volt.c | 139 +++++++++++
drm/nouveau/include/nvif/if0001.h | 15 ++
drm/nouveau/include/nvkm/subdev/bios/baseclock.h | 24 ++
drm/nouveau/include/nvkm/subdev/bios/vmap.h | 5 +-
drm/nouveau/include/nvkm/subdev/bios/volt.h | 5 +-
drm/nouveau/include/nvkm/subdev/clk.h | 23 +-
drm/nouveau/include/nvkm/subdev/volt.h | 17 +-
drm/nouveau/nouveau_debugfs.c | 82 ++++++-
drm/nouveau/nvkm/engine/device/base.c | 17 +-
drm/nouveau/nvkm/engine/device/ctrl.c | 60 ++++-
drm/nouveau/nvkm/subdev/bios/Kbuild | 1 +
drm/nouveau/nvkm/subdev/bios/baseclock.c | 82 +++++++
drm/nouveau/nvkm/subdev/bios/vmap.c | 12 +-
drm/nouveau/nvkm/subdev/bios/volt.c | 45 ++--
drm/nouveau/nvkm/subdev/clk/base.c | 298 ++++++++++++++++-------
drm/nouveau/nvkm/subdev/clk/g84.c | 1 +
drm/nouveau/nvkm/subdev/clk/gf100.c | 63 ++++-
drm/nouveau/nvkm/subdev/clk/gk104.c | 3 +-
drm/nouveau/nvkm/subdev/clk/gk20a.c | 1 +
drm/nouveau/nvkm/subdev/clk/gm20b.c | 1 +
drm/nouveau/nvkm/subdev/clk/gt215.c | 1 +
drm/nouveau/nvkm/subdev/clk/mcp77.c | 1 +
drm/nouveau/nvkm/subdev/clk/nv40.c | 18 ++
drm/nouveau/nvkm/subdev/clk/nv50.c | 1 +
drm/nouveau/nvkm/subdev/clk/priv.h | 9 +
drm/nouveau/nvkm/subdev/mc/base.c | 7 +-
drm/nouveau/nvkm/subdev/pmu/gk20a.c | 23 +-
drm/nouveau/nvkm/subdev/therm/base.c | 14 +-
drm/nouveau/nvkm/subdev/volt/Kbuild | 1 +
drm/nouveau/nvkm/subdev/volt/base.c | 159 +++++++++++-
drm/nouveau/nvkm/subdev/volt/gf100.c | 59 +++++
drm/nouveau/nvkm/subdev/volt/gk104.c | 19 ++
drm/nouveau/nvkm/subdev/volt/priv.h | 1 +
33 files changed, 1034 insertions(+), 173 deletions(-)
create mode 100644 bin/nv_cmp_volt.c
create mode 100644 drm/nouveau/include/nvkm/subdev/bios/baseclock.h
create mode 100644 drm/nouveau/nvkm/subdev/bios/baseclock.c
create mode 100644 drm/nouveau/nvkm/subdev/volt/gf100.c
--
2.8.1
More information about the Nouveau
mailing list