[Public] Hold on there's still need further check the gfxoff control residence and will update the patch. Thanks, Prike > -----Original Message----- > From: Liang, Prike <Prike.Liang@xxxxxxx> > Sent: Friday, September 24, 2021 1:18 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Huang, Ray > <Ray.Huang@xxxxxxx>; Liang, Prike <Prike.Liang@xxxxxxx> > Subject: [PATCH] drm/amdgpu: force exit gfxoff on sdma resume for rmb > s0ix > > In the s2idle stress test sdma resume fail occasionally,in the failed case GPU > is in the gfxoff state.This issue may introduce by FSDL miss handle doorbell > S/R and now temporary fix the issue by forcing exit gfxoff for sdma resume. > > Signed-off-by: Prike Liang <Prike.Liang@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c > b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c > index 24b0195..af759ab 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c > @@ -7608,6 +7608,14 @@ static int gfx_v10_0_suspend(void *handle) > > static int gfx_v10_0_resume(void *handle) { > + struct amdgpu_device *adev = (struct amdgpu_device *)handle; > + > + /* TODO: check whether can submit a doorbell request to raise > + * a doorbell fence to exit gfxoff. > + */ > + if (adev->in_s0ix) > + amdgpu_gfx_off_ctrl(adev, false); > + > return gfx_v10_0_hw_init(handle); > } > > @@ -7819,6 +7827,9 @@ static int gfx_v10_0_late_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > int r; > > + if (adev->in_s0ix) > + amdgpu_gfx_off_ctrl(adev, true); > + > r = amdgpu_irq_get(adev, &adev->gfx.priv_reg_irq, 0); > if (r) > return r; > -- > 2.7.4