Skip to content

Commit 3aa8f65

Browse files
committed
Merge branch 'pci/pm'
- Avoid D3 for Root Ports on TUXEDO Sirius Gen1 with old BIOS because the system can't wake up from suspend (Werner Sembach) * pci/pm: PCI: Avoid putting some root ports into D3 on TUXEDO Sirius Gen1
2 parents 60b5cd4 + b1049f2 commit 3aa8f65

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

arch/x86/pci/fixup.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,4 +1010,34 @@ DECLARE_PCI_FIXUP_SUSPEND(PCI_VENDOR_ID_AMD, 0x1668, amd_rp_pme_suspend);
10101010
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, 0x1668, amd_rp_pme_resume);
10111011
DECLARE_PCI_FIXUP_SUSPEND(PCI_VENDOR_ID_AMD, 0x1669, amd_rp_pme_suspend);
10121012
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, 0x1669, amd_rp_pme_resume);
1013+
1014+
/*
1015+
* Putting PCIe root ports on Ryzen SoCs with USB4 controllers into D3hot
1016+
* may cause problems when the system attempts wake up from s2idle.
1017+
*
1018+
* On the TUXEDO Sirius 16 Gen 1 with a specific old BIOS this manifests as
1019+
* a system hang.
1020+
*/
1021+
static const struct dmi_system_id quirk_tuxeo_rp_d3_dmi_table[] = {
1022+
{
1023+
.matches = {
1024+
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
1025+
DMI_EXACT_MATCH(DMI_BOARD_NAME, "APX958"),
1026+
DMI_EXACT_MATCH(DMI_BIOS_VERSION, "V1.00A00_20240108"),
1027+
},
1028+
},
1029+
{}
1030+
};
1031+
1032+
static void quirk_tuxeo_rp_d3(struct pci_dev *pdev)
1033+
{
1034+
struct pci_dev *root_pdev;
1035+
1036+
if (dmi_check_system(quirk_tuxeo_rp_d3_dmi_table)) {
1037+
root_pdev = pcie_find_root_port(pdev);
1038+
if (root_pdev)
1039+
root_pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3;
1040+
}
1041+
}
1042+
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, 0x1502, quirk_tuxeo_rp_d3);
10131043
#endif /* CONFIG_SUSPEND */

0 commit comments

Comments
 (0)