summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2018-12-11 14:50:02 +1000
committerBen Skeggs <bskeggs@redhat.com>2018-12-11 15:37:48 +1000
commitf7cc47e436c1238031548e0380eecc1ab66f24ba (patch)
treeaaa9c635edda9dd7f0002c338de1b2593f9abc55 /drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c
parentf37a302e67195af7d5a410901c5e8ddbbe895182 (diff)
downloadblackbird-op-linux-f7cc47e436c1238031548e0380eecc1ab66f24ba.tar.gz
blackbird-op-linux-f7cc47e436c1238031548e0380eecc1ab66f24ba.zip
drm/nouveau/fifo/gm200-: read pbdma count more directly
The trick we used (and still use for older GPUs) doesn't work on Turing. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c
index 488d8250ad4c..b96c1c5d6577 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.c
@@ -26,9 +26,23 @@
#include <nvif/class.h>
+int
+gm200_fifo_pbdma_nr(struct gk104_fifo *fifo)
+{
+ struct nvkm_device *device = fifo->base.engine.subdev.device;
+ return nvkm_rd32(device, 0x002004) & 0x000000ff;
+}
+
+const struct gk104_fifo_pbdma_func
+gm200_fifo_pbdma = {
+ .nr = gm200_fifo_pbdma_nr,
+ .init = gk104_fifo_pbdma_init,
+ .init_timeout = gk208_fifo_pbdma_init_timeout,
+};
+
static const struct gk104_fifo_func
gm200_fifo = {
- .pbdma = &gk208_fifo_pbdma,
+ .pbdma = &gm200_fifo_pbdma,
.fault.access = gk104_fifo_fault_access,
.fault.engine = gm107_fifo_fault_engine,
.fault.reason = gk104_fifo_fault_reason,
OpenPOWER on IntegriCloud