https://bugs.freedesktop.org/show_bug.cgi?id=91523
--- Comment #4 from Ilia Bozhinov ---
I tested a kernel build with the relevant code commented(right after the
comment I posted) and indeed the kernel module works! (it loads and DRI_PRIME=1
allows me to run
https://bugs.freedesktop.org/show_bug.cgi?id=94990
Bug ID: 94990
Summary: Latest 4.6rc4 kernel, no booting on gtx970
Product: xorg
Version: git
Hardware: Other
OS: All
Status: NEW
Severity: normal
https://bugs.freedesktop.org/show_bug.cgi?id=94990
--- Comment #1 from Ilia Mirkin ---
Does it work fine on a cold boot, but only fails on a warm boot? (Is that what
you mean by "after rebooting"?)
--
You are receiving this mail because:
You are the assignee for the
We shouldn't set voltages below the min or above the max voltage the gpu is
able to set, so save the range.
Signed-off-by: Karol Herbst
Reviewed-by: Martin Peres
Tested-by: Pierre Moreau
---
this is a copy of nvkm_volt_map, which always returns the lowest possible
voltage for a cstate.
nvkm_volt_map will get a temperature parameter there later and also fix the
voltage calculation, so that this functions will be completly different later.
Signed-off-by: Karol Herbst
now the cstatei parameter can be used of the nvkm_cstate_prog function to
select a specific cstate.
-1 is a magic value, which will always select the highest currently possible
cstate
Signed-off-by: Karol Herbst
---
drm/nouveau/nvkm/subdev/clk/base.c | 12 ++--
Signed-off-by: Karol Herbst
---
drm/nouveau/nvkm/subdev/mc/base.c | 7 ++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drm/nouveau/nvkm/subdev/mc/base.c
b/drm/nouveau/nvkm/subdev/mc/base.c
index aa394af..88bc1cc 100644
---
this table contains three important clocks:
base clock: this is the non boosted max clock
tdp clock: the clock at wich the vbios guarentees the TDP won't ever be
exceeded at max load (seems to be always the same as the base
clock, but behaves differently).
boost
this gk104 volt implementation has to be reworked a little, because the speedo
readout in maxwell doesn't need those strange 0 and 41 writes into 0x122634,
but it needs this PWM thing.
Maybe Maxwell is PWM only and we could just simplify it there, but without
proper knowledge there has some
Signed-off-by: Karol Herbst
---
drm/nouveau/include/nvkm/subdev/volt.h | 1 +
drm/nouveau/nvkm/engine/device/base.c | 17 +-
drm/nouveau/nvkm/subdev/volt/Kbuild| 1 +
drm/nouveau/nvkm/subdev/volt/gf100.c | 59 ++
4 files
This option can be used to adjust the calculated voltage or the cstate voltage
calculation
Signed-off-by: Karol Herbst
---
bin/nv_cmp_volt.c | 2 +-
drm/nouveau/include/nvkm/subdev/volt.h | 4 +++-
drm/nouveau/nvkm/subdev/clk/base.c | 8
we will access the current set cstate at least every second and this safes us
some CPU cycles looking them up every second.
Signed-off-by: Karol Herbst
---
drm/nouveau/include/nvkm/subdev/clk.h | 2 +-
drm/nouveau/nvkm/engine/device/ctrl.c | 5 -
this selects which formula is used to calculate the voltage.
depending on the value, the entry maps to a different voltage and even enables
if the temperature has any effect or not. This is easy to observe with the
binary driver.
Signed-off-by: Karol Herbst
---
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
Signed-off-by: Karol Herbst
---
bin/nv_cmp_volt.c | 2 +-
drm/nouveau/include/nvkm/subdev/volt.h | 2 ++
drm/nouveau/nvkm/subdev/volt/base.c| 12
drm/nouveau/nvkm/subdev/volt/priv.h| 1 +
4 files changed, 16 insertions(+), 1
Each pstate has its own voltage map entry like each cstate has.
The voltages of those entries act as a floor value for the currently selected
pstate and nvidia never sets a voltage below them.
Signed-off-by: Karol Herbst
Reviewed-by: Martin Peres
we don't want to reclock to the same pstate or cstate over and over again, so
only do things we actually have to do.
v4: move into gf100
Signed-off-by: Karol Herbst
---
drm/nouveau/nvkm/subdev/clk/base.c | 11 +--
drm/nouveau/nvkm/subdev/clk/gf100.c | 62
this tool can be run alongside the nvidia driver to print information about
the current p/cstate, which voltage was set by nvidia and what nouveau would
set in the same situation.
v4: parse default options
Signed-off-by: Karol Herbst
---
bin/nv_cmp_volt.c | 139
this code will change for gf100 and newer
Signed-off-by: Karol Herbst
---
drm/nouveau/nvkm/subdev/clk/base.c | 14 ++
drm/nouveau/nvkm/subdev/clk/g84.c | 1 +
drm/nouveau/nvkm/subdev/clk/gf100.c | 1 +
drm/nouveau/nvkm/subdev/clk/gk104.c | 1 +
0: base clock from the vbios is max clock
1: boost only to boost clock from the vbios (default)
2: boost to max clock available
v2: moved into nvkm_cstate_valid
v4: check the existence of the clocks before limiting
Signed-off-by: Karol Herbst
Reviewed-by: Martin Peres
Signed-off-by: Karol Herbst
---
drm/nouveau/include/nvkm/subdev/clk.h | 5 +
drm/nouveau/nvkm/subdev/clk/base.c| 32 +---
2 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/drm/nouveau/include/nvkm/subdev/clk.h
before clocking to a cstate, we have to check if the voltage is within the
allowed range.
Signed-off-by: Karol Herbst
---
drm/nouveau/include/nvkm/subdev/volt.h | 1 +
drm/nouveau/nvkm/subdev/volt/base.c| 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff
I am sure that those are a bit different, but while testing the biggest error
compared to nvidia was -1.5%.
Without this change we are most of the time around 10% below nvidias voltage,
so this change causes no harm and improves the situation a lot already.
These coefficients were REed by
we won't need them, because we will adjust the clocks depending on engine loads
later on anyway. It also simplifies the clocking logic.
Signed-off-by: Karol Herbst
---
drm/nouveau/include/nvkm/subdev/clk.h | 4
drm/nouveau/nvkm/subdev/clk/base.c| 28
we should never allow to select a cstate which current voltage (depending on
the temperature) is higher than
1. the max volt entries in the voltage map table
2. what tha gpu actually can volt to.
this resolves all remaining volting errors on fermi and newer.
v3: use find_best for all cstates
we will need a always running therm daemon to adjust the voltage/clocks on the
fly.
Signed-off-by: Karol Herbst
---
drm/nouveau/nvkm/subdev/therm/base.c | 9 ++---
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drm/nouveau/nvkm/subdev/therm/base.c
Signed-off-by: Karol Herbst
---
drm/nouveau/include/nvkm/subdev/clk.h | 1 +
drm/nouveau/nvkm/subdev/clk/base.c| 1 +
2 files changed, 2 insertions(+)
diff --git a/drm/nouveau/include/nvkm/subdev/clk.h
b/drm/nouveau/include/nvkm/subdev/clk.h
index fb54417..6226f0d
this function will be used to update the current clock state.
This will happen for various reasons:
* temperature changes (may change cstate and/or voltage)
* user changes boost mode
* load changes
v2: add wait parameter
Signed-off-by: Karol Herbst
---
There are at least three "max" entries, which specify the max voltage. Because
they are actually normal voltage map entries, they can also be affected by the
temperature.
Nvidia respects those entries and if they get changed, nvidia uses the lower
voltage from both.
We shouldn't exceed those
there is a field in the voltage table which tells us if the VIDs are taken from
the entries or calculated through the header.
v2: don't break older versions
Signed-off-by: Karol Herbst
Reviewed-by: Martin Peres
Tested-by: Pierre Moreau
Signed-off-by: Karol Herbst
Reviewed-by: Martin Peres
Tested-by: Pierre Moreau
---
drm/nouveau/nvkm/subdev/clk/base.c | 4
1 file changed, 4 insertions(+)
diff --git a/drm/nouveau/nvkm/subdev/clk/base.c
the voltage entries actually may map to a different voltage depending on the
current temperature.
v2: only read the temperatue when actually needed
Signed-off-by: Karol Herbst
---
bin/nv_cmp_volt.c | 2 +-
drm/nouveau/include/nvkm/subdev/volt.h |
Signed-off-by: Karol Herbst
Reviewed-by: Martin Peres
---
drm/nouveau/include/nvif/if0001.h | 15 ++
drm/nouveau/nvkm/engine/device/ctrl.c | 55 +++
2 files changed, 70 insertions(+)
diff --git
Signed-off-by: Karol Herbst
---
drm/nouveau/include/nvkm/subdev/clk.h | 1 +
drm/nouveau/nvkm/subdev/clk/base.c| 2 ++
2 files changed, 3 insertions(+)
diff --git a/drm/nouveau/include/nvkm/subdev/clk.h
b/drm/nouveau/include/nvkm/subdev/clk.h
index 99ee05c..61d99fd
Signed-off-by: Karol Herbst
Reviewed-by: Martin Peres
---
drm/nouveau/nouveau_debugfs.c | 76 +++
1 file changed, 76 insertions(+)
diff --git a/drm/nouveau/nouveau_debugfs.c b/drm/nouveau/nouveau_debugfs.c
depending on the temperature, cstates might become unreachable or the maped
voltage of a cstate changes. We want to adjust to that.
Signed-off-by: Karol Herbst
---
drm/nouveau/nvkm/subdev/therm/base.c | 5 +
1 file changed, 5 insertions(+)
diff --git
this makes the code easier, because we can compare the id with pstate->pstate
and safe us the trouble iterating over the entire pstate list
Signed-off-by: Karol Herbst
---
drm/nouveau/nouveau_debugfs.c | 6 ++---
drm/nouveau/nvkm/subdev/clk/base.c | 49
https://bugs.freedesktop.org/show_bug.cgi?id=92126
--- Comment #6 from daemon32 ---
(In reply to Karol Herbst from comment #5)
> Is this bug fixed in recent kernels? (4.5 I think?)
Well, sort of, the fan spins up, but it takes off like a jet engine at a mere
50° C. (I'm
Is there anything I can do in this regard?
/smo
On 2016-03-31 23:12, Pierre Moreau wrote:
> Oh, hum, GM108 is NV118 and not NV108 which is Gk208… My bad!
>
> SMF from the bug report seemed to have some working setup, and since he didn't
> pinged back, I guess it's working nicely. But some more
39 matches
Mail list logo