Use usermode class ID from nvkm_rm_gpu, instead of copying it from the non-GSP HALs.
Signed-off-by: Ben Skeggs <bske...@nvidia.com> Reviewed-by: Dave Airlie <airl...@redhat.com> Reviewed-by: Timur Tabi <tt...@nvidia.com> Tested-by: Timur Tabi <tt...@nvidia.com> --- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ad10x.c | 2 ++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga100.c | 3 +++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga1xx.c | 2 ++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/gpu.h | 4 ++++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/tu1xx.c | 2 ++ drivers/gpu/drm/nouveau/nvkm/subdev/vfn/r535.c | 11 +++++++++-- 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ad10x.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ad10x.c index bdeaffbb1077..170264d2a61b 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ad10x.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ad10x.c @@ -16,4 +16,6 @@ ad10x_gpu = { .wimm = GA102_DISP_WINDOW_IMM_CHANNEL_DMA, .curs = GA102_DISP_CURSOR, }, + + .usermode.class = AMPERE_USERMODE_A, }; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga100.c index b10e6ff9e9b6..164f46e0a93b 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga100.c @@ -4,6 +4,9 @@ */ #include "gpu.h" +#include <nvif/class.h> + const struct nvkm_rm_gpu ga100_gpu = { + .usermode.class = AMPERE_USERMODE_A, }; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga1xx.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga1xx.c index d4b67ccac608..f1d4778c4bc3 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga1xx.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/ga1xx.c @@ -16,4 +16,6 @@ ga1xx_gpu = { .wimm = GA102_DISP_WINDOW_IMM_CHANNEL_DMA, .curs = GA102_DISP_CURSOR, }, + + .usermode.class = AMPERE_USERMODE_A, }; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/gpu.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/gpu.h index 7f3b5f3fd32b..7d005f73326e 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/gpu.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/gpu.h @@ -17,6 +17,10 @@ struct nvkm_rm_gpu { u32 curs; } class; } disp; + + struct { + u32 class; + } usermode; }; extern const struct nvkm_rm_gpu tu1xx_gpu; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/tu1xx.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/tu1xx.c index add98b2f3b6d..7aea54dd89ae 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/tu1xx.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/tu1xx.c @@ -16,4 +16,6 @@ tu1xx_gpu = { .wimm = TU102_DISP_WINDOW_IMM_CHANNEL_DMA, .curs = TU102_DISP_CURSOR, }, + + .usermode.class = TURING_USERMODE_A, }; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/vfn/r535.c b/drivers/gpu/drm/nouveau/nvkm/subdev/vfn/r535.c index dce337306cab..9446049642e1 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/vfn/r535.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/vfn/r535.c @@ -21,6 +21,8 @@ */ #include "priv.h" +#include <rm/gpu.h> + static void r535_vfn_dtor(struct nvkm_vfn *vfn) { @@ -32,6 +34,7 @@ r535_vfn_new(const struct nvkm_vfn_func *hw, struct nvkm_device *device, enum nvkm_subdev_type type, int inst, u32 addr, struct nvkm_vfn **pvfn) { + const struct nvkm_rm_gpu *gpu = device->gsp->rm->gpu; struct nvkm_vfn_func *rm; int ret; @@ -39,8 +42,12 @@ r535_vfn_new(const struct nvkm_vfn_func *hw, return -ENOMEM; rm->dtor = r535_vfn_dtor; - rm->intr = hw->intr; - rm->user = hw->user; + rm->intr = &tu102_vfn_intr, + rm->user.addr = 0x030000; + rm->user.size = 0x010000; + rm->user.base.minver = -1; + rm->user.base.maxver = -1; + rm->user.base.oclass = gpu->usermode.class; ret = nvkm_vfn_new_(rm, device, type, inst, addr, pvfn); if (ret) -- 2.49.0