Displaying 17 results from an estimated 17 matches for "nvbios_baseclock_parse".
2015 Dec 02
2
[RFC PATCH 4/5] subdev/clk: print the base clocks
...lk *clk)
> {
> + struct nvkm_bios *bios;
> int ret, idx, arglen;
> const char *mode;
> + struct nvbios_baseclock_header header;
>
> nvkm_subdev_ctor(&nvkm_clk, device, index, 0, &clk->subdev);
> + bios = device->bios;
> +
> + if (bios && !nvbios_baseclock_parse(bios, &header)) {
> + struct nvbios_baseclock_entry base_entry, boost_entry;
> + if (nvbios_baseclock_get_entry(bios, &header, header.base_entry, &base_entry))
> + nvkm_error(&clk->subdev, "couldn't parse base clock\n");
> + else if (nvbios_basecloc...
2015 Dec 01
7
[RFC PATCH 0/5] stabilize kepler reclocking
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
2016 Mar 17
0
[PATCH 03/19] bios: add parsing of BASE CLOCK table
...4 @@
+#ifndef __NVBIOS_BASECLOCK_H__
+#define __NVBIOS_BASECLOCK_H__
+struct nvbios_baseclk_header {
+ u16 offset;
+
+ u8 version;
+ u8 hlen;
+ u8 ecount;
+ u8 elen;
+ u8 scount;
+ u8 slen;
+
+ u8 base;
+ u8 boost;
+ u8 tdp;
+};
+struct nvbios_baseclk_entry {
+ u8 pstate;
+ u16 clock_mhz;
+};
+int nvbios_baseclock_parse(struct nvkm_bios *, struct nvbios_baseclk_header *);
+int nvbios_baseclock_entry(struct nvkm_bios *, struct nvbios_baseclk_header *,
+ u8 idx, struct nvbios_baseclk_entry *);
+#endif
diff --git a/drm/nouveau/nvkm/subdev/bios/Kbuild b/drm/nouveau/nvkm/subdev/bios/Kbuild
index dbcb0ef..6cb3beb 1...
2015 Dec 02
2
[RFC PATCH 5/5] clk: allow boosting only when NvBoost is set
...n 0;
> +err:
> + kfree(cstate);
> + return -EINVAL;
> }
>
> /******************************************************************************
> @@ -573,13 +582,19 @@ nvkm_clk_ctor(const struct nvkm_clk_func *func, struct nvkm_device *device,
>
> if (bios && !nvbios_baseclock_parse(bios, &header)) {
> struct nvbios_baseclock_entry base_entry, boost_entry;
> + clk->boost_mode = nvkm_longopt(device->cfgopt, "NvBoost", 0);
> if (nvbios_baseclock_get_entry(bios, &header, header.base_entry, &base_entry))
If `boost_mode == -1` is some &q...
2016 Mar 17
22
[PATCH 00/19] Volting/Clocking improvements for Fermi and newer
This series fixes most of the issues regarding volting on GPUs with any form
of GPU Boost inside their vbios, which is mainly Kepler and newer, but we find
some boosting related tables in Fermi vbios' already
In the end reclocking should work on most Kepler cards without any issues
Karol Herbst (19):
bios/volt: handle voltage table version 0x50 with 0ed header
volt: properly detect entry
2015 Dec 02
11
[RFC PATCH v2 0/7] stabilize kepler reclocking
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
2015 Dec 01
0
[RFC PATCH 4/5] subdev/clk: print the base clocks
...int index, bool allow_reclock, struct nvkm_clk *clk)
{
+ struct nvkm_bios *bios;
int ret, idx, arglen;
const char *mode;
+ struct nvbios_baseclock_header header;
nvkm_subdev_ctor(&nvkm_clk, device, index, 0, &clk->subdev);
+ bios = device->bios;
+
+ if (bios && !nvbios_baseclock_parse(bios, &header)) {
+ struct nvbios_baseclock_entry base_entry, boost_entry;
+ if (nvbios_baseclock_get_entry(bios, &header, header.base_entry, &base_entry))
+ nvkm_error(&clk->subdev, "couldn't parse base clock\n");
+ else if (nvbios_baseclock_get_entry(bios, &a...
2015 Dec 02
0
[RFC PATCH 4/5] subdev/clk: print the base clocks
...gt; > int ret, idx, arglen;
> > const char *mode;
> > + struct nvbios_baseclock_header header;
> >
> > nvkm_subdev_ctor(&nvkm_clk, device, index, 0, &clk->subdev);
> > + bios = device->bios;
> > +
> > + if (bios && !nvbios_baseclock_parse(bios, &header)) {
> > + struct nvbios_baseclock_entry base_entry, boost_entry;
> > + if (nvbios_baseclock_get_entry(bios, &header, header.base_entry,
> > &base_entry))
> > + nvkm_error(&clk->subdev, "couldn't parse base clock\n&quo...
2016 Mar 17
0
[PATCH 04/19] clk: print the base clocks
...low_reclock, struct nvkm_clk *clk)
{
+ struct nvkm_subdev *subdev = &clk->subdev;
+ struct nvkm_bios *bios = device->bios;
int ret, idx, arglen;
const char *mode;
+ struct nvbios_baseclk_header h;
+
+ nvkm_subdev_ctor(&nvkm_clk, device, index, 0, subdev);
+
+ if (bios && !nvbios_baseclock_parse(bios, &h)) {
+ struct nvbios_baseclk_entry base, boost;
+ if (!nvbios_baseclock_entry(bios, &h, h.boost, &boost))
+ nvkm_info(subdev, "boost: %i MHz\n",
+ boost.clock_mhz / 2);
+ if (!nvbios_baseclock_entry(bios, &h, h.base, &base))
+ nvkm_info(subdev, &quo...
2016 Feb 29
9
[PATCH 0/9] Groundwork for clocking fixes
This series contains a lot of groundwork to finally fix reclocking issues on
Kepler+ gpus.
There shouldn't be any functional changes with the first patch being the only
exception (fixes some voltage table parsing issues with of few kepler gpus)
The most interessting thing is the tool in the last patch, which can be ran
alongside the nvidia driver to test nouveaus volting code and print the
2015 Dec 01
0
[RFC PATCH 5/5] clk: allow boosting only when NvBoost is set
...tate->head, &pstate->list);
return 0;
+err:
+ kfree(cstate);
+ return -EINVAL;
}
/******************************************************************************
@@ -573,13 +582,19 @@ nvkm_clk_ctor(const struct nvkm_clk_func *func, struct nvkm_device *device,
if (bios && !nvbios_baseclock_parse(bios, &header)) {
struct nvbios_baseclock_entry base_entry, boost_entry;
+ clk->boost_mode = nvkm_longopt(device->cfgopt, "NvBoost", 0);
if (nvbios_baseclock_get_entry(bios, &header, header.base_entry, &base_entry))
nvkm_error(&clk->subdev, "couldn...
2016 Mar 17
0
[PATCH 05/19] clk: allow boosting only when NvBoost is set
...****
@@ -570,14 +585,21 @@ nvkm_clk_ctor(const struct nvkm_clk_func *func, struct nvkm_device *device,
nvkm_subdev_ctor(&nvkm_clk, device, index, 0, subdev);
+ clk->boost_mode = nvkm_longopt(device->cfgopt, "NvBoost",
+ NVKM_CLK_BOOST_AVG);
if (bios && !nvbios_baseclock_parse(bios, &h)) {
struct nvbios_baseclk_entry base, boost;
- if (!nvbios_baseclock_entry(bios, &h, h.boost, &boost))
+ if (!nvbios_baseclock_entry(bios, &h, h.boost, &boost)) {
+ clk->boost_khz = boost.clock_mhz * 1000;
nvkm_info(subdev, "boost: %i MHz\n",...
2016 Apr 18
0
[PATCH v4 15/37] clk: allow boosting only when NvBoost is set
...os *bios = device->bios;
int ret, idx, arglen;
const char *mode;
+ struct nvbios_baseclk_header h;
+
+ nvkm_subdev_ctor(&nvkm_clk, device, index, subdev);
+
+ clk->boost_mode = nvkm_longopt(device->cfgopt, "NvBoost",
+ NVKM_CLK_BOOST_AVG);
+ if (bios && !nvbios_baseclock_parse(bios, &h)) {
+ struct nvbios_baseclk_entry base, boost;
+ if (!nvbios_baseclock_entry(bios, &h, h.boost_id, &boost))
+ clk->boost_khz = boost.clock_mhz * 1000;
+ if (!nvbios_baseclock_entry(bios, &h, h.base_id, &base))
+ clk->base_khz = base.clock_mhz * 1000;
+ }...
2015 Dec 02
0
[RFC PATCH 5/5] clk: allow boosting only when NvBoost is set
...+ return -EINVAL;
> > }
> >
> > /******************************************************************************
> > @@ -573,13 +582,19 @@ nvkm_clk_ctor(const struct nvkm_clk_func *func, struct
> > nvkm_device *device,
> >
> > if (bios && !nvbios_baseclock_parse(bios, &header)) {
> > struct nvbios_baseclock_entry base_entry, boost_entry;
> > + clk->boost_mode = nvkm_longopt(device->cfgopt, "NvBoost", 0);
> > if (nvbios_baseclock_get_entry(bios, &header, header.base_entry,
> > &base_entry))
>...
2016 Mar 21
28
[PATCH v2 00/22] Volting/Clocking improvements for Fermi and newer
This series fixes most of the issues regarding volting on GPUs with any form
of GPU Boost inside their vbios, which is mainly Kepler and newer, but we find
some boosting related tables in Fermi vbios' already
In the end reclocking should work on most Kepler cards without any issues
v2: boost_mode can now be changed at runtime
minor fixups
Karol Herbst (22):
bios/volt: handle voltage
2016 Apr 07
29
[PATCH v3 00/29] Volting/Clocking improvements for Fermi and newer
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
2016 Apr 18
63
[PATCH v4 00/37] Volting/Clocking improvements for Fermi and newer
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.