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>
This commit is contained in:
@@ -1385,6 +1385,8 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
|
|||||||
gf100_gr_mmio(gr, gr->fuc_sw_ctx);
|
gf100_gr_mmio(gr, gr->fuc_sw_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gf100_gr_wait_idle(gr);
|
||||||
|
|
||||||
idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
|
idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
|
||||||
|
|
||||||
grctx->pagepool(info);
|
grctx->pagepool(info);
|
||||||
@@ -1396,6 +1398,8 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
|
|||||||
|
|
||||||
gf100_grctx_generate_floorsweep(gr);
|
gf100_grctx_generate_floorsweep(gr);
|
||||||
|
|
||||||
|
gf100_gr_wait_idle(gr);
|
||||||
|
|
||||||
if (grctx->r400088) grctx->r400088(gr, false);
|
if (grctx->r400088) grctx->r400088(gr, false);
|
||||||
if (gr->fuc_bundle)
|
if (gr->fuc_bundle)
|
||||||
gf100_gr_icmd(gr, gr->fuc_bundle);
|
gf100_gr_icmd(gr, gr->fuc_bundle);
|
||||||
|
@@ -2123,6 +2123,8 @@ gf100_gr_init(struct gf100_gr *gr)
|
|||||||
else
|
else
|
||||||
gf100_gr_mmio(gr, gr->func->mmio);
|
gf100_gr_mmio(gr, gr->func->mmio);
|
||||||
|
|
||||||
|
gf100_gr_wait_idle(gr);
|
||||||
|
|
||||||
if (gr->func->init_r405a14)
|
if (gr->func->init_r405a14)
|
||||||
gr->func->init_r405a14(gr);
|
gr->func->init_r405a14(gr);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user