nouveau/gsp: allocate enough space for all channel ids.
authorDave Airlie <airlied@redhat.com>
Tue, 21 Nov 2023 20:11:09 +0000 (06:11 +1000)
committerDanilo Krummrich <dakr@redhat.com>
Tue, 21 Nov 2023 21:28:01 +0000 (22:28 +0100)
This probably isn't the ideal fix, but we ended up using chids
sparsely, and lots of things rely on indexing into the full range,
so just allocate the full range up front.

The GSP code fixes 8 channels into a userd page, but we end up using
a single userd page per channel so end up sparsely using the range.

Fixes a few crashes seen with multiple channels.

Link: https://gitlab.freedesktop.org/drm/nouveau/-/issues/277
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231121201109.2988516-1-airlied@gmail.com
drivers/gpu/drm/nouveau/nvkm/engine/fifo/r535.c

index 3adbb05..d088e63 100644 (file)
@@ -539,7 +539,7 @@ r535_fifo_runl_ctor(struct nvkm_fifo *fifo)
        struct nvkm_runl *runl;
        struct nvkm_engn *engn;
        u32 cgids = 2048;
-       u32 chids = 2048 / CHID_PER_USERD;
+       u32 chids = 2048;
        int ret;
        NV2080_CTRL_FIFO_GET_DEVICE_INFO_TABLE_PARAMS *ctrl;