aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index c8d0a176fea4..245e7afb4c4d 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -37,6 +37,7 @@ qla2100_intr_handler(int irq, void *dev_id)
37 uint16_t hccr; 37 uint16_t hccr;
38 uint16_t mb[4]; 38 uint16_t mb[4];
39 struct rsp_que *rsp; 39 struct rsp_que *rsp;
40 unsigned long flags;
40 41
41 rsp = (struct rsp_que *) dev_id; 42 rsp = (struct rsp_que *) dev_id;
42 if (!rsp) { 43 if (!rsp) {
@@ -49,7 +50,7 @@ qla2100_intr_handler(int irq, void *dev_id)
49 reg = &ha->iobase->isp; 50 reg = &ha->iobase->isp;
50 status = 0; 51 status = 0;
51 52
52 spin_lock(&ha->hardware_lock); 53 spin_lock_irqsave(&ha->hardware_lock, flags);
53 vha = pci_get_drvdata(ha->pdev); 54 vha = pci_get_drvdata(ha->pdev);
54 for (iter = 50; iter--; ) { 55 for (iter = 50; iter--; ) {
55 hccr = RD_REG_WORD(&reg->hccr); 56 hccr = RD_REG_WORD(&reg->hccr);
@@ -101,7 +102,7 @@ qla2100_intr_handler(int irq, void *dev_id)
101 RD_REG_WORD(&reg->hccr); 102 RD_REG_WORD(&reg->hccr);
102 } 103 }
103 } 104 }
104 spin_unlock(&ha->hardware_lock); 105 spin_unlock_irqrestore(&ha->hardware_lock, flags);
105 106
106 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) && 107 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) &&
107 (status & MBX_INTERRUPT) && ha->flags.mbox_int) { 108 (status & MBX_INTERRUPT) && ha->flags.mbox_int) {
@@ -133,6 +134,7 @@ qla2300_intr_handler(int irq, void *dev_id)
133 uint16_t mb[4]; 134 uint16_t mb[4];
134 struct rsp_que *rsp; 135 struct rsp_que *rsp;
135 struct qla_hw_data *ha; 136 struct qla_hw_data *ha;
137 unsigned long flags;
136 138
137 rsp = (struct rsp_que *) dev_id; 139 rsp = (struct rsp_que *) dev_id;
138 if (!rsp) { 140 if (!rsp) {
@@ -145,7 +147,7 @@ qla2300_intr_handler(int irq, void *dev_id)
145 reg = &ha->iobase->isp; 147 reg = &ha->iobase->isp;
146 status = 0; 148 status = 0;
147 149
148 spin_lock(&ha->hardware_lock); 150 spin_lock_irqsave(&ha->hardware_lock, flags);
149 vha = pci_get_drvdata(ha->pdev); 151 vha = pci_get_drvdata(ha->pdev);
150 for (iter = 50; iter--; ) { 152 for (iter = 50; iter--; ) {
151 stat = RD_REG_DWORD(&reg->u.isp2300.host_status); 153 stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
@@ -216,7 +218,7 @@ qla2300_intr_handler(int irq, void *dev_id)
216 WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT); 218 WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
217 RD_REG_WORD_RELAXED(&reg->hccr); 219 RD_REG_WORD_RELAXED(&reg->hccr);
218 } 220 }
219 spin_unlock(&ha->hardware_lock); 221 spin_unlock_irqrestore(&ha->hardware_lock, flags);
220 222
221 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) && 223 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) &&
222 (status & MBX_INTERRUPT) && ha->flags.mbox_int) { 224 (status & MBX_INTERRUPT) && ha->flags.mbox_int) {
@@ -1626,6 +1628,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1626 uint32_t hccr; 1628 uint32_t hccr;
1627 uint16_t mb[4]; 1629 uint16_t mb[4];
1628 struct rsp_que *rsp; 1630 struct rsp_que *rsp;
1631 unsigned long flags;
1629 1632
1630 rsp = (struct rsp_que *) dev_id; 1633 rsp = (struct rsp_que *) dev_id;
1631 if (!rsp) { 1634 if (!rsp) {
@@ -1638,7 +1641,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1638 reg = &ha->iobase->isp24; 1641 reg = &ha->iobase->isp24;
1639 status = 0; 1642 status = 0;
1640 1643
1641 spin_lock(&ha->hardware_lock); 1644 spin_lock_irqsave(&ha->hardware_lock, flags);
1642 vha = pci_get_drvdata(ha->pdev); 1645 vha = pci_get_drvdata(ha->pdev);
1643 for (iter = 50; iter--; ) { 1646 for (iter = 50; iter--; ) {
1644 stat = RD_REG_DWORD(&reg->host_status); 1647 stat = RD_REG_DWORD(&reg->host_status);
@@ -1688,7 +1691,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1688 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT); 1691 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
1689 RD_REG_DWORD_RELAXED(&reg->hccr); 1692 RD_REG_DWORD_RELAXED(&reg->hccr);
1690 } 1693 }
1691 spin_unlock(&ha->hardware_lock); 1694 spin_unlock_irqrestore(&ha->hardware_lock, flags);
1692 1695
1693 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) && 1696 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) &&
1694 (status & MBX_INTERRUPT) && ha->flags.mbox_int) { 1697 (status & MBX_INTERRUPT) && ha->flags.mbox_int) {