drm/nouveau: keep DMA buffers required for suspend/resume
authorSid Pranjale <sidpranjale127@protonmail.com>
Thu, 29 Feb 2024 16:22:05 +0000 (21:52 +0530)
committerDave Airlie <airlied@redhat.com>
Fri, 1 Mar 2024 05:27:04 +0000 (15:27 +1000)
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: 042b5f83841fb ("drm/nouveau: fix several DMA buffer leaks")
Signed-off-by: Sid Pranjale <sidpranjale127@protonmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c

index a64c81385682158fb5bf29b1db93655f7b3f7cac..a73a5b58979045b07468c1443940f87e1b151f67 100644 (file)
@@ -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);