diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 14629a3..387235f 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -4453,9 +4453,13 @@ fsm_start: if (likely(status & (ATA_ERR | ATA_DF))) /* device stops HSM for abort/error */ qc->err_mask |= AC_ERR_DEV; - else + else { /* HSM violation. Let EH handle this */ + ata_port_printk(ap, KERN_WARNING, + "!DRQ on HSM_ST_FIRST (0x%x)\n", + status); qc->err_mask |= AC_ERR_HSM; + } ap->hsm_task_state = HSM_ST_ERR; goto fsm_start; @@ -4547,13 +4551,17 @@ fsm_start: if (likely(status & (ATA_ERR | ATA_DF))) /* device stops HSM for abort/error */ qc->err_mask |= AC_ERR_DEV; - else + else { + ata_port_printk(ap, KERN_WARNING, + "!DRQ on HSM_ST (0x%x)\n", + status); /* HSM violation. Let EH handle this. * Phantom devices also trigger this * condition. Mark hint. */ qc->err_mask |= AC_ERR_HSM | AC_ERR_NODEV_HINT; + } ap->hsm_task_state = HSM_ST_ERR; goto fsm_start; @@ -4579,8 +4587,12 @@ fsm_start: status = ata_wait_idle(ap); } - if (status & (ATA_BUSY | ATA_DRQ)) + if (status & (ATA_BUSY | ATA_DRQ)) { + ata_port_printk(ap, KERN_WARNING, + "BUSY|DRQ on ERR|DF (0x%x)\n", + status); qc->err_mask |= AC_ERR_HSM; + } /* ata_pio_sectors() might change the * state to HSM_ST_LAST. so, the state