diff options
Diffstat (limited to 'drivers/scsi/sata_mv.c')
-rw-r--r-- | drivers/scsi/sata_mv.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/scsi/sata_mv.c b/drivers/scsi/sata_mv.c index 9321cdf45680..b2bf16a9bf4b 100644 --- a/drivers/scsi/sata_mv.c +++ b/drivers/scsi/sata_mv.c | |||
@@ -431,7 +431,7 @@ static const struct ata_port_operations mv6_ops = { | |||
431 | .host_stop = mv_host_stop, | 431 | .host_stop = mv_host_stop, |
432 | }; | 432 | }; |
433 | 433 | ||
434 | static struct ata_port_info mv_port_info[] = { | 434 | static const struct ata_port_info mv_port_info[] = { |
435 | { /* chip_504x */ | 435 | { /* chip_504x */ |
436 | .sht = &mv_sht, | 436 | .sht = &mv_sht, |
437 | .host_flags = MV_COMMON_FLAGS, | 437 | .host_flags = MV_COMMON_FLAGS, |
@@ -1243,8 +1243,10 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant, | |||
1243 | VPRINTK("port %u IRQ found for qc, " | 1243 | VPRINTK("port %u IRQ found for qc, " |
1244 | "ata_status 0x%x\n", port,ata_status); | 1244 | "ata_status 0x%x\n", port,ata_status); |
1245 | /* mark qc status appropriately */ | 1245 | /* mark qc status appropriately */ |
1246 | if (!(qc->tf.ctl & ATA_NIEN)) | 1246 | if (!(qc->tf.ctl & ATA_NIEN)) { |
1247 | ata_qc_complete(qc, err_mask); | 1247 | qc->err_mask |= err_mask; |
1248 | ata_qc_complete(qc); | ||
1249 | } | ||
1248 | } | 1250 | } |
1249 | } | 1251 | } |
1250 | } | 1252 | } |
@@ -1865,7 +1867,8 @@ static void mv_eng_timeout(struct ata_port *ap) | |||
1865 | */ | 1867 | */ |
1866 | spin_lock_irqsave(&ap->host_set->lock, flags); | 1868 | spin_lock_irqsave(&ap->host_set->lock, flags); |
1867 | qc->scsidone = scsi_finish_command; | 1869 | qc->scsidone = scsi_finish_command; |
1868 | ata_qc_complete(qc, AC_ERR_OTHER); | 1870 | qc->err_mask |= AC_ERR_OTHER; |
1871 | ata_qc_complete(qc); | ||
1869 | spin_unlock_irqrestore(&ap->host_set->lock, flags); | 1872 | spin_unlock_irqrestore(&ap->host_set->lock, flags); |
1870 | } | 1873 | } |
1871 | } | 1874 | } |