[PATCH] drm/amdgpu: fix Polaris12 uvd crash on driver unload
Quan, Evan
Evan.Quan at amd.com
Mon Oct 18 07:36:08 UTC 2021
[AMD Official Use Only]
Ping..
> -----Original Message-----
> From: Quan, Evan <Evan.Quan at amd.com>
> Sent: Monday, October 11, 2021 4:28 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Grodzovsky,
> Andrey <Andrey.Grodzovsky at amd.com>; Quan, Evan
> <Evan.Quan at amd.com>
> 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 <evan.quan at amd.com>
> 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
More information about the amd-gfx
mailing list