Patch "nvme-pci: disable APST on Samsung SSD 960 EVO + ASUS PRIME B350M-A" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
nvme-pci: disable APST on Samsung SSD 960 EVO + ASUS PRIME B350M-A
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
nvme-pci-disable-apst-on-samsung-ssd-960-evo-asus-prime-b350m-a.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Feb 1 13:45:42 CET 2018
From: Kai-Heng Feng <[email protected]>
Date: Thu, 9 Nov 2017 01:12:03 -0500
Subject: nvme-pci: disable APST on Samsung SSD 960 EVO + ASUS PRIME B350M-A
From: Kai-Heng Feng <[email protected]>
[ Upstream commit 8427bbc224863e14d905c87920d4005cb3e88ac3 ]
The NVMe device in question drops off the PCIe bus after system suspend. I've tried several approaches to workaround this issue, but none of them works:
- NVME_QUIRK_DELAY_BEFORE_CHK_RDY
- NVME_QUIRK_NO_DEEPEST_PS
- Disable APST before controller shutdown
- Delay between controller shutdown and system suspend
- Explicitly set power state to 0 before controller shutdown
Fortunately it's a desktop, so disable APST won't hurt the battery.
Also, change the quirk function name to reflect it's for vendor combination quirks.
--- drivers/nvme/host/pci.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
drivers/nvme/host/pci.c +10 -2
@@ -2282,7 +2282,7 @@ static int nvme_dev_map(struct nvme_devreturn -ENODEV ; } -static unsigned long check_dell_samsung_bug (struct pci_dev *pdev) +static unsigned long check_vendor_combination_bug (struct pci_dev *pdev) {if (pdev->vendor ==0x144d && pdev->device ==0xa802 ) {/*
@@ -2297,6 +2297,14 @@ static unsigned long check_dell_samsung_ (dmi_match(DMI_PRODUCT_NAME, "XPS 15 9550") || dmi_match(DMI_PRODUCT_NAME, "Precision 5510")))return NVME_QUIRK_NO_DEEPEST_PS ; + }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. +*/ +if (dmi_match (DMI_BOARD_VENDOR ,"ASUSTeK COMPUTER INC." ) && +dmi_match (DMI_BOARD_NAME ,"PRIME B350M-A" )) +return NVME_QUIRK_NO_APST ; }return 0 ;
@@ -2336,7 +2344,7 @@ static int nvme_probe(struct pci_dev *pdif (result) goto unmap; - quirks |=check_dell_samsung_bug (pdev); + quirks |=check_vendor_combination_bug (pdev); result =nvme_init_ctrl (&dev->ctrl, &pdev->dev, &nvme_pci_ctrl_ops, quirks);
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/nvme-pci-disable-apst-on-samsung-ssd-960-evo-asus-prime-b350m-a.patch