68 lines
2.2 KiB
Diff
68 lines
2.2 KiB
Diff
|
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
|
||
|
|