[PATCH] drm/amdgpu: skipping SDMA IP suspend for S0ix.
Alex Deucher
alexdeucher at gmail.com
Wed Feb 2 16:09:29 UTC 2022
On Wed, Feb 2, 2022 at 10:29 AM Limonciello, Mario
<mario.limonciello at amd.com> wrote:
>
> On 2/2/2022 08:16, Alex Deucher wrote:
> > On Wed, Feb 2, 2022 at 4:07 AM Rajib Mahapatra <rajib.mahapatra at amd.com> wrote:
> >>
> >> [Why]
> >> amdgpu error observed if suspend is aborted during S0i3
> >> resume.
> >>
> >> [How]
> >> If suspend is aborted for some reason during S0i3 resume
> >> cycle, it follows amdgpu errors in resume.
> >> Skipping SDMA ip in suspend solves the issue on RENOIR
> >> (green sardine apu) chip. This time, the system is
> >> able to resume gracefully even the suspend is aborted.
> >>
> >> Signed-off-by: Rajib Mahapatra <rajib.mahapatra at amd.com>
> >> ---
> >> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 ++++++++++
> >> 1 file changed, 10 insertions(+)
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> >> index 7931132ce6e3..f01b1dffff7f 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> >> @@ -2927,6 +2927,16 @@ static int amdgpu_device_ip_suspend_phase2(struct amdgpu_device *adev)
> >> adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX))
> >> continue;
> >>
> >> + /* skip suspend of sdma for S0ix
> >> + * Resume has issues if the suspend is aborted during S0i3 cycle.
> >> + * Skipping sdma for RN/CZN/BRC chip - green sardine apu.
> >> + */
> >> + if (adev->in_s0ix &&
> >> + (adev->asic_type == CHIP_RENOIR &&
> >> + (adev->pdev->device == 0x15e7 || adev->pdev->device == 0x1638) &&
> >
> > The check here seems to contradict the comment above. Is this all
> > Renoir based APUs or just green sardine? If it's just green sardine,
> > you can check the APU flags rather than the PCI ids. E.g.,
> > (adev->apu_flags & AMD_APU_IS_GREEN_SARDINE)
> > Also move this to sdma 4 code as Mario suggested.
>
> Both RN and green sardine share the same flows for SMU, I would think it
> should just be match (adev->in_s0xi && (adev->flags & AMD_IS_APU)) when
> it's moved to skip suspend.
The SDMA 4.0 code is shared with Raven1/2 and Picasso as well. We
should verify that it's required for them as well.
Alex
>
> >
> > Alex
> >
> >> + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SDMA))
> >> + continue;
> >> +
> >> /* XXX handle errors */
> >> r = adev->ip_blocks[i].version->funcs->suspend(adev);
> >> /* XXX handle errors */
> >> --
> >> 2.25.1
> >>
>
More information about the amd-gfx
mailing list