AMD Prepares Linux Fix For Some Laptops Not Resuming From s2idle Suspend
For some modern Ryzen-powered laptops there have been reports recently of some failures in resuming from suspend-to-idle, even after recent AMD s2idle Linux fixes.
The issue appears to stem from the fact that currently Linux just assumes to offer s2idle even if the Fixed ACPI Hardware Table (FADT) doesn't directly indicate it or if there is not an low power S0 (LPS0) device activated. For at least some Intel hardware, s2idle can handle the suspend/resume cycle out even without proper firmware support... AMD hardware, however, cannot without the necessary firmware bits aligning.
This new patch series thus checks for the proper prerequisites before enabling s2idle support on AMD hardware. So now if the firmware support is not present/enabled, s2idle won't be offered to avoid potentially failing to resume when S3 should be used instead.
One of the patches from AMD's Mario Limonciello goes on to explain, "On some OEM platforms a BIOS option is offered that will set the sleep mode between S3 and S2idle. This option will change certain [hardware] behaviors. When in S2idle mode, Linux works properly. However when S3 mode is picked but the user chooses S2idle in Linux the platform may not be properly resumed. To avoid users getting into this situation, don't offer s2idle on AMD systems missing the LPS0 device either by a BIOS option or by using the acpi "no_sleep_lps0" module parameter."
The Lenovo P14s Gen2 with Ryzen 5000 series "Cezanne" SoCs are known to be affected by this issue but likely numerous other laptops too. It's good to see these patches out there now but surprising such firmware checks were not added in the first place for the x86 ACPI s2idle code or spotted previously with AMD working on the s2idle Linux support for more than one year.