Re: [PATCH v13 01/12] PCI: Only put Intel PCIe ports >= 2015 into D3

From: Mario Limonciello
Date: Fri Aug 18 2023 - 09:55:34 EST


On 8/18/2023 04:19, Rafael J. Wysocki wrote:
On Fri, Aug 18, 2023 at 10:21 AM David Laight <David.Laight@xxxxxxxxxx> wrote:

From: Rafael J. Wysocki
Sent: Friday, August 18, 2023 9:12 AM

On Fri, Aug 18, 2023 at 7:14 AM 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.

...
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).

Just say why...

"Don't put root ports into D3 on non-Intel systems to avoid issues
with USB devices being unable to wake up some AMD based laptops."

Well, both pieces of information are actually useful: Why it is done
on Intel systems in the first place and why it cannot be done on AMD
systems.

Thanks guys, I'll add both in next version.