drm/nouveau/falcon: use NXTCTX register instead of NEW_INSTBLK
authorAlexandre Courbot <acourbot@nvidia.com>
Thu, 26 Jan 2017 06:00:45 +0000 (15:00 +0900)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 7 Mar 2017 07:05:12 +0000 (17:05 +1000)
Both registers allow to bind a new context, but NXTCTX will work on all
falcons, while legacy NEW_INSTBLK is reserved to PMU.

After setting NXTCTX we trigger a context switch by writing 0x090 and
0x0a4.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/falcon/v1.c

index 7085432dc861bd3b57a82bcbf85f9fd8d40daafd..c8283e2cc1f443bcb6d447f1ed9d3f84dbb5b840 100644 (file)
@@ -149,9 +149,12 @@ nvkm_falcon_v1_bind_context(struct nvkm_falcon *falcon, struct nvkm_gpuobj *ctx)
 
        /* Enable context */
        nvkm_falcon_mask(falcon, 0x048, 0x1, 0x1);
-       nvkm_falcon_wr32(falcon, 0x480,
+       nvkm_falcon_wr32(falcon, 0x054,
                         ((ctx->addr >> 12) & 0xfffffff) |
                         (inst_loc << 28) | (1 << 30));
+
+       nvkm_falcon_mask(falcon, 0x090, 0x10000, 0x10000);
+       nvkm_falcon_mask(falcon, 0x0a4, 0x8, 0x8);
 }
 
 static void