]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nvme-pci: disable APST for Samsung NVMe SSD 960 EVO + ASUS PRIME Z370-A
authorJarosław Janik <jaroslaw.janik@gmail.com>
Sun, 11 Mar 2018 18:51:56 +0000 (19:51 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:52:29 +0000 (07:52 +0200)
[ Upstream commit 467c77d4cbefaaf65e2f44fe102d543a52fcae5b ]

Yet another "incompatible" Samsung NVMe SSD 960 EVO and Asus motherboard
combination. 960 EVO device disappears from PCIe bus within few minutes
after boot-up when APST is in use and never gets back. Forcing
NVME_QUIRK_NO_APST is the only way to make this drive work with this
particular motherboard. NVME_QUIRK_NO_DEEPEST_PS doesn't work, upgrading
motherboard's BIOS didn't help either.
Since this is a desktop motherboard, the only drawback of not using APST
is increased device temperature.

Signed-off-by: Jarosław Janik <jaroslaw.janik@gmail.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvme/host/pci.c

index 1b9dbd3c1be667191e007bbcfccbb21a97ec7ca9..3d4724e38aa996d3f1b07870a51c4f66ce7dd257 100644 (file)
@@ -2314,10 +2314,13 @@ static unsigned long check_vendor_combination_bug(struct pci_dev *pdev)
        } else if (pdev->vendor == 0x144d && pdev->device == 0xa804) {
                /*
                 * Samsung SSD 960 EVO drops off the PCIe bus after system
-                * suspend on a Ryzen board, ASUS PRIME B350M-A.
+                * suspend on a Ryzen board, ASUS PRIME B350M-A, as well as
+                * within few minutes after bootup on a Coffee Lake board -
+                * ASUS PRIME Z370-A
                 */
                if (dmi_match(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC.") &&
-                   dmi_match(DMI_BOARD_NAME, "PRIME B350M-A"))
+                   (dmi_match(DMI_BOARD_NAME, "PRIME B350M-A") ||
+                    dmi_match(DMI_BOARD_NAME, "PRIME Z370-A")))
                        return NVME_QUIRK_NO_APST;
        }