[PATCH v12 0/9] Fix wakeup problems on some AMD platforms

From: Mario Limonciello
Date: Wed Aug 16 2023 - 18:11:25 EST


Problems have been reported on AMD laptops with suspend/resume
where particular root ports are put into D3 and then the system is unable
to resume properly.

The issue boils down to the currently selected kernel policy for root port
behavior at suspend time:
0) If the machine is from 2015 or later
1) If a PCIe root port is power manageable by the platform then platform
will be used to determine the power state of the root port at suspend.
2) If the PCIe root is not power manageable by the platform then the kernel
will check if it was configured to wakeup.
3) If it was, then it will be put into the deepest state that supports
wakeup from PME.
4) If it wasn't, then it will be put into D3hot.

This patch series adjusts it so that PCI device constraints for low power
idle are considered when the system is put into s2idle.

Andy Shevchenko (1):
ACPI: x86: s2idle: Add for_each_lpi_constraint() helper

Mario Limonciello (8):
ACPI: Add comments to clarify some #ifdef statements
ACPI: Adjust #ifdef for *_lps0_dev use
ACPI: x86: s2idle: Post-increment variables when getting constraints
ACPI: x86: s2idle: Catch multiple ACPI_TYPE_PACKAGE objects
ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table
ACPI: x86: s2idle: Add more debugging for AMD constraints parsing
ACPI: x86: s2idle: Store if constraint is enabled
ACPI: x86: s2idle: Enforce LPS0 constraints for PCI devices

drivers/acpi/x86/s2idle.c | 131 +++++++++++++++++++++++++-------------
include/linux/acpi.h | 8 +--
2 files changed, 90 insertions(+), 49 deletions(-)


base-commit: 2ccdd1b13c591d306f0401d98dedc4bdcd02b421
--
2.34.1