[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