On Thu, Nov 4, 2021 at 4:20 AM Evan Quan <evan.quan@xxxxxxx> wrote: > > There was a change(below) target for such issue: > cdccf1ffe1a3 drm/amdgpu: Fix crash on device remove/driver unload proper formatting for a patch reference: cdccf1ffe1a3 ("drm/amdgpu: Fix crash on device remove/driver unload") > But the fix for VI ASICs was missing there. This is a supplement for > that. > Fixes: cdccf1ffe1a3 ("drm/amdgpu: Fix crash on device remove/driver unload") > Signed-off-by: Evan Quan <evan.quan@xxxxxxx> With the above comments addressed, Acked-by: Alex Deucher <alexander.deucher@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 >