Re: [PATCH 0/3] On AMD platforms only offer s2idle w/ proper FW

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/11/2022 11:05, Rafael J. Wysocki wrote:
On Tue, Jan 11, 2022 at 5:23 PM Limonciello, Mario
<mario.limonciello@xxxxxxx> wrote:

+Alex

On 1/11/2022 09:52, Rafael J. Wysocki wrote:
On Wed, Jan 5, 2022 at 8:39 PM Mario Limonciello
<mario.limonciello@xxxxxxx> wrote:

Currently the Linux kernel will offer s2idle regardless of whether the FADT
indicates the system should use or on X86 if the LPS0 ACPI device has been
activated.

On some non-AMD platforms s2idle can be offered even without proper
firmware support.  The power consumption may be higher in these instances
but the system otherwise properly suspends and resumes.

Well, the idea is that s2idle should not require FW support at all. >

May I ask - why?  It's an intentional design decision?

Yes, it is.

It may not be possible to reach the minimum power level of the
platform without FW support, but that should not prevent s2idle from
being used.

On AMD platforms however when the FW has been configured not to offer
s2idle some different hardware initialization has occurred such that the
system won't properly resume.

That's rather unfortunate.

Can you please share some details on what's going on in those cases?

Technically, without FW support there should be no difference between
the platform state reachable via s2idle and the platform state
reachable via runtime idle.

During resume there is a number of page faults that occur and during
initialization the ring tests fail.  The graphics is unusable at this
time as a result.

The amdgpu code actually *does* distinguish between the 3 different
cases of S3, S0ix, and runtime suspend.

But s2idle doesn't guarantee S0ix in any case.

The function "amdgpu_acpi_is_s0ix_active" causes different codepaths to
be used during the suspend routine.

Well, as I said, s2idle need not mean S0ix.

In this particular case that FADT doesn't set the low power idle bit
and that function returns false meaning the s3 codepath is taken but
the hardware didn't go through a reset.

If there is a separate S3 code path, taking it when
pm_suspend_target_state == PM_SUSPEND_TO_IDLE is incorrect.

It *might* also be possible to solve this by mandating an ASIC reset in
such a case (we didn't try).

I'd rather do a PM-runtime path equivalent if the target sleep state
is PM_SUSPEND_TO_IDLE and there is no FW support for S0ix.

However it comes back to my first upleveveled question - is this a case
we really want to support and encourage?  This type of bug and
combination of codepaths is not a case that is going to be well tested.
This patch series will align the kernel behavior to only what AMD validates.

But this does not follow the definition of s2idle and its documentation.

Very well, we'll work out in amdgpu what we can do. Please close the kernel bugzilla (I don't have permissions).



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux