On Fri, Aug 18, 2023 at 9:40 PM Mario Limonciello <mario.limonciello@xxxxxxx> wrote: > > commit 9d26d3a8f1b0 ("PCI: Put PCIe ports into D3 during suspend") > changed pci_bridge_d3_possible() so that any vendor's PCIe ports > from modern machines (>=2015) are allowed to be put into D3. > > Iain reports that USB devices can't be used to wake a Lenovo Z13 > from suspend. This is because the PCIe root port has been put > into D3 and AMD's platform can't handle USB devices waking in this > case. > > This behavior is only reported on Linux. Comparing the behavior > on Windows and Linux, Windows doesn't put the root ports into D3. > > To fix the issue without regressing existing Intel systems, > limit the >=2015 check to only apply to Intel PCIe ports. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 9d26d3a8f1b0 ("PCI: Put PCIe ports into D3 during suspend") > Reported-by: Iain Lane <iain@xxxxxxxxxxxxxxxxxxx> > Closes: https://forums.lenovo.com/t5/Ubuntu/Z13-can-t-resume-from-suspend-with-external-USB-keyboard/m-p/5217121 > Reviewed-by:Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> Acked-by: Rafael J. Wysocki <rafael@xxxxxxxxxx> > --- > In v14 this series has been split into 3 parts. > part A: Immediate fix for AMD issue. > part B: LPS0 export improvements > part C: Long term solution for all vendors > v13->v14: > * Reword the comment > * add tag > v12->v13: > * New patch > --- > drivers/pci/pci.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index 60230da957e0c..bfdad2eb36d13 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -3037,10 +3037,15 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge) > return false; > > /* > - * It should be safe to put PCIe ports from 2015 or newer > - * to D3. > + * Allow Intel PCIe ports from 2015 onward to go into D3 to > + * achieve additional energy conservation on some platforms. > + * > + * This is only set for Intel PCIe ports as it causes problems > + * on both AMD Rembrandt and Phoenix platforms where USB keyboards > + * can not be used to wake the system from suspend. > */ > - if (dmi_get_bios_year() >= 2015) > + if (bridge->vendor == PCI_VENDOR_ID_INTEL && > + dmi_get_bios_year() >= 2015) > return true; > break; > } > -- > 2.34.1 >