[PATCH] drm/amdgpu: fix Polaris12 uvd crash on driver unload

Quan, Evan Evan.Quan at amd.com
Mon Oct 18 09:08:41 UTC 2021


[AMD Official Use Only]



> -----Original Message-----
> From: Lazar, Lijo <Lijo.Lazar at amd.com>
> Sent: Monday, October 18, 2021 4:05 PM
> To: Quan, Evan <Evan.Quan at amd.com>; amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Grodzovsky,
> Andrey <Andrey.Grodzovsky at amd.com>
> Subject: Re: [PATCH] drm/amdgpu: fix Polaris12 uvd crash on driver unload
> 
> 
> 
> On 10/18/2021 1:06 PM, Quan, Evan wrote:
> > [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);
> >> +
> 
> To solve Boris' issue, this patch should be modified such that DPM disable
> done by the idle job shouldn't be executed during hw_fini.
> Preventing powergate during suspend is not needed.
[Quan, Evan] This is not intended to fix Boris' issue. It just adds the missing in previous Andrey's fix
cdccf1ffe1a3 drm/amdgpu: Fix crash on device remove/driver unload

BR
Evan
> 
> Thanks,
> Lijo
> 
> >> +	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