diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index 19180aaa8bf2..1e380fe29b5e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -56,6 +56,7 @@ static int psp_sw_init(void *handle)  		psp->prep_cmd_buf = psp_v3_1_prep_cmd_buf;  		psp->ring_init = psp_v3_1_ring_init;  		psp->ring_create = psp_v3_1_ring_create; +		psp->ring_destroy = psp_v3_1_ring_destroy;  		psp->cmd_submit = psp_v3_1_cmd_submit;  		psp->compare_sram_data = psp_v3_1_compare_sram_data;  		psp->smu_reload_quirk = psp_v3_1_smu_reload_quirk; @@ -411,8 +412,12 @@ static int psp_hw_fini(void *handle)  	struct amdgpu_device *adev = (struct amdgpu_device *)handle;  	struct psp_context *psp = &adev->psp; -	if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) -		amdgpu_ucode_fini_bo(adev); +	if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) +		return 0; + +	amdgpu_ucode_fini_bo(adev); + +	psp_ring_destroy(psp, PSP_RING_TYPE__KM);  	if (psp->tmr_buf)  		amdgpu_bo_free_kernel(&psp->tmr_bo, &psp->tmr_mc_addr, &psp->tmr_buf); | 
