drm/nouveau/gr/gv100-: fix number of tile map registers
authorBen Skeggs <bskeggs@redhat.com>
Wed, 1 Jun 2022 10:48:17 +0000 (20:48 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 9 Nov 2022 00:45:13 +0000 (10:45 +1000)
Match RM.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgv100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gv100.c

index d68741a81a58145281a619d11f78d2c193380685..5b6ab9e088c5e62bdf83e49bbee6457978289ce5 100644 (file)
@@ -113,13 +113,14 @@ void
 gv100_grctx_generate_rop_mapping(struct gf100_gr *gr)
 {
        struct nvkm_device *device = gr->base.engine.subdev.device;
+       const u32 mapregs = DIV_ROUND_UP(gr->func->gpc_nr * gr->func->tpc_nr, 6);
        u32 data;
        int i, j;
 
        /* Pack tile map into register format. */
        nvkm_wr32(device, 0x418bb8, (gr->tpc_total << 8) |
                                     gr->screen_tile_row_offset);
-       for (i = 0; i < 11; i++) {
+       for (i = 0; i < mapregs; i++) {
                for (data = 0, j = 0; j < 6; j++)
                        data |= (gr->tile[i * 6 + j] & 0x1f) << (j * 5);
                nvkm_wr32(device, 0x418b08 + (i * 4), data);
index aeb767e582c8fc82c052df24a8b0273160de8feb..4951d482f4de3dc5f40a3af6d839a70506495d75 100644 (file)
@@ -302,7 +302,7 @@ gv100_gr = {
        .fecs.reset = gf100_gr_fecs_reset,
        .rops = gm200_gr_rops,
        .gpc_nr = 6,
-       .tpc_nr = 5,
+       .tpc_nr = 7,
        .ppc_nr = 3,
        .grctx = &gv100_grctx,
        .zbc = &gp102_gr_zbc,