Loading drivers/scsi/libata-core.c +0 −95 Original line number Diff line number Diff line Loading @@ -4124,101 +4124,6 @@ static void ata_pio_task(void *_data) goto fsm_start; } /** * ata_qc_timeout - Handle timeout of queued command * @qc: Command that timed out * * Some part of the kernel (currently, only the SCSI layer) * has noticed that the active command on port @ap has not * completed after a specified length of time. Handle this * condition by disabling DMA (if necessary) and completing * transactions, with error if necessary. * * This also handles the case of the "lost interrupt", where * for some reason (possibly hardware bug, possibly driver bug) * an interrupt was not delivered to the driver, even though the * transaction completed successfully. * * LOCKING: * Inherited from SCSI layer (none, can sleep) */ static void ata_qc_timeout(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; struct ata_host_set *host_set = ap->host_set; u8 host_stat = 0, drv_stat; unsigned long flags; DPRINTK("ENTER\n"); ap->hsm_task_state = HSM_ST_IDLE; spin_lock_irqsave(&host_set->lock, flags); switch (qc->tf.protocol) { case ATA_PROT_DMA: case ATA_PROT_ATAPI_DMA: host_stat = ap->ops->bmdma_status(ap); /* before we do anything else, clear DMA-Start bit */ ap->ops->bmdma_stop(qc); /* fall through */ default: ata_altstatus(ap); drv_stat = ata_chk_status(ap); /* ack bmdma irq events */ ap->ops->irq_clear(ap); printk(KERN_ERR "ata%u: command 0x%x timeout, stat 0x%x host_stat 0x%x\n", ap->id, qc->tf.command, drv_stat, host_stat); ap->hsm_task_state = HSM_ST_IDLE; /* complete taskfile transaction */ qc->err_mask |= AC_ERR_TIMEOUT; break; } spin_unlock_irqrestore(&host_set->lock, flags); ata_eh_qc_complete(qc); DPRINTK("EXIT\n"); } /** * ata_eng_timeout - Handle timeout of queued command * @ap: Port on which timed-out command is active * * Some part of the kernel (currently, only the SCSI layer) * has noticed that the active command on port @ap has not * completed after a specified length of time. Handle this * condition by disabling DMA (if necessary) and completing * transactions, with error if necessary. * * This also handles the case of the "lost interrupt", where * for some reason (possibly hardware bug, possibly driver bug) * an interrupt was not delivered to the driver, even though the * transaction completed successfully. * * LOCKING: * Inherited from SCSI layer (none, can sleep) */ void ata_eng_timeout(struct ata_port *ap) { DPRINTK("ENTER\n"); ata_qc_timeout(ata_qc_from_tag(ap, ap->active_tag)); DPRINTK("EXIT\n"); } /** * ata_qc_new - Request an available ATA command, for queueing * @ap: Port associated with device @dev Loading drivers/scsi/libata-eh.c +4 −1 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ int ata_scsi_error(struct Scsi_Host *host) * LOCKING: * Inherited from SCSI layer (none, can sleep) */ static void ata_qc_timeout(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; Loading Loading @@ -171,8 +172,10 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) printk(KERN_ERR "ata%u: command 0x%x timeout, stat 0x%x host_stat 0x%x\n", ap->id, qc->tf.command, drv_stat, host_stat); ap->hsm_task_state = HSM_ST_IDLE; /* complete taskfile transaction */ qc->err_mask |= ac_err_mask(drv_stat); qc->err_mask |= AC_ERR_TIMEOUT; break; } Loading Loading
drivers/scsi/libata-core.c +0 −95 Original line number Diff line number Diff line Loading @@ -4124,101 +4124,6 @@ static void ata_pio_task(void *_data) goto fsm_start; } /** * ata_qc_timeout - Handle timeout of queued command * @qc: Command that timed out * * Some part of the kernel (currently, only the SCSI layer) * has noticed that the active command on port @ap has not * completed after a specified length of time. Handle this * condition by disabling DMA (if necessary) and completing * transactions, with error if necessary. * * This also handles the case of the "lost interrupt", where * for some reason (possibly hardware bug, possibly driver bug) * an interrupt was not delivered to the driver, even though the * transaction completed successfully. * * LOCKING: * Inherited from SCSI layer (none, can sleep) */ static void ata_qc_timeout(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; struct ata_host_set *host_set = ap->host_set; u8 host_stat = 0, drv_stat; unsigned long flags; DPRINTK("ENTER\n"); ap->hsm_task_state = HSM_ST_IDLE; spin_lock_irqsave(&host_set->lock, flags); switch (qc->tf.protocol) { case ATA_PROT_DMA: case ATA_PROT_ATAPI_DMA: host_stat = ap->ops->bmdma_status(ap); /* before we do anything else, clear DMA-Start bit */ ap->ops->bmdma_stop(qc); /* fall through */ default: ata_altstatus(ap); drv_stat = ata_chk_status(ap); /* ack bmdma irq events */ ap->ops->irq_clear(ap); printk(KERN_ERR "ata%u: command 0x%x timeout, stat 0x%x host_stat 0x%x\n", ap->id, qc->tf.command, drv_stat, host_stat); ap->hsm_task_state = HSM_ST_IDLE; /* complete taskfile transaction */ qc->err_mask |= AC_ERR_TIMEOUT; break; } spin_unlock_irqrestore(&host_set->lock, flags); ata_eh_qc_complete(qc); DPRINTK("EXIT\n"); } /** * ata_eng_timeout - Handle timeout of queued command * @ap: Port on which timed-out command is active * * Some part of the kernel (currently, only the SCSI layer) * has noticed that the active command on port @ap has not * completed after a specified length of time. Handle this * condition by disabling DMA (if necessary) and completing * transactions, with error if necessary. * * This also handles the case of the "lost interrupt", where * for some reason (possibly hardware bug, possibly driver bug) * an interrupt was not delivered to the driver, even though the * transaction completed successfully. * * LOCKING: * Inherited from SCSI layer (none, can sleep) */ void ata_eng_timeout(struct ata_port *ap) { DPRINTK("ENTER\n"); ata_qc_timeout(ata_qc_from_tag(ap, ap->active_tag)); DPRINTK("EXIT\n"); } /** * ata_qc_new - Request an available ATA command, for queueing * @ap: Port associated with device @dev Loading
drivers/scsi/libata-eh.c +4 −1 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ int ata_scsi_error(struct Scsi_Host *host) * LOCKING: * Inherited from SCSI layer (none, can sleep) */ static void ata_qc_timeout(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; Loading Loading @@ -171,8 +172,10 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) printk(KERN_ERR "ata%u: command 0x%x timeout, stat 0x%x host_stat 0x%x\n", ap->id, qc->tf.command, drv_stat, host_stat); ap->hsm_task_state = HSM_ST_IDLE; /* complete taskfile transaction */ qc->err_mask |= ac_err_mask(drv_stat); qc->err_mask |= AC_ERR_TIMEOUT; break; } Loading