[PATCH] drm/amdgpu: clean up psp ip if hw_init failed v2

Paul Menzel pmenzel at molgen.mpg.de
Wed Apr 20 20:12:10 UTC 2022


Dear Alice,


Thank you for your patch.

Am 20.04.22 um 21:37 schrieb Alice Wong:
> Call psp_hw_fini when psp_hw_init failed.

Please amend the commit message, and add the motivation/reasoning too [1].

I think it’s common, if a patch (series) is rerolled to list the changes 
between the versions.


Kind regards,

Paul


[1]: https://cbea.ms/git-commit/

> Signed-off-by: Alice Wong <shiwei.wong at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 57 +++++++++++++------------
>   1 file changed, 29 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> index 5b9e48d44f5b..52b14efa848a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> @@ -2537,6 +2537,34 @@ static int psp_load_fw(struct amdgpu_device *adev)
>   	return ret;
>   }
>   
> +static int psp_hw_fini(void *handle)
> +{
> +	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> +	struct psp_context *psp = &adev->psp;
> +
> +	if (psp->ta_fw) {
> +		psp_ras_terminate(psp);
> +		psp_securedisplay_terminate(psp);
> +		psp_rap_terminate(psp);
> +		psp_dtm_terminate(psp);
> +		psp_hdcp_terminate(psp);
> +	}
> +
> +	psp_asd_terminate(psp);
> +
> +	psp_tmr_terminate(psp);
> +	psp_ring_destroy(psp, PSP_RING_TYPE__KM);
> +
> +	amdgpu_bo_free_kernel(&psp->fw_pri_bo,
> +			      &psp->fw_pri_mc_addr, &psp->fw_pri_buf);
> +	amdgpu_bo_free_kernel(&psp->fence_buf_bo,
> +			      &psp->fence_buf_mc_addr, &psp->fence_buf);
> +	amdgpu_bo_free_kernel(&psp->cmd_buf_bo, &psp->cmd_buf_mc_addr,
> +			      (void **)&psp->cmd_buf_mem);
> +
> +	return 0;
> +}
> +
>   static int psp_hw_init(void *handle)
>   {
>   	int ret;
> @@ -2563,37 +2591,10 @@ static int psp_hw_init(void *handle)
>   failed:
>   	adev->firmware.load_type = AMDGPU_FW_LOAD_DIRECT;
>   	mutex_unlock(&adev->firmware.mutex);
> +	psp_hw_fini(handle);
>   	return -EINVAL;
>   }
>   
> -static int psp_hw_fini(void *handle)
> -{
> -	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> -	struct psp_context *psp = &adev->psp;
> -
> -	if (psp->ta_fw) {
> -		psp_ras_terminate(psp);
> -		psp_securedisplay_terminate(psp);
> -		psp_rap_terminate(psp);
> -		psp_dtm_terminate(psp);
> -		psp_hdcp_terminate(psp);
> -	}
> -
> -	psp_asd_terminate(psp);
> -
> -	psp_tmr_terminate(psp);
> -	psp_ring_destroy(psp, PSP_RING_TYPE__KM);
> -
> -	amdgpu_bo_free_kernel(&psp->fw_pri_bo,
> -			      &psp->fw_pri_mc_addr, &psp->fw_pri_buf);
> -	amdgpu_bo_free_kernel(&psp->fence_buf_bo,
> -			      &psp->fence_buf_mc_addr, &psp->fence_buf);
> -	amdgpu_bo_free_kernel(&psp->cmd_buf_bo, &psp->cmd_buf_mc_addr,
> -			      (void **)&psp->cmd_buf_mem);
> -
> -	return 0;
> -}
> -
>   static int psp_suspend(void *handle)
>   {
>   	int ret;


More information about the amd-gfx mailing list