search for: nvkm_pmu_pgob

Displaying 20 results from an estimated 26 matches for "nvkm_pmu_pgob".

2015 Nov 09
4
[Bug 92870] New: GF117M nvkm_pmu_pgob fault
https://bugs.freedesktop.org/show_bug.cgi?id=92870 Bug ID: 92870 Summary: GF117M nvkm_pmu_pgob fault Product: xorg Version: unspecified Hardware: x86-64 (AMD64) OS: Linux (All) Status: NEW Severity: normal Priority: medium Component: Driver/nouveau Assignee: nouveau at lists.freedesktop.org...
2015 Sep 03
2
[PATCH 2/2] gr/gf100: do not assume a PMU is present
...f252fa2d7cf9 100644 > --- a/drm/nouveau/nvkm/engine/gr/gf100.c > +++ b/drm/nouveau/nvkm/engine/gr/gf100.c > @@ -1499,7 +1499,8 @@ gf100_gr_oneinit(struct nvkm_gr *base) > struct nvkm_device *device = gr->base.engine.subdev.device; > int ret, i, j; > > - nvkm_pmu_pgob(device->pmu, false); > + if (device->pmu) > + nvkm_pmu_pgob(device->pmu, false); I'd probably just change the condition in nvkm_pmu_pgob() to (pmu && pmu->func->pgob) ? > > ret = nvkm_memory_new(device, NVKM_MEM_TARGET_INST, 0x1000...
2015 Sep 03
2
[PATCH 2/2] gr/gf100: do not assume a PMU is present
...engine/gr/gf100.c >>> +++ b/drm/nouveau/nvkm/engine/gr/gf100.c >>> @@ -1499,7 +1499,8 @@ gf100_gr_oneinit(struct nvkm_gr *base) >>> struct nvkm_device *device = gr->base.engine.subdev.device; >>> int ret, i, j; >>> >>> - nvkm_pmu_pgob(device->pmu, false); >>> + if (device->pmu) >>> + nvkm_pmu_pgob(device->pmu, false); >> I'd probably just change the condition in nvkm_pmu_pgob() to (pmu && >> pmu->func->pgob) ? > > It seems logical to me that the c...
2015 Sep 03
5
[PATCH 0/2] two trivial PMU fixes
Two trivial PMU-related fixes for Tegra: - Add a dummy func member to GK20A, since nvkm_pmmu_pgob() unconditionally dereferences it - Check whether a PMU actually exists before calling nvkm_pmmu_pgob(). During early bringup we are likely to not have a PMU Alexandre Courbot (2): pmu/gk20a: add dummy func gr/gf100: do not assume a PMU is present drm/nouveau/nvkm/engine/gr/gf100.c | 3 ++-
2016 Jan 06
1
Backport request for commit 579b7c582 (drm/nouveau/pmu: do not assume a PMU is present)
...184704463de09f0f310ac Author: Alexandre Courbot <acourbot at nvidia.com> Date: Thu Sep 3 17:39:52 2015 +0900 drm/nouveau/pmu: do not assume a PMU is present Some devices may not have a PMU. Avoid a NULL pointer dereference in such cases by checking whether the pointer given to nvkm_pmu_pgob() is valid. Signed-off-by: Alexandre Courbot <acourbot at nvidia.com> Signed-off-by: Ben Skeggs <bskeggs at redhat.com> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.c index 27a79c0..d95eb86 100644 --- a/drivers/...
2017 Nov 28
2
[RFC PATCH] gr: did you try turning it off and on again.
...>engine.subdev; + struct nvkm_device *device = subdev->device; u32 ret; + /* did you try turning it off and on again? Apparently we need this + * on pascal, otherwise secboot will just fail. + */ + nvkm_mask(device, 0x200, 0x1000, 0x0000); + nvkm_mask(device, 0x200, 0x1000, 0x1000); + nvkm_pmu_pgob(gr->base.engine.subdev.device->pmu, false); ret = nvkm_falcon_get(gr->fecs, subdev); -- 2.14.3
2017 Nov 29
1
[RFC PATCH] gr: did you try turning it off and on again.
...e guard it against exectution on maxwell > Maybe, maybe not? I think it is fairly safe, but I kind of hoped somebody with more knowledge about these kind of things would respond and tells us this has to be done or maybe not. > > Greetings, > > Tobias > > > >> nvkm_pmu_pgob(gr->base.engine.subdev.device->pmu, false); >> ret = nvkm_falcon_get(gr->fecs, subdev);
2015 Oct 26
1
[PATCH 4/4] nouveau/debugfs: add interface for current load
...} 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 *); > void nvkm_memx_unblock(struct nvkm_memx *); > + > +/* interface to PERF pro...
2017 Nov 28
0
[RFC PATCH] gr: did you try turning it off and on again.
...t will just fail." > + */ > + nvkm_mask(device, 0x200, 0x1000, 0x0000); > + nvkm_mask(device, 0x200, 0x1000, 0x1000); > + It is needed with pascal, but does it harm other generations calling this init? Maybe guard it against exectution on maxwell Greetings, Tobias > nvkm_pmu_pgob(gr->base.engine.subdev.device->pmu, false); > > ret = nvkm_falcon_get(gr->fecs, subdev);
2015 Oct 26
0
[PATCH 4/4] nouveau/debugfs: add interface for current load
...ubdev/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 *); void nvkm_memx_unblock(struct nvkm_memx *); + +/* interface to PERF process running on PMU */ +int nv...
2015 Oct 26
0
[PATCH v2 4/4] nouveau/debugfs: add interface for current load
...ubdev/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 *); void nvkm_memx_unblock(struct nvkm_memx *); + +/* interface to PERF process running on PMU */ +int nv...
2015 Oct 26
0
[PATCH v3 4/4] nouveau/debugfs: add interface for current load
...ubdev/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 *); void nvkm_memx_unblock(struct nvkm_memx *); + +/* interface to PERF process running on PMU */ +int nv...
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 Apr 13
3
[PATCH v4] pmu/gk20a: PMU boot support
...d *)object; - struct gk20a_pmu_priv *priv = (void *)pmu; + struct gk20a_pmu_priv *priv = (void *)object; + struct nvkm_mc *pmc = nvkm_mc(object); int ret; - ret = nvkm_subdev_init(&pmu->base); + ret = nvkm_subdev_init(&priv->base.base); if (ret) return ret; - pmu->pgob = nvkm_pmu_pgob; + priv->pmu_state = PMU_STATE_STARTING; + ret = gk20a_init_pmu_setup_hw1(priv, pmc); + if (ret) + return ret; + + nv_wr32(priv, 0x10a504 + (BUSY_SLOT * 0x10), 0x00200001); + nv_wr32(priv, 0x10a50c + (BUSY_SLOT * 0x10), 0x00000002); + nv_wr32(priv, 0x10a50c + (CLK_SLOT * 0x10), 0x00000003); -...
2015 Apr 08
3
[PATCH V2] pmu/gk20a: PMU boot support.
...sion: %d\n", + pmu->desc->app_version); + ret = -EINVAL; + goto err; + } + + ret = gk20a_init_pmu_setup_sw(ppmu); if (ret) - return ret; + goto err; + + pmu->pmu_state = PMU_STATE_STARTING; + ret = gk20a_init_pmu_setup_hw1(ppmu, pmc); + if (ret) + goto err; - pmu->pgob = nvkm_pmu_pgob; + ret = nvkm_subdev_init(&ppmu->base); + if (ret) + goto err; - /* init pwr perf counter */ - nv_wr32(pmu, 0x10a504 + (BUSY_SLOT * 0x10), 0x00200001); - nv_wr32(pmu, 0x10a50c + (BUSY_SLOT * 0x10), 0x00000002); - nv_wr32(pmu, 0x10a50c + (CLK_SLOT * 0x10), 0x00000003); + ppmu->pgob = nv...
2015 Mar 11
3
[PATCH] pmu/gk20a: PMU boot support.
...len, align); + if (!len) + return -EINVAL; + + down_write(&allocator->rw_sema); + bitmap_clear(allocator->bitmap, addr - allocator->base, len); + up_write(&allocator->rw_sema); + + allocator_dbg(allocator, "[out] addr %d, len %d", addr, len); + + return 0; +} + void nvkm_pmu_pgob(struct nvkm_pmu *pmu, bool enable) { diff --git a/drm/nouveau/nvkm/subdev/pmu/gk20a.c b/drm/nouveau/nvkm/subdev/pmu/gk20a.c index a49934bbe637..0fd2530301a3 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gk20a.c +++ b/drm/nouveau/nvkm/subdev/pmu/gk20a.c @@ -20,21 +20,67 @@ * DEALINGS IN THE SOFTWARE....
2015 Apr 30
2
[PATCH v4] pmu/gk20a: PMU boot support
...ct nvkm_mc *pmc = nvkm_mc(object); >> int ret; >> >> - ret = nvkm_subdev_init(&pmu->base); >> + ret = nvkm_subdev_init(&priv->base.base); >> if (ret) >> return ret; >> >> - pmu->pgob = nvkm_pmu_pgob; >> + priv->pmu_state = PMU_STATE_STARTING; >> + ret = gk20a_init_pmu_setup_hw1(priv, pmc); >> + if (ret) >> + return ret; >> + >> + nv_wr32(priv, 0x10a504 + (BUSY_SLOT * 0x10), 0x00200001); >> + nv_wr32(priv,...
2015 Mar 11
0
[PATCH] pmu/gk20a: PMU boot support.
...>rw_sema); > + bitmap_clear(allocator->bitmap, addr - allocator->base, len); > + up_write(&allocator->rw_sema); > + > + allocator_dbg(allocator, "[out] addr %d, len %d", addr, len); > + > + return 0; > +} > + > void > nvkm_pmu_pgob(struct nvkm_pmu *pmu, bool enable) > { > diff --git a/drm/nouveau/nvkm/subdev/pmu/gk20a.c b/drm/nouveau/nvkm/subdev/pmu/gk20a.c > index a49934bbe637..0fd2530301a3 100644 > --- a/drm/nouveau/nvkm/subdev/pmu/gk20a.c > +++ b/drm/nouveau/nvkm/subdev/pmu/gk20a.c > @@ -20,21 +20,67 @@...
2015 Mar 12
2
[PATCH] pmu/gk20a: PMU boot support.
...>rw_sema); > + bitmap_clear(allocator->bitmap, addr - allocator->base, len); > + up_write(&allocator->rw_sema); > + > + allocator_dbg(allocator, "[out] addr %d, len %d", addr, len); > + > + return 0; > +} > + > void > nvkm_pmu_pgob(struct nvkm_pmu *pmu, bool enable) > { > diff --git a/drm/nouveau/nvkm/subdev/pmu/gk20a.c b/drm/nouveau/nvkm/subdev/pmu/gk20a.c > index a49934bbe637..0fd2530301a3 100644 > --- a/drm/nouveau/nvkm/subdev/pmu/gk20a.c > +++ b/drm/nouveau/nvkm/subdev/pmu/gk20a.c > @@ -20,21 +20,67 @@...
2015 Oct 26
9
[PATCH 0/4] Add pdaemon load counters
this series makes use of the load counters we can use to get information about the current load of the gpu. This series includes the needed pmu bits and a debugfs interface to read them out. Currently the values are between 0 and 255, because it is much easier to implement it this way on the pmu. Karol Herbst (4): subdev/pmu/fuc: add gk104 pmu/fuc: add macros for pdaemon pwr counters