|
@@ -4937,6 +4937,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
|
|
inline unsigned int ata_host_intr (struct ata_port *ap,
|
|
inline unsigned int ata_host_intr (struct ata_port *ap,
|
|
struct ata_queued_cmd *qc)
|
|
struct ata_queued_cmd *qc)
|
|
{
|
|
{
|
|
|
|
+ struct ata_eh_info *ehi = &ap->eh_info;
|
|
u8 status, host_stat = 0;
|
|
u8 status, host_stat = 0;
|
|
|
|
|
|
VPRINTK("ata%u: protocol %d task_state %d\n",
|
|
VPRINTK("ata%u: protocol %d task_state %d\n",
|
|
@@ -4997,6 +4998,11 @@ inline unsigned int ata_host_intr (struct ata_port *ap,
|
|
ap->ops->irq_clear(ap);
|
|
ap->ops->irq_clear(ap);
|
|
|
|
|
|
ata_hsm_move(ap, qc, status, 0);
|
|
ata_hsm_move(ap, qc, status, 0);
|
|
|
|
+
|
|
|
|
+ if (unlikely(qc->err_mask) && (qc->tf.protocol == ATA_PROT_DMA ||
|
|
|
|
+ qc->tf.protocol == ATA_PROT_ATAPI_DMA))
|
|
|
|
+ ata_ehi_push_desc(ehi, "BMDMA stat 0x%x", host_stat);
|
|
|
|
+
|
|
return 1; /* irq handled */
|
|
return 1; /* irq handled */
|
|
|
|
|
|
idle_irq:
|
|
idle_irq:
|