The policy for whether PCI bridges are allowed to select D3 is dictated by empirical results that are enumerated into pci_bridge_d3_possible(). In Windows this behaves differently in that Windows internal policy is not used for devices when a power engine plugin driver provided by the SOC vendor is installed. This driver is used to decide the policy in those cases. This series implements a system that lets drivers register such a policy control as well. It isn't activated for any SOCs by default. This is heavily leveraged from the work in [1] [1] https://lore.kernel.org/platform-driver-x86/20230906184354.45846-1-mario.limonciello@xxxxxxx/ RFC v1->PATCH v1 * Simplify the logic, use pci_d3cold_enable()/pci_d3cold_disable() functions * Roll https://lore.kernel.org/linux-pci/20231004144731.158342-1-mario.limonciello@xxxxxxx/ into series * Updates for some typos * Re-order series. Patches 1 and 2 can potentially apply to PCI tree, 3 and 4 to platform-x86 tree. Mario Limonciello (4): PCI: Make d3cold_allowed sysfs attribute read only PCI: Refresh root ports in pci_bridge_d3_update() ACPI: x86: s2idle: Export symbol for fetching constraints for module use platform/x86/amd: pmc: Add support for using constraints to decide D3 policy Documentation/ABI/testing/sysfs-bus-pci | 4 +- drivers/acpi/x86/s2idle.c | 1 + drivers/pci/pci-acpi.c | 2 +- drivers/pci/pci-sysfs.c | 14 +----- drivers/pci/pci.c | 12 ++++-- drivers/platform/x86/amd/pmc/pmc.c | 57 +++++++++++++++++++++++++ include/linux/pci.h | 1 - 7 files changed, 72 insertions(+), 19 deletions(-) -- 2.34.1