Nouveau deallocates a few buffers post GPU init which are required for GPU 
suspend/resume to function correctly.
This is likely not as big an issue on systems where the NVGPU is the only GPU, 
but on multi-GPU set ups it leads to a regression where the kernel module 
errors and results in a system-wide rendering freeze.

This commit addresses that regression by moving the two buffers required for 
suspend and resume to be deallocated at driver unload instead of post init.

Fixes: 042b5f8 ("drm/nouveau: fix several DMA buffer leaks")
Signed-off-by: Sid Pranjale <sidpranjale...@protonmail.com>
---
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c 
b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
index a64c81385..a73a5b589 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
@@ -1054,8 +1054,6 @@ r535_gsp_postinit(struct nvkm_gsp *gsp)
        /* Release the DMA buffers that were needed only for boot and init */
        nvkm_gsp_mem_dtor(gsp, &gsp->boot.fw);
        nvkm_gsp_mem_dtor(gsp, &gsp->libos);
-       nvkm_gsp_mem_dtor(gsp, &gsp->rmargs);
-       nvkm_gsp_mem_dtor(gsp, &gsp->wpr_meta);
 
        return ret;
 }
@@ -2163,6 +2161,8 @@ r535_gsp_dtor(struct nvkm_gsp *gsp)
 
        r535_gsp_dtor_fws(gsp);
 
+       nvkm_gsp_mem_dtor(gsp, &gsp->rmargs);
+       nvkm_gsp_mem_dtor(gsp, &gsp->wpr_meta);
        nvkm_gsp_mem_dtor(gsp, &gsp->shm.mem);
        nvkm_gsp_mem_dtor(gsp, &gsp->loginit);
        nvkm_gsp_mem_dtor(gsp, &gsp->logintr);
-- 
2.44.0

Reply via email to