aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2022-06-01 20:46:04 +1000
committerDave Airlie <airlied@redhat.com>2022-07-13 13:56:50 +1000
commit40184ece92ebc5adfdba84554bffb60ef0e37029 (patch)
tree9b15b9ecf2bc97b16d88d54fb0a6dbc5e343d33e /drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
parentdrm/nouveau/fifo: remove rd32/wr32 accessors from channels (diff)
downloadlinux-dev-40184ece92ebc5adfdba84554bffb60ef0e37029.tar.xz
linux-dev-40184ece92ebc5adfdba84554bffb60ef0e37029.zip
drm/nouveau/ce/gv100-: move method buffer to ce ctx
Didn't really know what this buffer was when initially implemented, but these days we do, so move it somewhere more appropriate. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
index ae6c4d846eb5..80456ec70e8a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
@@ -175,13 +175,19 @@ gk104_fifo_gpfifo_engine_ctor(struct nvkm_fifo_chan *base,
struct gk104_fifo_engn *engn = gk104_fifo_gpfifo_engine(chan, engine);
int ret;
- if (!gk104_fifo_gpfifo_engine_addr(engine))
- return 0;
+ if (!gk104_fifo_gpfifo_engine_addr(engine)) {
+ if (engine->subdev.type != NVKM_ENGINE_CE ||
+ engine->subdev.device->card_type < GV100)
+ return 0;
+ }
ret = nvkm_object_bind(object, NULL, 0, &engn->inst);
if (ret)
return ret;
+ if (!gk104_fifo_gpfifo_engine_addr(engine))
+ return 0;
+
ret = nvkm_vmm_get(chan->base.vmm, 12, engn->inst->size, &engn->vma);
if (ret)
return ret;
@@ -231,7 +237,6 @@ void *
gk104_fifo_gpfifo_dtor(struct nvkm_fifo_chan *base)
{
struct gk104_fifo_chan *chan = gk104_fifo_chan(base);
- nvkm_memory_unref(&chan->mthd);
kfree(chan->cgrp);
return chan;
}