[Nouveau] [PATCH v3 00/29] Volting/Clocking improvements for Fermi and newer
Karol Herbst
nouveau at karolherbst.de
Thu Apr 7 21:23:50 UTC 2016
This is an updated series for the old clocking improvement one.
I think I got everything needed in place and also a simple update mechanism for
updating the cstates/voltage on temperature changes.
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.
Besides that I think we are pretty close now and only some minor improvements
are needed:
* see if the factors differe on different GPUs (I only saw minor differences,
which can be due to an inaccuracy retrieving the factors)
* RE the factors on Voltage Map Tables with the Version 0x10 (usually Fermi)
* add support for power budgets and watch over the power consumption, but for
this we have to find out how to parse the budgets and map them to the rails
or total power consumption.
I don't think those issues are critical, because by default this series doesn't
enable full boosting and we could also land the changes with capping the clocks
to the base clock to make sure we don't exceed any power budgets.
v3: adjust to temperature and minor fixes in the commits
Karol Herbst (29):
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 coefficients I found on my gpu
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: only do partial reclocks as required
therm: trigger reclock in temperature daemon
bin/nv_cmp_volt.c | 130 +++++++++
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 | 12 +-
drm/nouveau/nouveau_debugfs.c | 76 ++++++
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 | 321 +++++++++++++++++------
drm/nouveau/nvkm/subdev/clk/gf100.c | 2 +-
drm/nouveau/nvkm/subdev/clk/gk104.c | 2 +-
drm/nouveau/nvkm/subdev/pmu/gk20a.c | 23 +-
drm/nouveau/nvkm/subdev/therm/base.c | 14 +-
drm/nouveau/nvkm/subdev/volt/base.c | 139 +++++++++-
19 files changed, 838 insertions(+), 153 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
--
2.8.1
More information about the Nouveau
mailing list