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 D3hot and AMD's platform can't handle USB devices waking the platform from a hardware sleep state in this case. The firmware doesn't express this limitation in a way that Linux recognizes so this series introduces a quirk for this problem. Previous submissions: * v19 https://lore.kernel.org/linux-pci/20230915023354.939-1-mario.limonciello@xxxxxxx/ * v18 https://lore.kernel.org/linux-usb/20230913040832.114610-1-mario.limonciello@xxxxxxx/T/#m92a2654129d5f6be5439d8a94fb36734804763c1 * v17 https://lore.kernel.org/platform-driver-x86/20230906184354.45846-1-mario.limonciello@xxxxxxx/ This version implemented constraints for the amd-pmc driver and introduced a veto/optin system for the PCI core as suggested by Hans. Rafael suggested not to use the veto/optin system and instead use a quirk. * v16 https://lore.kernel.org/platform-driver-x86/20230829171212.156688-1-mario.limonciello@xxxxxxx/ This version implemented constraints for the amd-pmc driver. * v15 https://lore.kernel.org/platform-driver-x86/20230828042819.47013-1-mario.limonciello@xxxxxxx/#t This version hardcoded the quirk into amd-pmc driver as part of suspend callback. * v14 https://lore.kernel.org/linux-pci/20230818193932.27187-1-mario.limonciello@xxxxxxx/ https://lore.kernel.org/linux-pci/20230818194007.27410-1-mario.limonciello@xxxxxxx/ https://lore.kernel.org/linux-pci/20230818194027.27559-1-mario.limonciello@xxxxxxx/ This version implemented constraints exporting and limited the policy for >= 2015 to Intel only. It also added support for constraints optin. V13 was split into multiple parts to make it easier to land. 14.b was merged. * v13 https://lore.kernel.org/linux-pci/20230818051319.551-1-mario.limonciello@xxxxxxx/ * v12 https://lore.kernel.org/linux-pci/20230816204143.66281-1-mario.limonciello@xxxxxxx/ * v11 https://lore.kernel.org/linux-pci/20230809185453.40916-1-mario.limonciello@xxxxxxx/ * v10 https://lore.kernel.org/linux-pci/20230804210129.5356-1-mario.limonciello@xxxxxxx/ * v9 https://lore.kernel.org/linux-pci/20230804010229.3664-1-mario.limonciello@xxxxxxx/ * v8 https://lore.kernel.org/linux-pci/20230802201013.910-1-mario.limonciello@xxxxxxx/ * v7 https://lore.kernel.org/linux-pci/20230711005325.1499-1-mario.limonciello@xxxxxxx/ * v6 https://lore.kernel.org/linux-pci/20230708214457.1229-1-mario.limonciello@xxxxxxx/ * v5 https://lore.kernel.org/linux-pci/20230530163947.230418-1-mario.limonciello@xxxxxxx/ * v4 https://lore.kernel.org/linux-pci/20230524190726.17012-1-mario.limonciello@xxxxxxx/ * v3 https://lore.kernel.org/linux-pci/20230524152136.1033-1-mario.limonciello@xxxxxxx/ * v2 https://lore.kernel.org/linux-pci/20230517150827.89819-1-mario.limonciello@xxxxxxx/ * v1 https://lore.kernel.org/linux-pci/20230515231515.1440-1-mario.limonciello@xxxxxxx/ Mario Limonciello (2): PCI: Move the `PCI_CLASS_SERIAL_USB_USB4` definition to common header PCI: Add a quirk for AMD PCIe root ports w/ USB4 controllers drivers/pci/quirks.c | 71 +++++++++++++++++++++++++++++++++++++++ drivers/thunderbolt/nhi.h | 2 -- include/linux/pci_ids.h | 1 + 3 files changed, 72 insertions(+), 2 deletions(-) -- 2.34.1