diff options
Diffstat (limited to 'ahci-disable-MSI-instead-of-NCQ-on-Samsung-pci-e-SSD.patch')
-rw-r--r-- | ahci-disable-MSI-instead-of-NCQ-on-Samsung-pci-e-SSD.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/ahci-disable-MSI-instead-of-NCQ-on-Samsung-pci-e-SSD.patch b/ahci-disable-MSI-instead-of-NCQ-on-Samsung-pci-e-SSD.patch new file mode 100644 index 000000000..64d0e44f7 --- /dev/null +++ b/ahci-disable-MSI-instead-of-NCQ-on-Samsung-pci-e-SSD.patch @@ -0,0 +1,67 @@ +From: Tejun Heo <tj@kernel.org> +Date: Mon, 27 Oct 2014 10:30:52 -0400 +Subject: [PATCH] ahci: disable MSI instead of NCQ on Samsung pci-e SSDs on + macbooks + +From 44aecdabc85087e7c299d7a28e095e2b91894a51 Mon Sep 17 00:00:00 2001 +From: Tejun Heo <tj@kernel.org> +Date: Mon, 27 Oct 2014 10:22:56 -0400 + +Samsung pci-e SSDs on macbooks failed miserably on NCQ commands, so +67809f85d31e ("ahci: disable NCQ on Samsung pci-e SSDs on macbooks") +disabled NCQ on them. It turns out that NCQ is fine as long as MSI is +not used, so let's turn off MSI and leave NCQ on. + +Signed-off-by: Tejun Heo <tj@kernel.org> +Link: https://bugzilla.kernel.org/show_bug.cgi?id=60731 +Tested-by: <dorin@i51.org> +Tested-by: Imre Kaloz <kaloz@openwrt.org> +Cc: stable@vger.kernel.org +Fixes: 67809f85d31e ("ahci: disable NCQ on Samsung pci-e SSDs on macbooks") +--- + drivers/ata/ahci.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c +index 5f039f191067..ef4b647b3ed2 100644 +--- a/drivers/ata/ahci.c ++++ b/drivers/ata/ahci.c +@@ -60,6 +60,7 @@ enum board_ids { + /* board IDs by feature in alphabetical order */ + board_ahci, + board_ahci_ign_iferr, ++ board_ahci_nomsi, + board_ahci_noncq, + board_ahci_nosntf, + board_ahci_yes_fbs, +@@ -121,6 +122,13 @@ static const struct ata_port_info ahci_port_info[] = { + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_ops, + }, ++ [board_ahci_nomsi] = { ++ AHCI_HFLAGS (AHCI_HFLAG_NO_MSI), ++ .flags = AHCI_FLAG_COMMON, ++ .pio_mask = ATA_PIO4, ++ .udma_mask = ATA_UDMA6, ++ .port_ops = &ahci_ops, ++ }, + [board_ahci_noncq] = { + AHCI_HFLAGS (AHCI_HFLAG_NO_NCQ), + .flags = AHCI_FLAG_COMMON, +@@ -475,10 +483,10 @@ static const struct pci_device_id ahci_pci_tbl[] = { + { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */ + + /* +- * Samsung SSDs found on some macbooks. NCQ times out. +- * https://bugzilla.kernel.org/show_bug.cgi?id=60731 ++ * Samsung SSDs found on some macbooks. NCQ times out if MSI is ++ * enabled. https://bugzilla.kernel.org/show_bug.cgi?id=60731 + */ +- { PCI_VDEVICE(SAMSUNG, 0x1600), board_ahci_noncq }, ++ { PCI_VDEVICE(SAMSUNG, 0x1600), board_ahci_nomsi }, + + /* Enmotus */ + { PCI_DEVICE(0x1c44, 0x8000), board_ahci }, +-- +1.9.3 + |