Replace spin_lock_irqsave with spin_lock in hard IRQ of SCSI drivers. There are no function changes, but may speed up if interrupt happen too often.
Xiaofei Tan (32): scsi: 53c700: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: ipr: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: lpfc: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: qla4xxx: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: BusLogic: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: a100u2w: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: a2091: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: a3000: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: aha1740: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: bfa: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: esp_scsi: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: gvp11: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: hptiop: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: ibmvscsi: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: initio: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: megaraid: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: mac53c94: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: mesh: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: mvumi: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: myrb: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: myrs: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: ncr53c8xx: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: nsp32: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: pmcraid: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: pcmcia: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: qlogicfas408: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: qlogicpti: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: sgiwd93: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: stex: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: vmw_pvscsi: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: wd719x: Replace spin_lock_irqsave with spin_lock in hard IRQ scsi: advansys: Replace spin_lock_irqsave with spin_lock in hard IRQ
drivers/scsi/53c700.c | 5 ++-- drivers/scsi/BusLogic.c | 5 ++-- drivers/scsi/a100u2w.c | 5 ++-- drivers/scsi/a2091.c | 5 ++-- drivers/scsi/a3000.c | 5 ++-- drivers/scsi/advansys.c | 5 ++-- drivers/scsi/aha1740.c | 5 ++-- drivers/scsi/bfa/bfad.c | 20 ++++++------- drivers/scsi/esp_scsi.c | 5 ++-- drivers/scsi/gvp11.c | 5 ++-- drivers/scsi/hptiop.c | 5 ++-- drivers/scsi/ibmvscsi/ibmvfc.c | 5 ++-- drivers/scsi/initio.c | 5 ++-- drivers/scsi/ipr.c | 21 ++++++------- drivers/scsi/lpfc/lpfc_sli.c | 49 +++++++++++++------------------ drivers/scsi/mac53c94.c | 5 ++-- drivers/scsi/megaraid.c | 10 +++---- drivers/scsi/megaraid/megaraid_sas_base.c | 5 ++-- drivers/scsi/mesh.c | 5 ++-- drivers/scsi/mvumi.c | 7 ++--- drivers/scsi/myrb.c | 20 +++++-------- drivers/scsi/myrs.c | 15 ++++------ drivers/scsi/ncr53c8xx.c | 5 ++-- drivers/scsi/nsp32.c | 5 ++-- drivers/scsi/pcmcia/sym53c500_cs.c | 5 ++-- drivers/scsi/pmcraid.c | 8 ++--- drivers/scsi/qla4xxx/ql4_isr.c | 15 ++++------ drivers/scsi/qlogicfas408.c | 5 ++-- drivers/scsi/qlogicpti.c | 5 ++-- drivers/scsi/sgiwd93.c | 5 ++-- drivers/scsi/stex.c | 16 +++++----- drivers/scsi/vmw_pvscsi.c | 4 +-- drivers/scsi/wd719x.c | 7 ++--- 33 files changed, 122 insertions(+), 175 deletions(-)
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/53c700.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c index 3242ff6..6c2ef46 100644 --- a/drivers/scsi/53c700.c +++ b/drivers/scsi/53c700.c @@ -1491,7 +1491,6 @@ NCR_700_intr(int irq, void *dev_id) __u8 istat; __u32 resume_offset = 0; __u8 pun = 0xff, lun = 0xff; - unsigned long flags; int handled = 0;
/* Use the host lock to serialise access to the 53c700 @@ -1499,7 +1498,7 @@ NCR_700_intr(int irq, void *dev_id) * lock to enter the done routines. When that happens, we * need to ensure that for this driver, the host lock and the * queue lock point to the same thing. */ - spin_lock_irqsave(host->host_lock, flags); + spin_lock(host->host_lock); if((istat = NCR_700_readb(host, ISTAT_REG)) & (SCSI_INT_PENDING | DMA_INT_PENDING)) { __u32 dsps; @@ -1748,7 +1747,7 @@ NCR_700_intr(int irq, void *dev_id) } } out_unlock: - spin_unlock_irqrestore(host->host_lock, flags); + spin_unlock(host->host_lock); return IRQ_RETVAL(handled); }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/ipr.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index e451102..0309e8f 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c @@ -5815,7 +5815,6 @@ static irqreturn_t ipr_isr(int irq, void *devp) { struct ipr_hrr_queue *hrrq = (struct ipr_hrr_queue *)devp; struct ipr_ioa_cfg *ioa_cfg = hrrq->ioa_cfg; - unsigned long hrrq_flags = 0; u32 int_reg = 0; int num_hrrq = 0; int irq_none = 0; @@ -5823,10 +5822,10 @@ static irqreturn_t ipr_isr(int irq, void *devp) irqreturn_t rc = IRQ_NONE; LIST_HEAD(doneq);
- spin_lock_irqsave(hrrq->lock, hrrq_flags); + spin_lock(hrrq->lock); /* If interrupts are disabled, ignore the interrupt */ if (!hrrq->allow_interrupts) { - spin_unlock_irqrestore(hrrq->lock, hrrq_flags); + spin_unlock(hrrq->lock); return IRQ_NONE; }
@@ -5862,7 +5861,7 @@ static irqreturn_t ipr_isr(int irq, void *devp) if (unlikely(rc == IRQ_NONE)) rc = ipr_handle_other_interrupt(ioa_cfg, int_reg);
- spin_unlock_irqrestore(hrrq->lock, hrrq_flags); + spin_unlock(hrrq->lock); list_for_each_entry_safe(ipr_cmd, temp, &doneq, queue) { list_del(&ipr_cmd->queue); del_timer(&ipr_cmd->timer); @@ -5883,16 +5882,15 @@ static irqreturn_t ipr_isr_mhrrq(int irq, void *devp) { struct ipr_hrr_queue *hrrq = (struct ipr_hrr_queue *)devp; struct ipr_ioa_cfg *ioa_cfg = hrrq->ioa_cfg; - unsigned long hrrq_flags = 0; struct ipr_cmnd *ipr_cmd, *temp; irqreturn_t rc = IRQ_NONE; LIST_HEAD(doneq);
- spin_lock_irqsave(hrrq->lock, hrrq_flags); + spin_lock(hrrq->lock);
/* If interrupts are disabled, ignore the interrupt */ if (!hrrq->allow_interrupts) { - spin_unlock_irqrestore(hrrq->lock, hrrq_flags); + spin_unlock(hrrq->lock); return IRQ_NONE; }
@@ -5900,7 +5898,7 @@ static irqreturn_t ipr_isr_mhrrq(int irq, void *devp) if ((be32_to_cpu(*hrrq->hrrq_curr) & IPR_HRRQ_TOGGLE_BIT) == hrrq->toggle_bit) { irq_poll_sched(&hrrq->iopoll); - spin_unlock_irqrestore(hrrq->lock, hrrq_flags); + spin_unlock(hrrq->lock); return IRQ_HANDLED; } } else { @@ -5911,7 +5909,7 @@ static irqreturn_t ipr_isr_mhrrq(int irq, void *devp) rc = IRQ_HANDLED; }
- spin_unlock_irqrestore(hrrq->lock, hrrq_flags); + spin_unlock(hrrq->lock);
list_for_each_entry_safe(ipr_cmd, temp, &doneq, queue) { list_del(&ipr_cmd->queue); @@ -10087,16 +10085,15 @@ static int ipr_request_other_msi_irqs(struct ipr_ioa_cfg *ioa_cfg, static irqreturn_t ipr_test_intr(int irq, void *devp) { struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)devp; - unsigned long lock_flags = 0; irqreturn_t rc = IRQ_HANDLED;
dev_info(&ioa_cfg->pdev->dev, "Received IRQ : %d\n", irq); - spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); + spin_lock(ioa_cfg->host->host_lock);
ioa_cfg->msi_received = 1; wake_up(&ioa_cfg->msi_wait_q);
- spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); + spin_unlock(ioa_cfg->host->host_lock); return rc; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/lpfc/lpfc_sli.c | 49 +++++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 28 deletions(-)
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index fa1a714..6928750 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c @@ -12792,7 +12792,6 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) uint32_t ha_copy, hc_copy; uint32_t work_ha_copy; unsigned long status; - unsigned long iflag; uint32_t control;
MAILBOX_t *mbox, *pmbox; @@ -12820,7 +12819,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) if (lpfc_intr_state_check(phba)) return IRQ_NONE; /* Need to read HA REG for slow-path events */ - spin_lock_irqsave(&phba->hbalock, iflag); + spin_lock(&phba->hbalock); if (lpfc_readl(phba->HAregaddr, &ha_copy)) goto unplug_error; /* If somebody is waiting to handle an eratt don't process it @@ -12843,7 +12842,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) * interrupt. */ if (unlikely(phba->hba_flag & DEFER_ERATT)) { - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); return IRQ_NONE; }
@@ -12858,7 +12857,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) phba->HAregaddr); writel(hc_copy, phba->HCregaddr); readl(phba->HAregaddr); /* flush */ - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); } else ha_copy = phba->ha_copy;
@@ -12871,14 +12870,14 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) * Turn off Link Attention interrupts * until CLEAR_LA done */ - spin_lock_irqsave(&phba->hbalock, iflag); + spin_lock(&phba->hbalock); phba->sli.sli_flag &= ~LPFC_PROCESS_LA; if (lpfc_readl(phba->HCregaddr, &control)) goto unplug_error; control &= ~HC_LAINT_ENA; writel(control, phba->HCregaddr); readl(phba->HCregaddr); /* flush */ - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); } else work_ha_copy &= ~HA_LATT; @@ -12893,7 +12892,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) (HA_RXMASK << (4*LPFC_ELS_RING))); status >>= (4*LPFC_ELS_RING); if (status & HA_RXMASK) { - spin_lock_irqsave(&phba->hbalock, iflag); + spin_lock(&phba->hbalock); if (lpfc_readl(phba->HCregaddr, &control)) goto unplug_error;
@@ -12923,10 +12922,10 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) (uint32_t)((unsigned long) &phba->work_waitq)); } - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); } } - spin_lock_irqsave(&phba->hbalock, iflag); + spin_lock(&phba->hbalock); if (work_ha_copy & HA_ERATT) { if (lpfc_sli_read_hs(phba)) goto unplug_error; @@ -12954,7 +12953,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) /* First check out the status word */ lpfc_sli_pcimem_bcopy(mbox, pmbox, sizeof(uint32_t)); if (pmbox->mbxOwner != OWN_HOST) { - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); /* * Stray Mailbox Interrupt, mbxCommand <cmd> * mbxStatus <status> @@ -12970,7 +12969,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) work_ha_copy &= ~HA_MBATT; } else { phba->sli.mbox_active = NULL; - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); phba->last_completion_time = jiffies; del_timer(&phba->sli.mbox_tmo); if (pmb->mbox_cmpl) { @@ -13026,14 +13025,10 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) goto send_current_mbox; } } - spin_lock_irqsave( - &phba->pport->work_port_lock, - iflag); + spin_lock(&phba->pport->work_port_lock); phba->pport->work_port_events &= ~WORKER_MBOX_TMO; - spin_unlock_irqrestore( - &phba->pport->work_port_lock, - iflag); + spin_unlock(&phba->pport->work_port_lock);
/* Do NOT queue MBX_HEARTBEAT to the worker * thread for processing. @@ -13051,7 +13046,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) } } } else - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock);
if ((work_ha_copy & HA_MBATT) && (phba->sli.mbox_active == NULL)) { @@ -13068,14 +13063,14 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id) "MBX_SUCCESS\n"); }
- spin_lock_irqsave(&phba->hbalock, iflag); + spin_lock(&phba->hbalock); phba->work_ha |= work_ha_copy; - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); lpfc_worker_wake_up(phba); } return IRQ_HANDLED; unplug_error: - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); return IRQ_HANDLED;
} /* lpfc_sli_sp_intr_handler */ @@ -13105,7 +13100,6 @@ lpfc_sli_fp_intr_handler(int irq, void *dev_id) struct lpfc_hba *phba; uint32_t ha_copy; unsigned long status; - unsigned long iflag; struct lpfc_sli_ring *pring;
/* Get the driver's phba structure from the dev_id and @@ -13128,19 +13122,19 @@ lpfc_sli_fp_intr_handler(int irq, void *dev_id) if (lpfc_readl(phba->HAregaddr, &ha_copy)) return IRQ_HANDLED; /* Clear up only attention source related to fast-path */ - spin_lock_irqsave(&phba->hbalock, iflag); + spin_lock(&phba->hbalock); /* * If there is deferred error attention, do not check for * any interrupt. */ if (unlikely(phba->hba_flag & DEFER_ERATT)) { - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); return IRQ_NONE; } writel((ha_copy & (HA_R0_CLR_MSK | HA_R1_CLR_MSK)), phba->HAregaddr); readl(phba->HAregaddr); /* flush */ - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); } else ha_copy = phba->ha_copy;
@@ -14790,7 +14784,6 @@ lpfc_sli4_hba_intr_handler(int irq, void *dev_id) struct lpfc_hba *phba; struct lpfc_hba_eq_hdl *hba_eq_hdl; struct lpfc_queue *fpeq; - unsigned long iflag; int ecount = 0; int hba_eqidx; struct lpfc_eq_intr_info *eqi; @@ -14813,11 +14806,11 @@ lpfc_sli4_hba_intr_handler(int irq, void *dev_id) /* Check device state for handling interrupt */ if (unlikely(lpfc_intr_state_check(phba))) { /* Check again for link_state with lock held */ - spin_lock_irqsave(&phba->hbalock, iflag); + spin_lock(&phba->hbalock); if (phba->link_state < LPFC_LINK_DOWN) /* Flush, clear interrupt, and rearm the EQ */ lpfc_sli4_eqcq_flush(phba, fpeq); - spin_unlock_irqrestore(&phba->hbalock, iflag); + spin_unlock(&phba->hbalock); return IRQ_NONE; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/qla4xxx/ql4_isr.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c index 6f0e77d..9c64c8b 100644 --- a/drivers/scsi/qla4xxx/ql4_isr.c +++ b/drivers/scsi/qla4xxx/ql4_isr.c @@ -1353,10 +1353,9 @@ qla4_8xxx_msi_handler(int irq, void *dev_id) static irqreturn_t qla4_83xx_mailbox_intr_handler(int irq, void *dev_id) { struct scsi_qla_host *ha = dev_id; - unsigned long flags; uint32_t ival = 0;
- spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock(&ha->hardware_lock);
ival = readl(&ha->qla4_83xx_reg->risc_intr); if (ival == 0) { @@ -1377,7 +1376,7 @@ static irqreturn_t qla4_83xx_mailbox_intr_handler(int irq, void *dev_id) writel(ival, &ha->qla4_83xx_reg->mb_int_mask); ha->isr_count++; exit: - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock(&ha->hardware_lock); return IRQ_HANDLED; }
@@ -1393,14 +1392,13 @@ irqreturn_t qla4_8xxx_default_intr_handler(int irq, void *dev_id) { struct scsi_qla_host *ha = dev_id; - unsigned long flags; uint32_t intr_status; uint8_t reqs_count = 0;
if (is_qla8032(ha) || is_qla8042(ha)) { qla4_83xx_mailbox_intr_handler(irq, dev_id); } else { - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock(&ha->hardware_lock); while (1) { if (!(readl(&ha->qla4_82xx_reg->host_int) & ISRX_82XX_RISC_INT)) { @@ -1421,7 +1419,7 @@ qla4_8xxx_default_intr_handler(int irq, void *dev_id) break; } ha->isr_count++; - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock(&ha->hardware_lock); } return IRQ_HANDLED; } @@ -1430,11 +1428,10 @@ irqreturn_t qla4_8xxx_msix_rsp_q(int irq, void *dev_id) { struct scsi_qla_host *ha = dev_id; - unsigned long flags; int intr_status; uint32_t ival = 0;
- spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock(&ha->hardware_lock); if (is_qla8032(ha) || is_qla8042(ha)) { ival = readl(&ha->qla4_83xx_reg->iocb_int_mask); if (ival == 0) { @@ -1457,7 +1454,7 @@ qla4_8xxx_msix_rsp_q(int irq, void *dev_id) } ha->isr_count++; exit_msix_rsp_q: - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock(&ha->hardware_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/BusLogic.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c index ccb061a..005809e 100644 --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c @@ -2880,11 +2880,10 @@ static void blogic_process_ccbs(struct blogic_adapter *adapter) static irqreturn_t blogic_inthandler(int irq_ch, void *devid) { struct blogic_adapter *adapter = (struct blogic_adapter *) devid; - unsigned long processor_flag; /* Acquire exclusive access to Host Adapter. */ - spin_lock_irqsave(adapter->scsi_host->host_lock, processor_flag); + spin_lock(adapter->scsi_host->host_lock); /* Handle Interrupts appropriately for each Host Adapter type. */ @@ -2952,7 +2951,7 @@ static irqreturn_t blogic_inthandler(int irq_ch, void *devid) /* Release exclusive access to Host Adapter. */ - spin_unlock_irqrestore(adapter->scsi_host->host_lock, processor_flag); + spin_unlock(adapter->scsi_host->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/a100u2w.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/a100u2w.c b/drivers/scsi/a100u2w.c index 66c5143..bcb7de6 100644 --- a/drivers/scsi/a100u2w.c +++ b/drivers/scsi/a100u2w.c @@ -1058,12 +1058,11 @@ static irqreturn_t inia100_intr(int irqno, void *devid) { struct Scsi_Host *shost = (struct Scsi_Host *)devid; struct orc_host *host = (struct orc_host *)shost->hostdata; - unsigned long flags; irqreturn_t res;
- spin_lock_irqsave(shost->host_lock, flags); + spin_lock(shost->host_lock); res = orc_interrupt(host); - spin_unlock_irqrestore(shost->host_lock, flags); + spin_unlock(shost->host_lock);
return res; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/a2091.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/a2091.c b/drivers/scsi/a2091.c index 5853db3..5b23602 100644 --- a/drivers/scsi/a2091.c +++ b/drivers/scsi/a2091.c @@ -27,14 +27,13 @@ static irqreturn_t a2091_intr(int irq, void *data) struct Scsi_Host *instance = data; struct a2091_hostdata *hdata = shost_priv(instance); unsigned int status = hdata->regs->ISTR; - unsigned long flags;
if (!(status & (ISTR_INT_F | ISTR_INT_P)) || !(status & ISTR_INTS)) return IRQ_NONE;
- spin_lock_irqsave(instance->host_lock, flags); + spin_lock(instance->host_lock); wd33c93_intr(instance); - spin_unlock_irqrestore(instance->host_lock, flags); + spin_unlock(instance->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/a3000.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c index 86f1da2..ac063a5 100644 --- a/drivers/scsi/a3000.c +++ b/drivers/scsi/a3000.c @@ -28,14 +28,13 @@ static irqreturn_t a3000_intr(int irq, void *data) struct Scsi_Host *instance = data; struct a3000_hostdata *hdata = shost_priv(instance); unsigned int status = hdata->regs->ISTR; - unsigned long flags;
if (!(status & ISTR_INT_P)) return IRQ_NONE; if (status & ISTR_INTS) { - spin_lock_irqsave(instance->host_lock, flags); + spin_lock(instance->host_lock); wd33c93_intr(instance); - spin_unlock_irqrestore(instance->host_lock, flags); + spin_unlock(instance->host_lock); return IRQ_HANDLED; } pr_warn("Non-serviced A3000 SCSI-interrupt? ISTR = %02x\n", status);
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/aha1740.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/aha1740.c b/drivers/scsi/aha1740.c index 0dc8310..fd9787d 100644 --- a/drivers/scsi/aha1740.c +++ b/drivers/scsi/aha1740.c @@ -214,14 +214,13 @@ static irqreturn_t aha1740_intr_handle(int irq, void *dev_id) struct ecb *ecbptr; struct scsi_cmnd *SCtmp; unsigned int base; - unsigned long flags; int handled = 0; struct aha1740_sg *sgptr; struct eisa_device *edev; if (!host) panic("aha1740.c: Irq from unknown host!\n"); - spin_lock_irqsave(host->host_lock, flags); + spin_lock(host->host_lock); base = host->io_port; number_serviced = 0; edev = HOSTDATA(host)->edev; @@ -308,7 +307,7 @@ static irqreturn_t aha1740_intr_handle(int irq, void *dev_id) number_serviced++; }
- spin_unlock_irqrestore(host->host_lock, flags); + spin_unlock(host->host_lock); return IRQ_RETVAL(handled); }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/bfa/bfad.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c index 440ef32..8c6f3eb 100644 --- a/drivers/scsi/bfa/bfad.c +++ b/drivers/scsi/bfa/bfad.c @@ -1089,25 +1089,24 @@ bfad_intx(int irq, void *dev_id) { struct bfad_s *bfad = dev_id; struct list_head doneq; - unsigned long flags; bfa_boolean_t rc;
- spin_lock_irqsave(&bfad->bfad_lock, flags); + spin_lock(&bfad->bfad_lock); rc = bfa_intx(&bfad->bfa); if (!rc) { - spin_unlock_irqrestore(&bfad->bfad_lock, flags); + spin_unlock(&bfad->bfad_lock); return IRQ_NONE; }
bfa_comp_deq(&bfad->bfa, &doneq); - spin_unlock_irqrestore(&bfad->bfad_lock, flags); + spin_unlock(&bfad->bfad_lock);
if (!list_empty(&doneq)) { bfa_comp_process(&bfad->bfa, &doneq);
- spin_lock_irqsave(&bfad->bfad_lock, flags); + spin_lock(&bfad->bfad_lock); bfa_comp_free(&bfad->bfa, &doneq); - spin_unlock_irqrestore(&bfad->bfad_lock, flags); + spin_unlock(&bfad->bfad_lock); }
return IRQ_HANDLED; @@ -1120,20 +1119,19 @@ bfad_msix(int irq, void *dev_id) struct bfad_msix_s *vec = dev_id; struct bfad_s *bfad = vec->bfad; struct list_head doneq; - unsigned long flags;
- spin_lock_irqsave(&bfad->bfad_lock, flags); + spin_lock(&bfad->bfad_lock);
bfa_msix(&bfad->bfa, vec->msix.entry); bfa_comp_deq(&bfad->bfa, &doneq); - spin_unlock_irqrestore(&bfad->bfad_lock, flags); + spin_unlock(&bfad->bfad_lock);
if (!list_empty(&doneq)) { bfa_comp_process(&bfad->bfa, &doneq);
- spin_lock_irqsave(&bfad->bfad_lock, flags); + spin_lock(&bfad->bfad_lock); bfa_comp_free(&bfad->bfa, &doneq); - spin_unlock_irqrestore(&bfad->bfad_lock, flags); + spin_unlock(&bfad->bfad_lock); }
return IRQ_HANDLED;
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/esp_scsi.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c index 007ccef..1e44fb5 100644 --- a/drivers/scsi/esp_scsi.c +++ b/drivers/scsi/esp_scsi.c @@ -2175,10 +2175,9 @@ static void __esp_interrupt(struct esp *esp) irqreturn_t scsi_esp_intr(int irq, void *dev_id) { struct esp *esp = dev_id; - unsigned long flags; irqreturn_t ret;
- spin_lock_irqsave(esp->host->host_lock, flags); + spin_lock(esp->host->host_lock); ret = IRQ_NONE; if (esp->ops->irq_pending(esp)) { ret = IRQ_HANDLED; @@ -2198,7 +2197,7 @@ irqreturn_t scsi_esp_intr(int irq, void *dev_id) break; } } - spin_unlock_irqrestore(esp->host->host_lock, flags); + spin_unlock(esp->host->host_lock);
return ret; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/gvp11.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/gvp11.c b/drivers/scsi/gvp11.c index 727f8c8..f164a68 100644 --- a/drivers/scsi/gvp11.c +++ b/drivers/scsi/gvp11.c @@ -29,14 +29,13 @@ static irqreturn_t gvp11_intr(int irq, void *data) struct Scsi_Host *instance = data; struct gvp11_hostdata *hdata = shost_priv(instance); unsigned int status = hdata->regs->CNTR; - unsigned long flags;
if (!(status & GVP11_DMAC_INT_PENDING)) return IRQ_NONE;
- spin_lock_irqsave(instance->host_lock, flags); + spin_lock(instance->host_lock); wd33c93_intr(instance); - spin_unlock_irqrestore(instance->host_lock, flags); + spin_unlock(instance->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/hptiop.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/hptiop.c b/drivers/scsi/hptiop.c index db4c7a7..5424e31 100644 --- a/drivers/scsi/hptiop.c +++ b/drivers/scsi/hptiop.c @@ -834,11 +834,10 @@ static irqreturn_t hptiop_intr(int irq, void *dev_id) { struct hptiop_hba *hba = dev_id; int handled; - unsigned long flags;
- spin_lock_irqsave(hba->host->host_lock, flags); + spin_lock(hba->host->host_lock); handled = hba->ops->iop_intr(hba); - spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock(hba->host->host_lock);
return handled; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/ibmvscsi/ibmvfc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c index 755313b..9afe1b2 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.c +++ b/drivers/scsi/ibmvscsi/ibmvfc.c @@ -3604,12 +3604,11 @@ static struct ibmvfc_crq *ibmvfc_next_crq(struct ibmvfc_host *vhost) static irqreturn_t ibmvfc_interrupt(int irq, void *dev_instance) { struct ibmvfc_host *vhost = (struct ibmvfc_host *)dev_instance; - unsigned long flags;
- spin_lock_irqsave(vhost->host->host_lock, flags); + spin_lock(vhost->host->host_lock); vio_disable_interrupts(to_vio_dev(vhost->dev)); tasklet_schedule(&vhost->tasklet); - spin_unlock_irqrestore(vhost->host->host_lock, flags); + spin_unlock(vhost->host->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/initio.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/initio.c b/drivers/scsi/initio.c index 814acc5..3fafa8f 100644 --- a/drivers/scsi/initio.c +++ b/drivers/scsi/initio.c @@ -2507,12 +2507,11 @@ static int initio_wait_done_disc(struct initio_host * host) static irqreturn_t i91u_intr(int irqno, void *dev_id) { struct Scsi_Host *dev = dev_id; - unsigned long flags; int r; - spin_lock_irqsave(dev->host_lock, flags); + spin_lock(dev->host_lock); r = initio_isr((struct initio_host *)dev->hostdata); - spin_unlock_irqrestore(dev->host_lock, flags); + spin_unlock(dev->host_lock); if (r) return IRQ_HANDLED; else
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/megaraid.c | 10 ++++------ drivers/scsi/megaraid/megaraid_sas_base.c | 5 ++--- 2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index 80f5469..7151752 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c @@ -1262,7 +1262,6 @@ static irqreturn_t megaraid_isr_iomapped(int irq, void *devp) { adapter_t *adapter = devp; - unsigned long flags; u8 status; u8 nstatus; u8 completed[MAX_FIRMWARE_STATUS]; @@ -1273,7 +1272,7 @@ megaraid_isr_iomapped(int irq, void *devp) /* * loop till F/W has more commands for us to complete. */ - spin_lock_irqsave(&adapter->lock, flags); + spin_lock(&adapter->lock);
do { /* Check if a valid interrupt is pending */ @@ -1319,7 +1318,7 @@ megaraid_isr_iomapped(int irq, void *devp)
out_unlock:
- spin_unlock_irqrestore(&adapter->lock, flags); + spin_unlock(&adapter->lock);
return IRQ_RETVAL(handled); } @@ -1338,7 +1337,6 @@ static irqreturn_t megaraid_isr_memmapped(int irq, void *devp) { adapter_t *adapter = devp; - unsigned long flags; u8 status; u32 dword = 0; u8 nstatus; @@ -1349,7 +1347,7 @@ megaraid_isr_memmapped(int irq, void *devp) /* * loop till F/W has more commands for us to complete. */ - spin_lock_irqsave(&adapter->lock, flags); + spin_lock(&adapter->lock);
do { /* Check if a valid interrupt is pending */ @@ -1399,7 +1397,7 @@ megaraid_isr_memmapped(int irq, void *devp)
out_unlock:
- spin_unlock_irqrestore(&adapter->lock, flags); + spin_unlock(&adapter->lock);
return IRQ_RETVAL(handled); } diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index 63a4f48..5c6bf61 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -3996,15 +3996,14 @@ static irqreturn_t megasas_isr(int irq, void *devp) { struct megasas_irq_context *irq_context = devp; struct megasas_instance *instance = irq_context->instance; - unsigned long flags; irqreturn_t rc;
if (atomic_read(&instance->fw_reset_no_pci_access)) return IRQ_HANDLED;
- spin_lock_irqsave(&instance->hba_lock, flags); + spin_lock(&instance->hba_lock); rc = megasas_deplete_reply_queue(instance, DID_OK); - spin_unlock_irqrestore(&instance->hba_lock, flags); + spin_unlock(&instance->hba_lock);
return rc; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/mac53c94.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/mac53c94.c b/drivers/scsi/mac53c94.c index 9e98977..ab59c79 100644 --- a/drivers/scsi/mac53c94.c +++ b/drivers/scsi/mac53c94.c @@ -182,12 +182,11 @@ static void mac53c94_start(struct fsc_state *state)
static irqreturn_t do_mac53c94_interrupt(int irq, void *dev_id) { - unsigned long flags; struct Scsi_Host *dev = ((struct fsc_state *) dev_id)->current_req->device->host; - spin_lock_irqsave(dev->host_lock, flags); + spin_lock(dev->host_lock); mac53c94_interrupt(irq, dev_id); - spin_unlock_irqrestore(dev->host_lock, flags); + spin_unlock(dev->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/mesh.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c index 0a9f4e4..67c660a 100644 --- a/drivers/scsi/mesh.c +++ b/drivers/scsi/mesh.c @@ -1018,13 +1018,12 @@ static void handle_reset(struct mesh_state *ms)
static irqreturn_t do_mesh_interrupt(int irq, void *dev_id) { - unsigned long flags; struct mesh_state *ms = dev_id; struct Scsi_Host *dev = ms->host; - spin_lock_irqsave(dev->host_lock, flags); + spin_lock(dev->host_lock); mesh_interrupt(ms); - spin_unlock_irqrestore(dev->host_lock, flags); + spin_unlock(dev->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/mvumi.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/mvumi.c b/drivers/scsi/mvumi.c index 71b6a1f..b36164c 100644 --- a/drivers/scsi/mvumi.c +++ b/drivers/scsi/mvumi.c @@ -1790,11 +1790,10 @@ static void mvumi_handle_clob(struct mvumi_hba *mhba) static irqreturn_t mvumi_isr_handler(int irq, void *devp) { struct mvumi_hba *mhba = (struct mvumi_hba *) devp; - unsigned long flags;
- spin_lock_irqsave(mhba->shost->host_lock, flags); + spin_lock(mhba->shost->host_lock); if (unlikely(mhba->instancet->clear_intr(mhba) || !mhba->global_isr)) { - spin_unlock_irqrestore(mhba->shost->host_lock, flags); + spin_unlock(mhba->shost->host_lock); return IRQ_NONE; }
@@ -1815,7 +1814,7 @@ static irqreturn_t mvumi_isr_handler(int irq, void *devp) mhba->isr_status = 0; if (mhba->fw_state == FW_STATE_STARTED) mvumi_handle_clob(mhba); - spin_unlock_irqrestore(mhba->shost->host_lock, flags); + spin_unlock(mhba->shost->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/myrb.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-)
diff --git a/drivers/scsi/myrb.c b/drivers/scsi/myrb.c index 3d8e91c..ecb57ee 100644 --- a/drivers/scsi/myrb.c +++ b/drivers/scsi/myrb.c @@ -2769,9 +2769,8 @@ static irqreturn_t DAC960_LA_intr_handler(int irq, void *arg) struct myrb_hba *cb = arg; void __iomem *base = cb->io_base; struct myrb_stat_mbox *next_stat_mbox; - unsigned long flags;
- spin_lock_irqsave(&cb->queue_lock, flags); + spin_lock(&cb->queue_lock); DAC960_LA_ack_intr(base); next_stat_mbox = cb->next_stat_mbox; while (next_stat_mbox->valid) { @@ -2806,7 +2805,7 @@ static irqreturn_t DAC960_LA_intr_handler(int irq, void *arg) } } cb->next_stat_mbox = next_stat_mbox; - spin_unlock_irqrestore(&cb->queue_lock, flags); + spin_unlock(&cb->queue_lock); return IRQ_HANDLED; }
@@ -3047,9 +3046,8 @@ static irqreturn_t DAC960_PG_intr_handler(int irq, void *arg) struct myrb_hba *cb = arg; void __iomem *base = cb->io_base; struct myrb_stat_mbox *next_stat_mbox; - unsigned long flags;
- spin_lock_irqsave(&cb->queue_lock, flags); + spin_lock(&cb->queue_lock); DAC960_PG_ack_intr(base); next_stat_mbox = cb->next_stat_mbox; while (next_stat_mbox->valid) { @@ -3082,7 +3080,7 @@ static irqreturn_t DAC960_PG_intr_handler(int irq, void *arg) myrb_handle_scsi(cb, cmd_blk, scmd); } cb->next_stat_mbox = next_stat_mbox; - spin_unlock_irqrestore(&cb->queue_lock, flags); + spin_unlock(&cb->queue_lock); return IRQ_HANDLED; }
@@ -3254,9 +3252,8 @@ static irqreturn_t DAC960_PD_intr_handler(int irq, void *arg) { struct myrb_hba *cb = arg; void __iomem *base = cb->io_base; - unsigned long flags;
- spin_lock_irqsave(&cb->queue_lock, flags); + spin_lock(&cb->queue_lock); while (DAC960_PD_hw_mbox_status_available(base)) { unsigned char id = DAC960_PD_read_status_cmd_ident(base); struct scsi_cmnd *scmd = NULL; @@ -3285,7 +3282,7 @@ static irqreturn_t DAC960_PD_intr_handler(int irq, void *arg) else myrb_handle_scsi(cb, cmd_blk, scmd); } - spin_unlock_irqrestore(&cb->queue_lock, flags); + spin_unlock(&cb->queue_lock); return IRQ_HANDLED; }
@@ -3420,9 +3417,8 @@ static irqreturn_t DAC960_P_intr_handler(int irq, void *arg) { struct myrb_hba *cb = arg; void __iomem *base = cb->io_base; - unsigned long flags;
- spin_lock_irqsave(&cb->queue_lock, flags); + spin_lock(&cb->queue_lock); while (DAC960_PD_hw_mbox_status_available(base)) { unsigned char id = DAC960_PD_read_status_cmd_ident(base); struct scsi_cmnd *scmd = NULL; @@ -3483,7 +3479,7 @@ static irqreturn_t DAC960_P_intr_handler(int irq, void *arg) else myrb_handle_scsi(cb, cmd_blk, scmd); } - spin_unlock_irqrestore(&cb->queue_lock, flags); + spin_unlock(&cb->queue_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/myrs.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c index 4adf9de..59379fc 100644 --- a/drivers/scsi/myrs.c +++ b/drivers/scsi/myrs.c @@ -2615,9 +2615,8 @@ static irqreturn_t DAC960_GEM_intr_handler(int irq, void *arg) struct myrs_hba *cs = arg; void __iomem *base = cs->io_base; struct myrs_stat_mbox *next_stat_mbox; - unsigned long flags;
- spin_lock_irqsave(&cs->queue_lock, flags); + spin_lock(&cs->queue_lock); DAC960_GEM_ack_intr(base); next_stat_mbox = cs->next_stat_mbox; while (next_stat_mbox->id > 0) { @@ -2654,7 +2653,7 @@ static irqreturn_t DAC960_GEM_intr_handler(int irq, void *arg) } } cs->next_stat_mbox = next_stat_mbox; - spin_unlock_irqrestore(&cs->queue_lock, flags); + spin_unlock(&cs->queue_lock); return IRQ_HANDLED; }
@@ -2865,9 +2864,8 @@ static irqreturn_t DAC960_BA_intr_handler(int irq, void *arg) struct myrs_hba *cs = arg; void __iomem *base = cs->io_base; struct myrs_stat_mbox *next_stat_mbox; - unsigned long flags;
- spin_lock_irqsave(&cs->queue_lock, flags); + spin_lock(&cs->queue_lock); DAC960_BA_ack_intr(base); next_stat_mbox = cs->next_stat_mbox; while (next_stat_mbox->id > 0) { @@ -2904,7 +2902,7 @@ static irqreturn_t DAC960_BA_intr_handler(int irq, void *arg) } } cs->next_stat_mbox = next_stat_mbox; - spin_unlock_irqrestore(&cs->queue_lock, flags); + spin_unlock(&cs->queue_lock); return IRQ_HANDLED; }
@@ -3115,9 +3113,8 @@ static irqreturn_t DAC960_LP_intr_handler(int irq, void *arg) struct myrs_hba *cs = arg; void __iomem *base = cs->io_base; struct myrs_stat_mbox *next_stat_mbox; - unsigned long flags;
- spin_lock_irqsave(&cs->queue_lock, flags); + spin_lock(&cs->queue_lock); DAC960_LP_ack_intr(base); next_stat_mbox = cs->next_stat_mbox; while (next_stat_mbox->id > 0) { @@ -3154,7 +3151,7 @@ static irqreturn_t DAC960_LP_intr_handler(int irq, void *arg) } } cs->next_stat_mbox = next_stat_mbox; - spin_unlock_irqrestore(&cs->queue_lock, flags); + spin_unlock(&cs->queue_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/ncr53c8xx.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c index c76e9f0..84e0bb6 100644 --- a/drivers/scsi/ncr53c8xx.c +++ b/drivers/scsi/ncr53c8xx.c @@ -8069,7 +8069,6 @@ static DEF_SCSI_QCMD(ncr53c8xx_queue_command)
irqreturn_t ncr53c8xx_intr(int irq, void *dev_id) { - unsigned long flags; struct Scsi_Host *shost = (struct Scsi_Host *)dev_id; struct host_data *host_data = (struct host_data *)shost->hostdata; struct ncb *np = host_data->ncb; @@ -8081,11 +8080,11 @@ irqreturn_t ncr53c8xx_intr(int irq, void *dev_id)
if (DEBUG_FLAGS & DEBUG_TINY) printk ("[");
- spin_lock_irqsave(&np->smp_lock, flags); + spin_lock(&np->smp_lock); ncr_exception(np); done_list = np->done_list; np->done_list = NULL; - spin_unlock_irqrestore(&np->smp_lock, flags); + spin_unlock(&np->smp_lock);
if (DEBUG_FLAGS & DEBUG_TINY) printk ("]\n");
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/nsp32.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c index e44b1a0..d927fde 100644 --- a/drivers/scsi/nsp32.c +++ b/drivers/scsi/nsp32.c @@ -1152,12 +1152,11 @@ static irqreturn_t do_nsp32_isr(int irq, void *dev_id) struct scsi_cmnd *SCpnt = data->CurrentSC; unsigned short auto_stat, irq_stat, trans_stat; unsigned char busmon, busphase; - unsigned long flags; int ret; int handled = 0; struct Scsi_Host *host = data->Host;
- spin_lock_irqsave(host->host_lock, flags); + spin_lock(host->host_lock);
/* * IRQ check, then enable IRQ mask @@ -1421,7 +1420,7 @@ static irqreturn_t do_nsp32_isr(int irq, void *dev_id) nsp32_write2(base, IRQ_CONTROL, 0);
out2: - spin_unlock_irqrestore(host->host_lock, flags); + spin_unlock(host->host_lock);
nsp32_dbg(NSP32_DEBUG_INTR, "exit");
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/pmcraid.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index 834556e..5967284 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c @@ -4145,7 +4145,6 @@ static irqreturn_t pmcraid_isr_msix(int irq, void *dev_id) { struct pmcraid_isr_param *hrrq_vector; struct pmcraid_instance *pinstance; - unsigned long lock_flags; u32 intrs_val; int hrrq_id;
@@ -4170,12 +4169,9 @@ static irqreturn_t pmcraid_isr_msix(int irq, void *dev_id)
pmcraid_err("ISR: error interrupts: %x \ initiating reset\n", intrs_val); - spin_lock_irqsave(pinstance->host->host_lock, - lock_flags); + spin_lock(pinstance->host->host_lock); pmcraid_initiate_reset(pinstance); - spin_unlock_irqrestore( - pinstance->host->host_lock, - lock_flags); + spin_unlock(pinstance->host->host_lock); } /* If interrupt was as part of the ioa initialization, * clear it. Delete the timer and wakeup the
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/pcmcia/sym53c500_cs.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c index a366ff1..67719de 100644 --- a/drivers/scsi/pcmcia/sym53c500_cs.c +++ b/drivers/scsi/pcmcia/sym53c500_cs.c @@ -341,7 +341,6 @@ SYM53C500_pio_write(int fast_pio, int base, unsigned char *request, unsigned int static irqreturn_t SYM53C500_intr(int irq, void *dev_id) { - unsigned long flags; struct Scsi_Host *dev = dev_id; DEB(unsigned char fifo_size;) DEB(unsigned char seq_reg;) @@ -353,7 +352,7 @@ SYM53C500_intr(int irq, void *dev_id) struct scsi_cmnd *curSC = data->current_SC; int fast_pio = data->fast_pio;
- spin_lock_irqsave(dev->host_lock, flags); + spin_lock(dev->host_lock);
VDEB(printk("SYM53C500_intr called\n"));
@@ -487,7 +486,7 @@ SYM53C500_intr(int irq, void *dev_id) break; } out: - spin_unlock_irqrestore(dev->host_lock, flags); + spin_unlock(dev->host_lock); return IRQ_HANDLED;
idle_out:
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/qlogicfas408.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/qlogicfas408.c b/drivers/scsi/qlogicfas408.c index 136681a..2a70902 100644 --- a/drivers/scsi/qlogicfas408.c +++ b/drivers/scsi/qlogicfas408.c @@ -426,12 +426,11 @@ static void ql_ihandl(void *dev_id)
irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id) { - unsigned long flags; struct Scsi_Host *host = dev_id;
- spin_lock_irqsave(host->host_lock, flags); + spin_lock(host->host_lock); ql_ihandl(dev_id); - spin_unlock_irqrestore(host->host_lock, flags); + spin_unlock(host->host_lock); return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/qlogicpti.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c index d84e218..078555e 100644 --- a/drivers/scsi/qlogicpti.c +++ b/drivers/scsi/qlogicpti.c @@ -1203,10 +1203,9 @@ static struct scsi_cmnd *qlogicpti_intr_handler(struct qlogicpti *qpti) static irqreturn_t qpti_intr(int irq, void *dev_id) { struct qlogicpti *qpti = dev_id; - unsigned long flags; struct scsi_cmnd *dq;
- spin_lock_irqsave(qpti->qhost->host_lock, flags); + spin_lock(qpti->qhost->host_lock); dq = qlogicpti_intr_handler(qpti);
if (dq != NULL) { @@ -1218,7 +1217,7 @@ static irqreturn_t qpti_intr(int irq, void *dev_id) dq = next; } while (dq != NULL); } - spin_unlock_irqrestore(qpti->qhost->host_lock, flags); + spin_unlock(qpti->qhost->host_lock);
return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/sgiwd93.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c index cf1030c..21165bd 100644 --- a/drivers/scsi/sgiwd93.c +++ b/drivers/scsi/sgiwd93.c @@ -53,11 +53,10 @@ struct hpc_chunk { static irqreturn_t sgiwd93_intr(int irq, void *dev_id) { struct Scsi_Host * host = dev_id; - unsigned long flags;
- spin_lock_irqsave(host->host_lock, flags); + spin_lock(host->host_lock); wd33c93_intr(host); - spin_unlock_irqrestore(host->host_lock, flags); + spin_unlock(host->host_lock);
return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/stex.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c index 1247120..1e797d1 100644 --- a/drivers/scsi/stex.c +++ b/drivers/scsi/stex.c @@ -886,9 +886,8 @@ static irqreturn_t stex_intr(int irq, void *__hba) struct st_hba *hba = __hba; void __iomem *base = hba->mmio_base; u32 data; - unsigned long flags;
- spin_lock_irqsave(hba->host->host_lock, flags); + spin_lock(hba->host->host_lock);
data = readl(base + ODBL);
@@ -897,14 +896,14 @@ static irqreturn_t stex_intr(int irq, void *__hba) writel(data, base + ODBL); readl(base + ODBL); /* flush */ stex_mu_intr(hba, data); - spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock(hba->host->host_lock); if (unlikely(data & MU_OUTBOUND_DOORBELL_REQUEST_RESET && hba->cardtype == st_shasta)) queue_work(hba->work_q, &hba->reset_work); return IRQ_HANDLED; }
- spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock(hba->host->host_lock);
return IRQ_NONE; } @@ -987,9 +986,8 @@ static irqreturn_t stex_ss_intr(int irq, void *__hba) struct st_hba *hba = __hba; void __iomem *base = hba->mmio_base; u32 data; - unsigned long flags;
- spin_lock_irqsave(hba->host->host_lock, flags); + spin_lock(hba->host->host_lock);
if (hba->cardtype == st_yel) { data = readl(base + YI2H_INT); @@ -997,7 +995,7 @@ static irqreturn_t stex_ss_intr(int irq, void *__hba) /* clear the interrupt */ writel(data, base + YI2H_INT_C); stex_ss_mu_intr(hba); - spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock(hba->host->host_lock); if (unlikely(data & SS_I2H_REQUEST_RESET)) queue_work(hba->work_q, &hba->reset_work); return IRQ_HANDLED; @@ -1011,14 +1009,14 @@ static irqreturn_t stex_ss_intr(int irq, void *__hba) writel((1 << 22), base + YH2I_INT); } stex_ss_mu_intr(hba); - spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock(hba->host->host_lock); if (unlikely(data & SS_I2H_REQUEST_RESET)) queue_work(hba->work_q, &hba->reset_work); return IRQ_HANDLED; } }
- spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock(hba->host->host_lock);
return IRQ_NONE; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/vmw_pvscsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c index 081f54a..2994b3a 100644 --- a/drivers/scsi/vmw_pvscsi.c +++ b/drivers/scsi/vmw_pvscsi.c @@ -1180,11 +1180,11 @@ static irqreturn_t pvscsi_isr(int irq, void *devp) struct pvscsi_adapter *adapter = devp; unsigned long flags;
- spin_lock_irqsave(&adapter->hw_lock, flags); + spin_lock(&adapter->hw_lock); pvscsi_process_completion_ring(adapter); if (adapter->use_msg && pvscsi_msg_pending(adapter)) queue_work(adapter->workqueue, &adapter->work); - spin_unlock_irqrestore(&adapter->hw_lock, flags); + spin_unlock(&adapter->hw_lock);
return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/wd719x.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/wd719x.c b/drivers/scsi/wd719x.c index edc8a13..ef372f3 100644 --- a/drivers/scsi/wd719x.c +++ b/drivers/scsi/wd719x.c @@ -657,10 +657,9 @@ static irqreturn_t wd719x_interrupt(int irq, void *dev_id) { struct wd719x *wd = dev_id; union wd719x_regs regs; - unsigned long flags; u32 SCB_out;
- spin_lock_irqsave(wd->sh->host_lock, flags); + spin_lock(wd->sh->host_lock); /* read SCB pointer back from card */ SCB_out = wd719x_readl(wd, WD719X_AMR_SCB_OUT); /* read all status info at once */ @@ -668,7 +667,7 @@ static irqreturn_t wd719x_interrupt(int irq, void *dev_id)
switch (regs.bytes.INT) { case WD719X_INT_NONE: - spin_unlock_irqrestore(wd->sh->host_lock, flags); + spin_unlock(wd->sh->host_lock); return IRQ_NONE; case WD719X_INT_LINKNOSTATUS: dev_err(&wd->pdev->dev, "linked command completed with no status\n"); @@ -705,7 +704,7 @@ static irqreturn_t wd719x_interrupt(int irq, void *dev_id) } /* clear interrupt so another can happen */ wd719x_writeb(wd, WD719X_AMR_INT_STATUS, WD719X_INT_NONE); - spin_unlock_irqrestore(wd->sh->host_lock, flags); + spin_unlock(wd->sh->host_lock);
return IRQ_HANDLED; }
It is redundant to do irqsave and irqrestore in hardIRQ context, where it has been in a irq-disabled context.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- drivers/scsi/advansys.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index ec56278..a80f5e2 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c @@ -7177,10 +7177,9 @@ static irqreturn_t advansys_interrupt(int irq, void *dev_id) struct Scsi_Host *shost = dev_id; struct asc_board *boardp = shost_priv(shost); irqreturn_t result = IRQ_NONE; - unsigned long flags;
ASC_DBG(2, "boardp 0x%p\n", boardp); - spin_lock_irqsave(shost->host_lock, flags); + spin_lock(shost->host_lock); if (ASC_NARROW_BOARD(boardp)) { if (AscIsIntPending(shost->io_port)) { result = IRQ_HANDLED; @@ -7195,7 +7194,7 @@ static irqreturn_t advansys_interrupt(int irq, void *dev_id) ASC_STATS(shost, interrupt); } } - spin_unlock_irqrestore(shost->host_lock, flags); + spin_unlock(shost->host_lock);
ASC_DBG(1, "end\n"); return result;