mbox series

[v13,00/12] Fix wakeup problems on some AMD platforms

Message ID 20230818051319.551-1-mario.limonciello@amd.com
Headers show
Series Fix wakeup problems on some AMD platforms | expand

Message

Mario Limonciello Aug. 18, 2023, 5:13 a.m. UTC
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.

This is caused by the policy used by the Linux kernel to put PCIe root ports
into D3. This series adjusts the policy to be more conservative and only
put root ports into D3 if the platform has indicated that it is necessary
to do so.

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

Mario Limonciello (11):
  PCI: Only put Intel PCIe ports >= 2015 into D3
  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: Add a function to get constraints for a device
  PCI: ACPI: Add helper functions for converting ACPI <->PCI states
  PCI: ACPI: Use device constraints to opt devices into D3 support
  PCI: ACPI: Limit the Intel specific opt-in to D3 to 2024

 drivers/acpi/x86/s2idle.c |  99 ++++++++++++++++++++++++-------------
 drivers/pci/pci-acpi.c    | 101 +++++++++++++++++++++++++-------------
 drivers/pci/pci.c         |  18 ++++++-
 drivers/pci/pci.h         |   5 ++
 include/linux/acpi.h      |  14 ++++--
 5 files changed, 163 insertions(+), 74 deletions(-)
base-commit: 2ccdd1b13c591d306f0401d98dedc4bdcd02b421

Comments

Rafael J. Wysocki Aug. 18, 2023, 8:06 a.m. UTC | #1
On Fri, Aug 18, 2023 at 7:14 AM Mario Limonciello
<mario.limonciello@amd.com> wrote:
>
> 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.
>
> This is caused by the policy used by the Linux kernel to put PCIe root ports
> into D3. This series adjusts the policy to be more conservative and only
> put root ports into D3 if the platform has indicated that it is necessary
> to do so.
>
> Andy Shevchenko (1):
>   ACPI: x86: s2idle: Add for_each_lpi_constraint() helper
>
> Mario Limonciello (11):
>   PCI: Only put Intel PCIe ports >= 2015 into D3
>   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: Add a function to get constraints for a device
>   PCI: ACPI: Add helper functions for converting ACPI <->PCI states
>   PCI: ACPI: Use device constraints to opt devices into D3 support
>   PCI: ACPI: Limit the Intel specific opt-in to D3 to 2024

I think that patches [02-08/11] can be applied before the rest of the series.

In fact, I'd like to do that and expose a forward-only branch containing them.

Then, patches [1,09-11/11] will become a separate PCI/ACPI specific
series that should be somewhat easier to grasp.

What do you think?
Mario Limonciello Aug. 18, 2023, 1:53 p.m. UTC | #2
On 8/18/2023 03:06, Rafael J. Wysocki wrote:
> On Fri, Aug 18, 2023 at 7:14 AM Mario Limonciello
> <mario.limonciello@amd.com> wrote:
>>
>> 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.
>>
>> This is caused by the policy used by the Linux kernel to put PCIe root ports
>> into D3. This series adjusts the policy to be more conservative and only
>> put root ports into D3 if the platform has indicated that it is necessary
>> to do so.
>>
>> Andy Shevchenko (1):
>>    ACPI: x86: s2idle: Add for_each_lpi_constraint() helper
>>
>> Mario Limonciello (11):
>>    PCI: Only put Intel PCIe ports >= 2015 into D3
>>    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: Add a function to get constraints for a device
>>    PCI: ACPI: Add helper functions for converting ACPI <->PCI states
>>    PCI: ACPI: Use device constraints to opt devices into D3 support
>>    PCI: ACPI: Limit the Intel specific opt-in to D3 to 2024
> 
> I think that patches [02-08/11] can be applied before the rest of the series.
> 
> In fact, I'd like to do that and expose a forward-only branch containing them.
> 
> Then, patches [1,09-11/11] will become a separate PCI/ACPI specific
> series that should be somewhat easier to grasp.
> 
> What do you think?

Sure, this makes sense to me, but we'll still need to land it in the 
same maintainer's tree since there are new symbols.

I'll adjust for the other feedback and split it into two series.