diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2018-05-15 22:07:32 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2018-05-18 03:09:35 -0400 |
commit | 6c46d01f25bcf74608d09645c27c35c3f3940ebe (patch) | |
tree | 83d1a7fc3342b204f41963d2b0a92a20d0d55155 /drivers/gpu/drm | |
parent | dd3b89be3eafd1c9977e350e81c5556230319101 (diff) |
drm/nouveau/gr/gf100-: insert some WFIs during gr init
Inserted wait-for-gr-idle in the places it seems that RM does it, seems
to prevent some random mmio timeouts on Quadro GV100.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c index f0f5a518e52a..e813a3f8ea93 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c | |||
@@ -1385,6 +1385,8 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) | |||
1385 | gf100_gr_mmio(gr, gr->fuc_sw_ctx); | 1385 | gf100_gr_mmio(gr, gr->fuc_sw_ctx); |
1386 | } | 1386 | } |
1387 | 1387 | ||
1388 | gf100_gr_wait_idle(gr); | ||
1389 | |||
1388 | idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000); | 1390 | idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000); |
1389 | 1391 | ||
1390 | grctx->pagepool(info); | 1392 | grctx->pagepool(info); |
@@ -1396,6 +1398,8 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) | |||
1396 | 1398 | ||
1397 | gf100_grctx_generate_floorsweep(gr); | 1399 | gf100_grctx_generate_floorsweep(gr); |
1398 | 1400 | ||
1401 | gf100_gr_wait_idle(gr); | ||
1402 | |||
1399 | if (grctx->r400088) grctx->r400088(gr, false); | 1403 | if (grctx->r400088) grctx->r400088(gr, false); |
1400 | if (gr->fuc_bundle) | 1404 | if (gr->fuc_bundle) |
1401 | gf100_gr_icmd(gr, gr->fuc_bundle); | 1405 | gf100_gr_icmd(gr, gr->fuc_bundle); |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c index 8dd4bd71b4fc..70d3d41e616c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | |||
@@ -2123,6 +2123,8 @@ gf100_gr_init(struct gf100_gr *gr) | |||
2123 | else | 2123 | else |
2124 | gf100_gr_mmio(gr, gr->func->mmio); | 2124 | gf100_gr_mmio(gr, gr->func->mmio); |
2125 | 2125 | ||
2126 | gf100_gr_wait_idle(gr); | ||
2127 | |||
2126 | if (gr->func->init_r405a14) | 2128 | if (gr->func->init_r405a14) |
2127 | gr->func->init_r405a14(gr); | 2129 | gr->func->init_r405a14(gr); |
2128 | 2130 | ||