Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu:free CSA in unified place

instead of doing it in each GFX ip's sw_fini

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Monk Liu and committed by
Alex Deucher
84e5b516 9921167d

+8 -2
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
··· 1893 1893 if (!adev->ip_blocks[i].status.hw) 1894 1894 continue; 1895 1895 if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { 1896 + amdgpu_free_static_csa(adev); 1896 1897 amdgpu_wb_fini(adev); 1897 1898 amdgpu_vram_scratch_fini(adev); 1898 1899 }
+6
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
··· 47 47 return 0; 48 48 } 49 49 50 + void amdgpu_free_static_csa(struct amdgpu_device *adev) { 51 + amdgpu_bo_free_kernel(&adev->virt.csa_obj, 52 + &adev->virt.csa_vmid0_addr, 53 + NULL); 54 + } 55 + 50 56 /* 51 57 * amdgpu_map_static_csa should be called during amdgpu_vm_init 52 58 * it maps virtual address "AMDGPU_VA_RESERVED_SIZE - AMDGPU_CSA_SIZE"
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
··· 283 283 int amdgpu_allocate_static_csa(struct amdgpu_device *adev); 284 284 int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm, 285 285 struct amdgpu_bo_va **bo_va); 286 + void amdgpu_free_static_csa(struct amdgpu_device *adev); 286 287 void amdgpu_virt_init_setting(struct amdgpu_device *adev); 287 288 uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg); 288 289 void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v);
-1
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
··· 2114 2114 amdgpu_gfx_compute_mqd_sw_fini(adev); 2115 2115 amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); 2116 2116 amdgpu_gfx_kiq_fini(adev); 2117 - amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL); 2118 2117 2119 2118 gfx_v8_0_mec_fini(adev); 2120 2119 gfx_v8_0_rlc_fini(adev);
-1
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
··· 1464 1464 amdgpu_gfx_compute_mqd_sw_fini(adev); 1465 1465 amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); 1466 1466 amdgpu_gfx_kiq_fini(adev); 1467 - amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL); 1468 1467 1469 1468 gfx_v9_0_mec_fini(adev); 1470 1469 gfx_v9_0_ngg_fini(adev);