linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v14.a 1/1] PCI: Only put Intel PCIe ports >= 2015 into D3
@ 2023-08-18 19:39 Mario Limonciello
  2023-08-21 18:17 ` Rafael J. Wysocki
  2023-08-21 22:42 ` Bjorn Helgaas
  0 siblings, 2 replies; 9+ messages in thread
From: Mario Limonciello @ 2023-08-18 19:39 UTC (permalink / raw)
  To: Mika Westerberg, Rafael J . Wysocki, Bjorn Helgaas
  Cc: linux-pci, linux-kernel, linux-acpi, Iain Lane, Andy Shevchenko,
	Kuppuswamy Sathyanarayanan, Mario Limonciello, stable

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-external-USB-keyboard/m-p/5217121
Reviewed-by:Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
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


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-08-28 20:11 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-18 19:39 [PATCH v14.a 1/1] PCI: Only put Intel PCIe ports >= 2015 into D3 Mario Limonciello
2023-08-21 18:17 ` Rafael J. Wysocki
2023-08-21 22:42 ` Bjorn Helgaas
2023-08-22  2:32   ` Limonciello, Mario
2023-08-22 10:11   ` Rafael J. Wysocki
2023-08-23  0:02     ` Bjorn Helgaas
2023-08-23  5:04       ` Lukas Wunner
2023-08-23 11:46         ` Bjorn Helgaas
2023-08-28 20:10           ` Lukas Wunner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).