search for: nvkm_pmu_send

Displaying 20 results from an estimated 24 matches for "nvkm_pmu_send".

2016 Mar 01
2
[PATCH 0/2] PMU communications improvements
Both patches should make the communicating with the PMU more stable. Karol Herbst (2): pmu: fix queued messages while getting no IRQ pmu: be more strict about locking drm/nouveau/nvkm/subdev/pmu/base.c | 49 ++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 7 deletions(-) -- 2.7.2
2015 Nov 14
0
[PATCH v3] pmu: fix queued messages while getting no IRQ
I encountered while stresstesting the reclocking code, that rarely (1 out of 20.000+ requests) we don't get any IRQ in nvkm_pmu_intr. This means we have a queued message on the pmu, but nouveau doesn't read it and waits infinitely in nvkm_pmu_send: if (reply) { wait_event(pmu->recv.wait, (pmu->recv.process == 0)); therefore let us use wait_event_timeout with a 1s timeout frame and just check whether there is a message queued and handle it if there is one. Return -ETIMEDOUT whenever we timed out and there is no message queued or wh...
2015 Nov 14
1
[PATCH v2] pmu: fix queued messages while getting no IRQ
I encountered while stresstesting the reclocking code, that rarely (1 out of 20.000+ requests) we don't get any IRQ in nvkm_pmu_intr. This means we have a queued message on the pmu, but nouveau doesn't read it and waits infinitely in nvkm_pmu_send: if (reply) { wait_event(pmu->recv.wait, (pmu->recv.process == 0)); therefore let us use wait_event_timeout with a 1s timeout frame and just check whether there is a message queued and handle it if there is one. Return -ETIMEDOUT whenever we timed out and there is no message queued or wh...
2018 Dec 19
1
[PATCH] drm/nouveau/pmu: don't print reply values if exec is false
From: Colin Ian King <colin.king at canonical.com> Currently the uninitialized values in the array reply are printed out when exec is false and nvkm_pmu_send has not updated the array. Avoid confusion by only dumping out these values if they have been actually updated. Detected by CoverityScan, CID#1271291 ("Uninitialized scaler variable") Fixes: ebb58dc2ef8c ("drm/nouveau/pmu: rename from pwr (no binary change)") Signed-off-by: Co...
2015 Nov 14
2
[PATCH v2] pmu: use nvkm_msec instead of do while
...dev/pmu/base.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drm/nouveau/nvkm/subdev/pmu/base.c b/drm/nouveau/nvkm/subdev/pmu/base.c index 81a5583..eb248fd 100644 --- a/drm/nouveau/nvkm/subdev/pmu/base.c +++ b/drm/nouveau/nvkm/subdev/pmu/base.c @@ -100,9 +100,16 @@ nvkm_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], } /* acquire data segment access */ - do { + nvkm_wr32(device, 0x10a580, 0x00000001); + if (nvkm_msec(device, 2000, + if (nvkm_rd32(device, 0x10a580) == 0x00000001) + break; nvkm_wr32(device, 0x10a580, 0x00000001); - } while (nvkm_rd32(device, 0x10a58...
2015 Oct 26
1
[PATCH 4/4] nouveau/debugfs: add interface for current load
...include/nvkm/subdev/pmu.h > +++ b/drm/nouveau/include/nvkm/subdev/pmu.h > @@ -23,6 +23,13 @@ struct nvkm_pmu { > } recv; > }; > > +struct nvkm_pmu_load_data { > + u8 core; > + u8 mem; > + u8 video; > + u8 pcie; > +}; > + > int nvkm_pmu_send(struct nvkm_pmu *, u32 reply[2], u32 process, > u32 message, u32 data0, u32 data1); > void nvkm_pmu_pgob(struct nvkm_pmu *, bool enable); > @@ -48,4 +55,7 @@ void nvkm_memx_train(struct nvkm_memx *); > int nvkm_memx_train_result(struct nvkm_pmu *, u32 *, int); >...
2020 Jan 16
0
[PATCH AUTOSEL 4.19 203/671] drm/nouveau/pmu: don't print reply values if exec is false
From: Colin Ian King <colin.king at canonical.com> [ Upstream commit b1d03fc36ec9834465a08c275c8d563e07f6f6bf ] Currently the uninitialized values in the array reply are printed out when exec is false and nvkm_pmu_send has not updated the array. Avoid confusion by only dumping out these values if they have been actually updated. Detected by CoverityScan, CID#1271291 ("Uninitialized scaler variable") Fixes: ebb58dc2ef8c ("drm/nouveau/pmu: rename from pwr (no binary change)") Signed-off-by: Co...
2020 Jan 16
0
[PATCH AUTOSEL 4.14 112/371] drm/nouveau/pmu: don't print reply values if exec is false
From: Colin Ian King <colin.king at canonical.com> [ Upstream commit b1d03fc36ec9834465a08c275c8d563e07f6f6bf ] Currently the uninitialized values in the array reply are printed out when exec is false and nvkm_pmu_send has not updated the array. Avoid confusion by only dumping out these values if they have been actually updated. Detected by CoverityScan, CID#1271291 ("Uninitialized scaler variable") Fixes: ebb58dc2ef8c ("drm/nouveau/pmu: rename from pwr (no binary change)") Signed-off-by: Co...
2020 Jan 16
0
[PATCH AUTOSEL 4.9 081/251] drm/nouveau/pmu: don't print reply values if exec is false
From: Colin Ian King <colin.king at canonical.com> [ Upstream commit b1d03fc36ec9834465a08c275c8d563e07f6f6bf ] Currently the uninitialized values in the array reply are printed out when exec is false and nvkm_pmu_send has not updated the array. Avoid confusion by only dumping out these values if they have been actually updated. Detected by CoverityScan, CID#1271291 ("Uninitialized scaler variable") Fixes: ebb58dc2ef8c ("drm/nouveau/pmu: rename from pwr (no binary change)") Signed-off-by: Co...
2020 Jan 16
0
[PATCH AUTOSEL 4.4 049/174] drm/nouveau/pmu: don't print reply values if exec is false
From: Colin Ian King <colin.king at canonical.com> [ Upstream commit b1d03fc36ec9834465a08c275c8d563e07f6f6bf ] Currently the uninitialized values in the array reply are printed out when exec is false and nvkm_pmu_send has not updated the array. Avoid confusion by only dumping out these values if they have been actually updated. Detected by CoverityScan, CID#1271291 ("Uninitialized scaler variable") Fixes: ebb58dc2ef8c ("drm/nouveau/pmu: rename from pwr (no binary change)") Signed-off-by: Co...
2015 Nov 14
0
[PATCH] pmu: fix queued messages while getting no IRQ
I encountered while stresstesting the reclocking code, that rarely (1 out of 20.000+ requests) we don't get any IRQ in nvkm_pmu_intr. This means we have a queued message on the pmu, but nouveau doesn't read it and waits infinitely in nvkm_pmu_send: if (reply) { wait_event(pmu->recv.wait, (pmu->recv.process == 0)); therefore let us use wait_event_timeout with a 1s timeout frame and just check whether there is a message queued and handle it if there is one. Return -ETIMEDOUT whenever we timed out and there is no message queued or wh...
2015 Oct 26
0
[PATCH 4/4] nouveau/debugfs: add interface for current load
...mu.h b/drm/nouveau/include/nvkm/subdev/pmu.h index e61923d..be3c60e 100644 --- a/drm/nouveau/include/nvkm/subdev/pmu.h +++ b/drm/nouveau/include/nvkm/subdev/pmu.h @@ -23,6 +23,13 @@ struct nvkm_pmu { } recv; }; +struct nvkm_pmu_load_data { + u8 core; + u8 mem; + u8 video; + u8 pcie; +}; + int nvkm_pmu_send(struct nvkm_pmu *, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1); void nvkm_pmu_pgob(struct nvkm_pmu *, bool enable); @@ -48,4 +55,7 @@ void nvkm_memx_train(struct nvkm_memx *); int nvkm_memx_train_result(struct nvkm_pmu *, u32 *, int); void nvkm_memx_block(struct nvkm_memx...
2015 Oct 26
0
[PATCH v2 4/4] nouveau/debugfs: add interface for current load
...mu.h b/drm/nouveau/include/nvkm/subdev/pmu.h index e61923d..be3c60e 100644 --- a/drm/nouveau/include/nvkm/subdev/pmu.h +++ b/drm/nouveau/include/nvkm/subdev/pmu.h @@ -23,6 +23,13 @@ struct nvkm_pmu { } recv; }; +struct nvkm_pmu_load_data { + u8 core; + u8 mem; + u8 video; + u8 pcie; +}; + int nvkm_pmu_send(struct nvkm_pmu *, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1); void nvkm_pmu_pgob(struct nvkm_pmu *, bool enable); @@ -48,4 +55,7 @@ void nvkm_memx_train(struct nvkm_memx *); int nvkm_memx_train_result(struct nvkm_pmu *, u32 *, int); void nvkm_memx_block(struct nvkm_memx...
2015 Oct 26
0
[PATCH v3 4/4] nouveau/debugfs: add interface for current load
...mu.h b/drm/nouveau/include/nvkm/subdev/pmu.h index e61923d..be3c60e 100644 --- a/drm/nouveau/include/nvkm/subdev/pmu.h +++ b/drm/nouveau/include/nvkm/subdev/pmu.h @@ -23,6 +23,13 @@ struct nvkm_pmu { } recv; }; +struct nvkm_pmu_load_data { + u8 core; + u8 mem; + u8 video; + u8 pcie; +}; + int nvkm_pmu_send(struct nvkm_pmu *, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1); void nvkm_pmu_pgob(struct nvkm_pmu *, bool enable); @@ -48,4 +55,7 @@ void nvkm_memx_train(struct nvkm_memx *); int nvkm_memx_train_result(struct nvkm_pmu *, u32 *, int); void nvkm_memx_block(struct nvkm_memx...
2018 Nov 05
1
[Bug 108658] New: gt215 scheduling while atomic warning
...5 Hardware name: AMD Seattle/Seattle, BIOS 20:07:19 Oct 2 2018 Workqueue: events nvkm_pstate_work [nouveau] Call trace: dump_backtrace+0x0/0x1d0 show_stack+0x24/0x30 dump_stack+0x98/0xbc __schedule_bug+0x64/0x80 __schedule+0x818/0x9b8 schedule+0x40/0xa8 gt215_pmu_send+0x274/0x2a8 [nouveau] nvkm_pmu_send+0x60/0x80 [nouveau] nvkm_memx_init+0x5c/0x120 [nouveau] gt215_ram_calc+0x12f8/0x4d58 [nouveau] gt215_ram_calc+0x2a0/0x4d58 [nouveau] nvkm_pstate_work+0x18c/0x6b0 [nouveau] process_one_work+0x1a8/0x438 worker_thread+0x54/0x3f8 kthread+0x104/0x130 ret_from_fork+0x10/0x18 [TTM] Zone kernel: A...
2015 Nov 14
0
[PATCH] pmu: use nvkm_msec instead of do while
...bdev/pmu/base.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drm/nouveau/nvkm/subdev/pmu/base.c b/drm/nouveau/nvkm/subdev/pmu/base.c index fafbe2a..398b6a8 100644 --- a/drm/nouveau/nvkm/subdev/pmu/base.c +++ b/drm/nouveau/nvkm/subdev/pmu/base.c @@ -106,9 +106,15 @@ nvkm_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], } /* acquire data segment access */ - do { + nvkm_wr32(device, 0x10a580, 0x00000001); + if (nvkm_msec(device, 2000, + if (nvkm_rd32(device, 0x10a580) == 0x00000001) + break; nvkm_wr32(device, 0x10a580, 0x00000001); - } while (nvkm_rd32(device, 0x10a58...
2015 Nov 15
0
[PATCH v2] pmu: use nvkm_msec instead of do while
...eletions(-) > > > > diff --git a/drm/nouveau/nvkm/subdev/pmu/base.c > > b/drm/nouveau/nvkm/subdev/pmu/base.c > > index 81a5583..eb248fd 100644 > > --- a/drm/nouveau/nvkm/subdev/pmu/base.c > > +++ b/drm/nouveau/nvkm/subdev/pmu/base.c > > @@ -100,9 +100,16 @@ nvkm_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], > > } > > > > /* acquire data segment access */ > > - do { > > + nvkm_wr32(device, 0x10a580, 0x00000001); > > + if (nvkm_msec(device, 2000, > > + if (nvkm_rd32(device, 0x10a580) == 0x00000001) > > + break; > >...
2017 Jun 05
7
[PATCH v3 0/7] PMU engine counters
I think I am done reworking the series and getting to a point where I think it is basically finished. The configuration of the slots could be improved later on when working on dynamic reclocking, but for now it's good enough to report the current GPU utilization to userspace. Patches 1-4 imeplement PMU commands to setup and readout the counters. Patches 5-6 lets Nouveau make use of 1-4. Patch
2017 May 07
6
[RFC v2 0/6] PMU engine counters
reworked this series quite a lot. Now we want the Host to configure the counters through the PMU. The series isn't complete though because it needs: 1. reordering 2. better commit messages but I felt like sending those out before doing a final version. I also found some weird register overwriting issue on the PMU I have to track down, because it interfers with the counter read out. I am
2017 Jan 23
8
[Bug 99505] New: Attempting to reclock GeForce GT740M (GK208) cause GPU and system to hang
https://bugs.freedesktop.org/show_bug.cgi?id=99505 Bug ID: 99505 Summary: Attempting to reclock GeForce GT740M (GK208) cause GPU and system to hang Product: xorg Version: unspecified Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: