On Fri, Aug 18, 2023 at 7:14 AM Mario Limonciello mario.limonciello@amd.com 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@vger.kernel.org Fixes: 9d26d3a8f1b0 ("PCI: Put PCIe ports into D3 during suspend") Reported-by: Iain Lane iain@orangesquash.org.uk Closes: https://forums.lenovo.com/t5/Ubuntu/Z13-can-t-resume-from-suspend-with-exter... Signed-off-by: Mario Limonciello mario.limonciello@amd.com
v12->v13:
- New patch
drivers/pci/pci.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 60230da957e0c..051e88ee64c63 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3037,10 +3037,11 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge) return false;
/*
* It should be safe to put PCIe ports from 2015 or newer
* It is safe to put Intel PCIe ports from 2015 or newer * to D3. */
I would say "Allow Intel PCIe ports from 2015 onward to go into D3 to achieve additional energy conservation on some platforms" without the "It is safe" part that is kind of obvious (it wouldn't be done if it were unsafe).
And analogously in patch [12/12].
if (dmi_get_bios_year() >= 2015)
if (bridge->vendor == PCI_VENDOR_ID_INTEL &&
dmi_get_bios_year() >= 2015) return true; break; }
-- 2.34.1