[AMD Official Use Only] Ping.. > -----Original Message----- > From: Quan, Evan <Evan.Quan@xxxxxxx> > Sent: Monday, October 11, 2021 4:28 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Grodzovsky, > Andrey <Andrey.Grodzovsky@xxxxxxx>; Quan, Evan > <Evan.Quan@xxxxxxx> > 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@xxxxxxx> > 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