Skip to content

Commit e79d0ba

Browse files
airliedDanilo Krummrich
authored andcommitted
nouveau/gsp: add a 50ms delay between fbsr and driver unload rpcs
This fixes a bunch of command hangs after runtime suspend/resume. This fixes a regression caused by code movement in the commit below, the commit seems to just change timings enough to cause this to happen now, and adding the sleep seems to avoid it. I've spent some time trying to root cause it to no great avail, it seems like a bug on the firmware side, but it could be a bug in our rpc handling that I can't find. Either way, we should land the workaround to fix the problem, while we continue to work out the root cause. Signed-off-by: Dave Airlie <[email protected]> Cc: Ben Skeggs <[email protected]> Cc: Danilo Krummrich <[email protected]> Fixes: c21b039 ("drm/nouveau/gsp: add hals for fbsr.suspend/resume()") Signed-off-by: Danilo Krummrich <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 78f8806 commit e79d0ba

File tree

1 file changed

+7
-0
lines changed
  • drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535

1 file changed

+7
-0
lines changed

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,6 +1744,13 @@ r535_gsp_fini(struct nvkm_gsp *gsp, bool suspend)
17441744
nvkm_gsp_sg_free(gsp->subdev.device, &gsp->sr.sgt);
17451745
return ret;
17461746
}
1747+
1748+
/*
1749+
* TODO: Debug the GSP firmware / RPC handling to find out why
1750+
* without this Turing (but none of the other architectures)
1751+
* ends up resetting all channels after resume.
1752+
*/
1753+
msleep(50);
17471754
}
17481755

17491756
ret = r535_gsp_rpc_unloading_guest_driver(gsp, suspend);

0 commit comments

Comments
 (0)