aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/libata-core.c6
-rw-r--r--drivers/ata/libata-sff.c3
-rw-r--r--drivers/ata/sata_sil.c5
3 files changed, 11 insertions, 3 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index b35fdcb104ec..7f53ea725bce 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4937,6 +4937,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
4937inline unsigned int ata_host_intr (struct ata_port *ap, 4937inline unsigned int ata_host_intr (struct ata_port *ap,
4938 struct ata_queued_cmd *qc) 4938 struct ata_queued_cmd *qc)
4939{ 4939{
4940 struct ata_eh_info *ehi = &ap->eh_info;
4940 u8 status, host_stat = 0; 4941 u8 status, host_stat = 0;
4941 4942
4942 VPRINTK("ata%u: protocol %d task_state %d\n", 4943 VPRINTK("ata%u: protocol %d task_state %d\n",
@@ -4997,6 +4998,11 @@ inline unsigned int ata_host_intr (struct ata_port *ap,
4997 ap->ops->irq_clear(ap); 4998 ap->ops->irq_clear(ap);
4998 4999
4999 ata_hsm_move(ap, qc, status, 0); 5000 ata_hsm_move(ap, qc, status, 0);
5001
5002 if (unlikely(qc->err_mask) && (qc->tf.protocol == ATA_PROT_DMA ||
5003 qc->tf.protocol == ATA_PROT_ATAPI_DMA))
5004 ata_ehi_push_desc(ehi, "BMDMA stat 0x%x", host_stat);
5005
5000 return 1; /* irq handled */ 5006 return 1; /* irq handled */
5001 5007
5002idle_irq: 5008idle_irq:
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index a57de4a5aa45..95ff186f0ccd 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -743,7 +743,6 @@ void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset,
743 ata_reset_fn_t softreset, ata_reset_fn_t hardreset, 743 ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
744 ata_postreset_fn_t postreset) 744 ata_postreset_fn_t postreset)
745{ 745{
746 struct ata_eh_context *ehc = &ap->eh_context;
747 struct ata_queued_cmd *qc; 746 struct ata_queued_cmd *qc;
748 unsigned long flags; 747 unsigned long flags;
749 int thaw = 0; 748 int thaw = 0;
@@ -763,8 +762,6 @@ void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset,
763 762
764 host_stat = ap->ops->bmdma_status(ap); 763 host_stat = ap->ops->bmdma_status(ap);
765 764
766 ata_ehi_push_desc(&ehc->i, "BMDMA stat 0x%x", host_stat);
767
768 /* BMDMA controllers indicate host bus error by 765 /* BMDMA controllers indicate host bus error by
769 * setting DMA_ERR bit and timing out. As it wasn't 766 * setting DMA_ERR bit and timing out. As it wasn't
770 * really a timeout event, adjust error mask and 767 * really a timeout event, adjust error mask and
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c
index f844a1faba18..7808d0369d91 100644
--- a/drivers/ata/sata_sil.c
+++ b/drivers/ata/sata_sil.c
@@ -356,6 +356,7 @@ static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val)
356 356
357static void sil_host_intr(struct ata_port *ap, u32 bmdma2) 357static void sil_host_intr(struct ata_port *ap, u32 bmdma2)
358{ 358{
359 struct ata_eh_info *ehi = &ap->eh_info;
359 struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag); 360 struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag);
360 u8 status; 361 u8 status;
361 362
@@ -428,6 +429,10 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2)
428 /* kick HSM in the ass */ 429 /* kick HSM in the ass */
429 ata_hsm_move(ap, qc, status, 0); 430 ata_hsm_move(ap, qc, status, 0);
430 431
432 if (unlikely(qc->err_mask) && (qc->tf.protocol == ATA_PROT_DMA ||
433 qc->tf.protocol == ATA_PROT_ATAPI_DMA))
434 ata_ehi_push_desc(ehi, "BMDMA2 stat 0x%x", bmdma2);
435
431 return; 436 return;
432 437
433 err_hsm: 438 err_hsm: