[PATCH v14.c 4/4] PCI: ACPI: Limit the Intel specific opt-in to D3 to 2024

From: Mario Limonciello
Date: Fri Aug 18 2023 - 15:41:52 EST


Intel systems that need to have PCIe ports in D3 for low power idle
specify this by constraints on the ACPI PNP0D80 device. As this information
is queried by acpi_pci_bridge_d3(), limit the DMI BIOS year check to stop
at 2024. This will allow future systems to rely on the constraints check
and ACPI checks to set up policy like non-Intel systems do.

Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
---
v13->v14:
* Use a variable instead
v12->v13:
* New patch
---
drivers/pci/pci.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index bfdad2eb36d13..c8787d898c377 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3037,16 +3037,22 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
return false;

/*
- * Allow Intel PCIe ports from 2015 onward to go into D3 to
+ * Allow Intel PCIe ports from 2015 to 2024 to go into D3 to
* achieve additional energy conservation on some platforms.
*
+ * Intel systems from 2025 onward that need this are expected
+ * to specify this in an LPS0 device constraint instead.
+ *
* 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 (bridge->vendor == PCI_VENDOR_ID_INTEL &&
- dmi_get_bios_year() >= 2015)
- return true;
+ if (bridge->vendor == PCI_VENDOR_ID_INTEL) {
+ int year = dmi_get_bios_year();
+
+ if (year >= 2015 && year <= 2024)
+ return true;
+ }
break;
}

--
2.34.1