diff options
author | Mark Lord <liml@rtr.ca> | 2008-01-26 18:32:09 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2008-02-01 11:29:47 -0500 |
commit | cb92441973ebd71d556fc7cdd9e597582327dd71 (patch) | |
tree | 0e57ca3fbfaccd586f8bacd48a819305c805a1ac | |
parent | 8c0aeb4a483334613336ef895f34cecc0ecbbfa6 (diff) |
sata_mv ncq Ignore response status LSB on NCQ
The lower 8 bits of response status are not valid for NCQ.
Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/ata/sata_mv.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index c60255810e68..207c400c64df 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -1590,13 +1590,12 @@ static void mv_intr_edma(struct ata_port *ap) | |||
1590 | 1590 | ||
1591 | qc = ata_qc_from_tag(ap, tag); | 1591 | qc = ata_qc_from_tag(ap, tag); |
1592 | 1592 | ||
1593 | /* lower 8 bits of status are EDMA_ERR_IRQ_CAUSE_OFS | 1593 | /* For non-NCQ mode, the lower 8 bits of status |
1594 | * bits (WARNING: might not necessarily be associated | 1594 | * are from EDMA_ERR_IRQ_CAUSE_OFS, |
1595 | * with this command), which -should- be clear | 1595 | * which should be zero if all went well. |
1596 | * if all is well | ||
1597 | */ | 1596 | */ |
1598 | status = le16_to_cpu(pp->crpb[out_index].flags); | 1597 | status = le16_to_cpu(pp->crpb[out_index].flags); |
1599 | if (unlikely(status & 0xff)) { | 1598 | if ((status & 0xff) && !(pp->pp_flags & MV_PP_FLAG_NCQ_EN)) { |
1600 | mv_err_intr(ap, qc); | 1599 | mv_err_intr(ap, qc); |
1601 | return; | 1600 | return; |
1602 | } | 1601 | } |