aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-06-21 10:12:48 -0400
committerJeff Garzik <jeff@garzik.org>2006-06-22 23:22:39 -0400
commit71f0737b2889b86f774a94afaf1342c2c0d61cb5 (patch)
treee983d3f4c3fccad0679aa8ae18a0c3ce91bfafe7
parent8fa29b23d9e0ef976dc578aab98297d4f24f70da (diff)
[PATCH] ahci: disable NCQ support on vt8251
vt8251 chokes on NCQ commands. Two different disks from different vendors are showing the same symptom and it seems that the windows driver from via doesn't support NCQ either. Disable NCQ support on this controller for the time being. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Aalderd Bouwman <boac@wanadoo.nl> Cc: Bastiaan Jacques <b.jacques@planet.nl> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/scsi/ahci.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index df779ba8749d..4bb77f62b3b9 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -164,6 +164,7 @@ enum {
164 164
165 /* ap->flags bits */ 165 /* ap->flags bits */
166 AHCI_FLAG_RESET_NEEDS_CLO = (1 << 24), 166 AHCI_FLAG_RESET_NEEDS_CLO = (1 << 24),
167 AHCI_FLAG_NO_NCQ = (1 << 25),
167}; 168};
168 169
169struct ahci_cmd_hdr { 170struct ahci_cmd_hdr {
@@ -277,7 +278,7 @@ static const struct ata_port_info ahci_port_info[] = {
277 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 278 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
278 ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | 279 ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
279 ATA_FLAG_SKIP_D2H_BSY | 280 ATA_FLAG_SKIP_D2H_BSY |
280 AHCI_FLAG_RESET_NEEDS_CLO, 281 AHCI_FLAG_RESET_NEEDS_CLO | AHCI_FLAG_NO_NCQ,
281 .pio_mask = 0x1f, /* pio0-4 */ 282 .pio_mask = 0x1f, /* pio0-4 */
282 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 283 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
283 .port_ops = &ahci_ops, 284 .port_ops = &ahci_ops,
@@ -1386,7 +1387,8 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
1386 if (rc) 1387 if (rc)
1387 goto err_out_hpriv; 1388 goto err_out_hpriv;
1388 1389
1389 if (hpriv->cap & HOST_CAP_NCQ) 1390 if (!(probe_ent->host_flags & AHCI_FLAG_NO_NCQ) &&
1391 (hpriv->cap & HOST_CAP_NCQ))
1390 probe_ent->host_flags |= ATA_FLAG_NCQ; 1392 probe_ent->host_flags |= ATA_FLAG_NCQ;
1391 1393
1392 ahci_print_info(probe_ent); 1394 ahci_print_info(probe_ent);