[AMD Official Use Only]

Ping..

> -----Original Message-----
> From: Quan, Evan <[email protected]>
> Sent: Monday, October 11, 2021 4:28 PM
> To: [email protected]
> Cc: Deucher, Alexander <[email protected]>; Grodzovsky,
> Andrey <[email protected]>; Quan, Evan
> <[email protected]>
> Subject: [PATCH] drm/amdgpu: fix Polaris12 uvd crash on driver unload
> 
> This is a supplement for the change below:
> cdccf1ffe1a3 drm/amdgpu: Fix crash on device remove/driver unload
> 
> Signed-off-by: Evan Quan <[email protected]>
> Change-Id: Iedc25e2f572f04772511d56781b01b481e22fd00
> ---
>  drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 24 +++++++++++++-----------
>  1 file changed, 13 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
> b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
> index d5d023a24269..2d558c2f417d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
> @@ -534,6 +534,19 @@ static int uvd_v6_0_hw_fini(void *handle)  {
>       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> 
> +     cancel_delayed_work_sync(&adev->uvd.idle_work);
> +
> +     if (RREG32(mmUVD_STATUS) != 0)
> +             uvd_v6_0_stop(adev);
> +
> +     return 0;
> +}
> +
> +static int uvd_v6_0_suspend(void *handle) {
> +     int r;
> +     struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> +
>       /*
>        * Proper cleanups before halting the HW engine:
>        *   - cancel the delayed idle work
> @@ -558,17 +571,6 @@ static int uvd_v6_0_hw_fini(void *handle)
>                                                      AMD_CG_STATE_GATE);
>       }
> 
> -     if (RREG32(mmUVD_STATUS) != 0)
> -             uvd_v6_0_stop(adev);
> -
> -     return 0;
> -}
> -
> -static int uvd_v6_0_suspend(void *handle) -{
> -     int r;
> -     struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> -
>       r = uvd_v6_0_hw_fini(adev);
>       if (r)
>               return r;
> --
> 2.29.0

Reply via email to