555.42.02 reserves some CHIDs for internal use.

Signed-off-by: Ben Skeggs <bske...@nvidia.com>
---
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fifo.c | 7 ++++---
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gr.c   | 2 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h        | 1 +
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fifo.c 
b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fifo.c
index eb54146365bf..d6c3f2d01e56 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fifo.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fifo.c
@@ -542,13 +542,14 @@ r535_fifo_runl_ctor(struct nvkm_fifo *fifo)
        struct nvkm_rm *rm = gsp->rm;
        struct nvkm_runl *runl;
        struct nvkm_engn *engn;
-       u32 cgids = 2048;
        u32 chids = 2048;
+       u32 first = rm->api->fifo->rsvd_chids;
+       u32 count = chids - first;
        int ret;
        NV2080_CTRL_FIFO_GET_DEVICE_INFO_TABLE_PARAMS *ctrl;
 
-       if ((ret = nvkm_chid_new(&nvkm_chan_event, subdev, cgids, 0, cgids, 
&fifo->cgid)) ||
-           (ret = nvkm_chid_new(&nvkm_chan_event, subdev, chids, 0, chids, 
&fifo->chid)))
+       if ((ret = nvkm_chid_new(&nvkm_chan_event, subdev, chids, first, count, 
&fifo->cgid)) ||
+           (ret = nvkm_chid_new(&nvkm_chan_event, subdev, chids, first, count, 
&fifo->chid)))
                return ret;
 
        ctrl = nvkm_gsp_rm_ctrl_rd(&gsp->internal.device.subdevice,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gr.c 
b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gr.c
index bafe0af60d9c..c8ea05ea972c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gr.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gr.c
@@ -297,7 +297,7 @@ r535_gr_oneinit(struct nvkm_gr *base)
        if (ret)
                goto done;
 
-       ret = rmapi->fifo->chan.alloc(&gsp->internal.device, 1, 0, true, 0,
+       ret = rmapi->fifo->chan.alloc(&gsp->internal.device, 1, 0, true, 
rmapi->fifo->rsvd_chids,
                                      nvkm_memory_addr(golden.inst),
                                      nvkm_memory_addr(golden.inst) + 0x1000,
                                      nvkm_memory_addr(golden.inst) + 0x2000,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h 
b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h
index c0abbcb2908e..16eb3492f9db 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h
@@ -100,6 +100,7 @@ struct nvkm_rm_api {
                int (*xlat_rm_engine_type)(u32 rm_engine_type,
                                           enum nvkm_subdev_type *, int 
*nv2080_type);
                int (*ectx_size)(struct nvkm_fifo *);
+               unsigned rsvd_chids;
                struct {
                        int (*alloc)(struct nvkm_gsp_device *, u32 
nv2080_engine_type, u8 runq, bool priv,
                                     int chid, u64 inst_addr, u64 userd_addr, 
u64 mthdbuf_addr,
-- 
2.49.0

Reply via email to