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.
Unified · Split
| @@ -1054,8 +1054,6 @@ r535_gsp_postinit(struct nvkm_gsp *gsp) · 1053 unmodified lines | |||
| 1054 | /* Release the DMA buffers that were needed only for boot and init */ | 1054 | /* Release the DMA buffers that were needed only for boot and init */ |
| 1055 | nvkm_gsp_mem_dtor(gsp, &gsp->boot.fw); | 1055 | nvkm_gsp_mem_dtor(gsp, &gsp->boot.fw); |
| 1056 | nvkm_gsp_mem_dtor(gsp, &gsp->libos); | 1056 | nvkm_gsp_mem_dtor(gsp, &gsp->libos); |
| 1057 | nvkm_gsp_mem_dtor(gsp, &gsp->rmargs); | ||
| 1058 | nvkm_gsp_mem_dtor(gsp, &gsp->wpr_meta); | ||
| 1059 | 1057 | ||
| 1060 | return ret; | 1058 | return ret; |
| 1061 | } | 1059 | } |
| @@ -2163,6 +2161,8 @@ r535_gsp_dtor(struct nvkm_gsp *gsp) · 1101 unmodified lines | |||
| 2163 | 2161 | ||
| 2164 | r535_gsp_dtor_fws(gsp); | 2162 | r535_gsp_dtor_fws(gsp); |
| 2165 | 2163 | ||
| 2164 | nvkm_gsp_mem_dtor(gsp, &gsp->rmargs); | ||
| 2165 | nvkm_gsp_mem_dtor(gsp, &gsp->wpr_meta); | ||
| 2166 | nvkm_gsp_mem_dtor(gsp, &gsp->shm.mem); | 2166 | nvkm_gsp_mem_dtor(gsp, &gsp->shm.mem); |
| 2167 | nvkm_gsp_mem_dtor(gsp, &gsp->loginit); | 2167 | nvkm_gsp_mem_dtor(gsp, &gsp->loginit); |
| 2168 | nvkm_gsp_mem_dtor(gsp, &gsp->logintr); | 2168 | nvkm_gsp_mem_dtor(gsp, &gsp->logintr); |