Try the kernel here, it adds a delay before controller reset.
http://people.canonical.com/~khfeng/lp1705748-2/
---
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index f15f4017fb95..1dc42006a8fd 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -2308,6 +2308,8 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, { PCI_DEVICE(0x1c5f, 0x0540), /* Memblaze Pblaze4 adapter */ .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, + { PCI_DEVICE(0x144d, 0xa804), /* Samsung SM961/PM961 */ + .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, { PCI_DEVICE(0x144d, 0xa821), /* Samsung PM1725 */ .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, { PCI_DEVICE(0x144d, 0xa822), /* Samsung PM1725a */
Try the kernel here, it adds a delay before controller reset.
http:// people. canonical. com/~khfeng/ lp1705748- 2/
---
diff --git a/drivers/ nvme/host/ pci.c b/drivers/ nvme/host/ pci.c .1dc42006a8fd 100644 nvme/host/ pci.c nvme/host/ pci.c
.driver_ data = NVME_QUIRK_ DELAY_BEFORE_ CHK_RDY, },
.driver_ data = NVME_QUIRK_ DELAY_BEFORE_ CHK_RDY, }, DELAY_BEFORE_ CHK_RDY, },
.driver_ data = NVME_QUIRK_ DELAY_BEFORE_ CHK_RDY, },
index f15f4017fb95.
--- a/drivers/
+++ b/drivers/
@@ -2308,6 +2308,8 @@ static const struct pci_device_id nvme_id_table[] = {
{ PCI_DEVICE(0x1c5f, 0x0540), /* Memblaze Pblaze4 adapter */
+ { PCI_DEVICE(0x144d, 0xa804), /* Samsung SM961/PM961 */
+ .driver_data = NVME_QUIRK_
{ PCI_DEVICE(0x144d, 0xa821), /* Samsung PM1725 */
{ PCI_DEVICE(0x144d, 0xa822), /* Samsung PM1725a */