[Public]
> -----Original Message----- > From: Mahapatra, Rajib <[email protected]> > Sent: Thursday, February 10, 2022 07:35 > To: Liang, Prike <[email protected]>; Limonciello, Mario > <[email protected]>; Deucher, Alexander > <[email protected]> > Cc: [email protected]; S, Shirish <[email protected]>; > Mahapatra, Rajib <[email protected]> > Subject: [PATCH v2] drm/amdgpu: skipping SDMA hw_init and hw_fini for S0ix. > > [Why] > SDMA ring buffer test failed if suspend is aborted during > S0i3 resume. > > [How] > If suspend is aborted for some reason during S0i3 resume > cycle, it follows SDMA ring test failing and errors in amdgpu > resume. For RN/CZN/Picasso, SMU saves and restores SDMA > registers during S0ix cycle. So, skipping SDMA suspend and > resume from driver solves the issue. This time, the system > is able to resume gracefully even the suspend is aborted. > > v2: add changes on sdma_v4, skipping SDMA hw_init and hw_fini. This line in the commit message should be "below" the --- Besides that the code is better. Reviewed-by: Mario Limonciello <[email protected]> > Signed-off-by: Rajib Mahapatra <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > index 06a7ceda4c87..02115d63b071 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > @@ -2058,6 +2058,10 @@ static int sdma_v4_0_suspend(void *handle) > { > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > + /* SMU saves SDMA state for us */ > + if (adev->in_s0ix) > + return 0; > + > return sdma_v4_0_hw_fini(adev); > } > > @@ -2065,6 +2069,10 @@ static int sdma_v4_0_resume(void *handle) > { > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > + /* SMU restores SDMA state for us */ > + if (adev->in_s0ix) > + return 0; > + > return sdma_v4_0_hw_init(adev); > } > > -- > 2.25.1
