[PATCH v2] drm/amd: Don't allow s0ix on APUs older than Raven
Limonciello, Mario
Mario.Limonciello at amd.com
Mon Feb 20 17:12:02 UTC 2023
[AMD Official Use Only - General]
> -----Original Message-----
> From: Alex Deucher <alexdeucher at gmail.com>
> Sent: Monday, February 20, 2023 11:10
> To: Limonciello, Mario <Mario.Limonciello at amd.com>
> Cc: amd-gfx at lists.freedesktop.org; Deucher, Alexander
> <Alexander.Deucher at amd.com>
> Subject: Re: [PATCH v2] drm/amd: Don't allow s0ix on APUs older than Raven
>
> On Mon, Feb 20, 2023 at 11:56 AM Limonciello, Mario
> <Mario.Limonciello at amd.com> wrote:
> >
> > [Public]
> >
> >
> >
> > > -----Original Message-----
> > > From: Limonciello, Mario <Mario.Limonciello at amd.com>
> > > Sent: Monday, February 13, 2023 15:11
> > > To: amd-gfx at lists.freedesktop.org
> > > Cc: Limonciello, Mario <Mario.Limonciello at amd.com>; Deucher,
> Alexander
> > > <Alexander.Deucher at amd.com>
> > > Subject: [PATCH v2] drm/amd: Don't allow s0ix on APUs older than Raven
> > >
> > > APUs before Raven didn't support s0ix. As we just relieved some
> > > of the safety checks for s0ix to improve power consumption on
> > > APUs that support it but that are missing BIOS support a new
> > > blind spot was introduced that a user could "try" to run s0ix.
> > >
> > > Plug this hole so that if users try to run s0ix on anything older
> > > than Raven it will just skip suspend of the GPU.
> > >
> > > Fixes: cf488dcd0ab7 ("drm/amd: Allow s0ix without BIOS support")
> > > Suggested-by: Alexander Deucher <Alexander.Deucher at amd.com>
> > > Signed-off-by: Mario Limonciello <mario.limonciello at amd.com>
> > > ---
> > > v1->v2:
> > > * Don't run any suspend code or resume code in this case
> >
> > Any feedback for this patch?
>
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>
Thanks.
> I think for S0ix and dGPUs, we probably need some additional work as
> well. If the user tries s2idle and the platform doesn't actually
> support s0ix (i.e., doesn't actually turn off the power rails), we
> should be using the runtime suspend routines for BACO/BOCO rather than
> the S3 suspend routines.
OK - I'll review the framework code for that case and see what makes sense.
>
> Alex
>
>
> >
> > > ---
> > > drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 3 +++
> > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 7 ++++++-
> > > 2 files changed, 9 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> > > index fa7375b97fd47..25e902077caf6 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> > > @@ -1073,6 +1073,9 @@ bool amdgpu_acpi_is_s0ix_active(struct
> > > amdgpu_device *adev)
> > > (pm_suspend_target_state != PM_SUSPEND_TO_IDLE))
> > > return false;
> > >
> > > + if (adev->asic_type < CHIP_RAVEN)
> > > + return false;
> > > +
> > > /*
> > > * If ACPI_FADT_LOW_POWER_S0 is not set in the FADT, it is
> > > generally
> > > * risky to do any special firmware-related preparations for entering
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > > index 6c2fe50b528e0..1f6d93dc3d72b 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > > @@ -2414,8 +2414,10 @@ static int amdgpu_pmops_suspend(struct
> device
> > > *dev)
> > >
> > > if (amdgpu_acpi_is_s0ix_active(adev))
> > > adev->in_s0ix = true;
> > > - else
> > > + else if (amdgpu_acpi_is_s3_active(adev))
> > > adev->in_s3 = true;
> > > + if (!adev->in_s0ix && !adev->in_s3)
> > > + return 0;
> > > return amdgpu_device_suspend(drm_dev, true);
> > > }
> > >
> > > @@ -2436,6 +2438,9 @@ static int amdgpu_pmops_resume(struct device
> > > *dev)
> > > struct amdgpu_device *adev = drm_to_adev(drm_dev);
> > > int r;
> > >
> > > + if (!adev->in_s0ix && !adev->in_s3)
> > > + return 0;
> > > +
> > > /* Avoids registers access if device is physically gone */
> > > if (!pci_device_is_present(adev->pdev))
> > > adev->no_hw_access = true;
> > > --
> > > 2.25.1
More information about the amd-gfx
mailing list