diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 7a0d8933853a..7c11ae0e4e99 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -2857,6 +2857,17 @@ static inline bool nvme_acpi_storage_d3(struct pci_dev *dev) } #endif /* CONFIG_ACPI */ +static bool nvme_amd_renoir_d3_quirk(struct pci_dev *pdev) +{ + struct pci_dev *rc; + + rc = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus), 0, 0); + if (rc && rc->vendor == PCI_VENDOR_ID_AMD && rc->device == 0x1630) + return true; + + return false; +} + static void nvme_async_probe(void *data, async_cookie_t cookie) { struct nvme_dev *dev = data; @@ -2906,7 +2917,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) quirks |= check_vendor_combination_bug(pdev); - if (!noacpi && nvme_acpi_storage_d3(pdev)) { + if (!noacpi && nvme_acpi_storage_d3(pdev) || nvme_amd_renoir_d3_quirk(pdev)) { /* * Some systems use a bios work around to ask for D3 on * platforms that support kernel managed suspend.