Loading drivers/scsi/ahci.c +6 −1 Original line number Diff line number Diff line Loading @@ -586,12 +586,16 @@ static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) static void ahci_eng_timeout(struct ata_port *ap) { void *mmio = ap->host_set->mmio_base; struct ata_host_set *host_set = ap->host_set; void *mmio = host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); struct ata_queued_cmd *qc; unsigned long flags; DPRINTK("ENTER\n"); spin_lock_irqsave(&host_set->lock, flags); ahci_intr_error(ap, readl(port_mmio + PORT_IRQ_STAT)); qc = ata_qc_from_tag(ap, ap->active_tag); Loading @@ -609,6 +613,7 @@ static void ahci_eng_timeout(struct ata_port *ap) ata_qc_complete(qc, ATA_ERR); } spin_unlock_irqrestore(&host_set->lock, flags); } static inline int ahci_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc) Loading drivers/scsi/libata-core.c +12 −2 Original line number Diff line number Diff line Loading @@ -2388,12 +2388,13 @@ static int ata_sg_setup(struct ata_queued_cmd *qc) void ata_poll_qc_complete(struct ata_queued_cmd *qc, u8 drv_stat) { struct ata_port *ap = qc->ap; unsigned long flags; spin_lock_irq(&ap->host_set->lock); spin_lock_irqsave(&ap->host_set->lock, flags); ap->flags &= ~ATA_FLAG_NOINTR; ata_irq_on(ap); ata_qc_complete(qc, drv_stat); spin_unlock_irq(&ap->host_set->lock); spin_unlock_irqrestore(&ap->host_set->lock, flags); } /** Loading Loading @@ -2973,8 +2974,10 @@ static void atapi_request_sense(struct ata_port *ap, struct ata_device *dev, 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; struct ata_device *dev = qc->dev; u8 host_stat = 0, drv_stat; unsigned long flags; DPRINTK("ENTER\n"); Loading @@ -2985,7 +2988,9 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) if (!(cmd->eh_eflags & SCSI_EH_CANCEL_CMD)) { /* finish completing original command */ spin_lock_irqsave(&host_set->lock, flags); __ata_qc_complete(qc); spin_unlock_irqrestore(&host_set->lock, flags); atapi_request_sense(ap, dev, cmd); Loading @@ -2996,6 +3001,8 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) } } spin_lock_irqsave(&host_set->lock, flags); /* hack alert! We cannot use the supplied completion * function from inside the ->eh_strategy_handler() thread. * libata is the only user of ->eh_strategy_handler() in Loading Loading @@ -3029,6 +3036,9 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) ata_qc_complete(qc, drv_stat); break; } spin_unlock_irqrestore(&host_set->lock, flags); out: DPRINTK("EXIT\n"); } Loading drivers/scsi/sata_promise.c +5 −0 Original line number Diff line number Diff line Loading @@ -325,11 +325,15 @@ static void pdc_qc_prep(struct ata_queued_cmd *qc) static void pdc_eng_timeout(struct ata_port *ap) { struct ata_host_set *host_set = ap->host_set; u8 drv_stat; struct ata_queued_cmd *qc; unsigned long flags; DPRINTK("ENTER\n"); spin_lock_irqsave(&host_set->lock, flags); qc = ata_qc_from_tag(ap, ap->active_tag); if (!qc) { printk(KERN_ERR "ata%u: BUG: timeout without command\n", Loading Loading @@ -363,6 +367,7 @@ static void pdc_eng_timeout(struct ata_port *ap) } out: spin_unlock_irqrestore(&host_set->lock, flags); DPRINTK("EXIT\n"); } Loading drivers/scsi/sata_sx4.c +5 −0 Original line number Diff line number Diff line Loading @@ -848,10 +848,14 @@ static irqreturn_t pdc20621_interrupt (int irq, void *dev_instance, struct pt_re static void pdc_eng_timeout(struct ata_port *ap) { u8 drv_stat; struct ata_host_set *host_set = ap->host_set; struct ata_queued_cmd *qc; unsigned long flags; DPRINTK("ENTER\n"); spin_lock_irqsave(&host_set->lock, flags); qc = ata_qc_from_tag(ap, ap->active_tag); if (!qc) { printk(KERN_ERR "ata%u: BUG: timeout without command\n", Loading Loading @@ -885,6 +889,7 @@ static void pdc_eng_timeout(struct ata_port *ap) } out: spin_unlock_irqrestore(&host_set->lock, flags); DPRINTK("EXIT\n"); } Loading Loading
drivers/scsi/ahci.c +6 −1 Original line number Diff line number Diff line Loading @@ -586,12 +586,16 @@ static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) static void ahci_eng_timeout(struct ata_port *ap) { void *mmio = ap->host_set->mmio_base; struct ata_host_set *host_set = ap->host_set; void *mmio = host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); struct ata_queued_cmd *qc; unsigned long flags; DPRINTK("ENTER\n"); spin_lock_irqsave(&host_set->lock, flags); ahci_intr_error(ap, readl(port_mmio + PORT_IRQ_STAT)); qc = ata_qc_from_tag(ap, ap->active_tag); Loading @@ -609,6 +613,7 @@ static void ahci_eng_timeout(struct ata_port *ap) ata_qc_complete(qc, ATA_ERR); } spin_unlock_irqrestore(&host_set->lock, flags); } static inline int ahci_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc) Loading
drivers/scsi/libata-core.c +12 −2 Original line number Diff line number Diff line Loading @@ -2388,12 +2388,13 @@ static int ata_sg_setup(struct ata_queued_cmd *qc) void ata_poll_qc_complete(struct ata_queued_cmd *qc, u8 drv_stat) { struct ata_port *ap = qc->ap; unsigned long flags; spin_lock_irq(&ap->host_set->lock); spin_lock_irqsave(&ap->host_set->lock, flags); ap->flags &= ~ATA_FLAG_NOINTR; ata_irq_on(ap); ata_qc_complete(qc, drv_stat); spin_unlock_irq(&ap->host_set->lock); spin_unlock_irqrestore(&ap->host_set->lock, flags); } /** Loading Loading @@ -2973,8 +2974,10 @@ static void atapi_request_sense(struct ata_port *ap, struct ata_device *dev, 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; struct ata_device *dev = qc->dev; u8 host_stat = 0, drv_stat; unsigned long flags; DPRINTK("ENTER\n"); Loading @@ -2985,7 +2988,9 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) if (!(cmd->eh_eflags & SCSI_EH_CANCEL_CMD)) { /* finish completing original command */ spin_lock_irqsave(&host_set->lock, flags); __ata_qc_complete(qc); spin_unlock_irqrestore(&host_set->lock, flags); atapi_request_sense(ap, dev, cmd); Loading @@ -2996,6 +3001,8 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) } } spin_lock_irqsave(&host_set->lock, flags); /* hack alert! We cannot use the supplied completion * function from inside the ->eh_strategy_handler() thread. * libata is the only user of ->eh_strategy_handler() in Loading Loading @@ -3029,6 +3036,9 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) ata_qc_complete(qc, drv_stat); break; } spin_unlock_irqrestore(&host_set->lock, flags); out: DPRINTK("EXIT\n"); } Loading
drivers/scsi/sata_promise.c +5 −0 Original line number Diff line number Diff line Loading @@ -325,11 +325,15 @@ static void pdc_qc_prep(struct ata_queued_cmd *qc) static void pdc_eng_timeout(struct ata_port *ap) { struct ata_host_set *host_set = ap->host_set; u8 drv_stat; struct ata_queued_cmd *qc; unsigned long flags; DPRINTK("ENTER\n"); spin_lock_irqsave(&host_set->lock, flags); qc = ata_qc_from_tag(ap, ap->active_tag); if (!qc) { printk(KERN_ERR "ata%u: BUG: timeout without command\n", Loading Loading @@ -363,6 +367,7 @@ static void pdc_eng_timeout(struct ata_port *ap) } out: spin_unlock_irqrestore(&host_set->lock, flags); DPRINTK("EXIT\n"); } Loading
drivers/scsi/sata_sx4.c +5 −0 Original line number Diff line number Diff line Loading @@ -848,10 +848,14 @@ static irqreturn_t pdc20621_interrupt (int irq, void *dev_instance, struct pt_re static void pdc_eng_timeout(struct ata_port *ap) { u8 drv_stat; struct ata_host_set *host_set = ap->host_set; struct ata_queued_cmd *qc; unsigned long flags; DPRINTK("ENTER\n"); spin_lock_irqsave(&host_set->lock, flags); qc = ata_qc_from_tag(ap, ap->active_tag); if (!qc) { printk(KERN_ERR "ata%u: BUG: timeout without command\n", Loading Loading @@ -885,6 +889,7 @@ static void pdc_eng_timeout(struct ata_port *ap) } out: spin_unlock_irqrestore(&host_set->lock, flags); DPRINTK("EXIT\n"); } Loading