@@ -37,6 +37,7 @@ qla2100_intr_handler(int irq, void *dev_id)
37
37
uint16_t hccr ;
38
38
uint16_t mb [4 ];
39
39
struct rsp_que * rsp ;
40
+ unsigned long flags ;
40
41
41
42
rsp = (struct rsp_que * ) dev_id ;
42
43
if (!rsp ) {
@@ -49,7 +50,7 @@ qla2100_intr_handler(int irq, void *dev_id)
49
50
reg = & ha -> iobase -> isp ;
50
51
status = 0 ;
51
52
52
- spin_lock (& ha -> hardware_lock );
53
+ spin_lock_irqsave (& ha -> hardware_lock , flags );
53
54
vha = pci_get_drvdata (ha -> pdev );
54
55
for (iter = 50 ; iter -- ; ) {
55
56
hccr = RD_REG_WORD (& reg -> hccr );
@@ -101,7 +102,7 @@ qla2100_intr_handler(int irq, void *dev_id)
101
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
107
if (test_bit (MBX_INTR_WAIT , & ha -> mbx_cmd_flags ) &&
107
108
(status & MBX_INTERRUPT ) && ha -> flags .mbox_int ) {
@@ -133,6 +134,7 @@ qla2300_intr_handler(int irq, void *dev_id)
133
134
uint16_t mb [4 ];
134
135
struct rsp_que * rsp ;
135
136
struct qla_hw_data * ha ;
137
+ unsigned long flags ;
136
138
137
139
rsp = (struct rsp_que * ) dev_id ;
138
140
if (!rsp ) {
@@ -145,7 +147,7 @@ qla2300_intr_handler(int irq, void *dev_id)
145
147
reg = & ha -> iobase -> isp ;
146
148
status = 0 ;
147
149
148
- spin_lock (& ha -> hardware_lock );
150
+ spin_lock_irqsave (& ha -> hardware_lock , flags );
149
151
vha = pci_get_drvdata (ha -> pdev );
150
152
for (iter = 50 ; iter -- ; ) {
151
153
stat = RD_REG_DWORD (& reg -> u .isp2300 .host_status );
@@ -216,7 +218,7 @@ qla2300_intr_handler(int irq, void *dev_id)
216
218
WRT_REG_WORD (& reg -> hccr , HCCR_CLR_RISC_INT );
217
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
223
if (test_bit (MBX_INTR_WAIT , & ha -> mbx_cmd_flags ) &&
222
224
(status & MBX_INTERRUPT ) && ha -> flags .mbox_int ) {
@@ -1626,6 +1628,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1626
1628
uint32_t hccr ;
1627
1629
uint16_t mb [4 ];
1628
1630
struct rsp_que * rsp ;
1631
+ unsigned long flags ;
1629
1632
1630
1633
rsp = (struct rsp_que * ) dev_id ;
1631
1634
if (!rsp ) {
@@ -1638,7 +1641,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1638
1641
reg = & ha -> iobase -> isp24 ;
1639
1642
status = 0 ;
1640
1643
1641
- spin_lock (& ha -> hardware_lock );
1644
+ spin_lock_irqsave (& ha -> hardware_lock , flags );
1642
1645
vha = pci_get_drvdata (ha -> pdev );
1643
1646
for (iter = 50 ; iter -- ; ) {
1644
1647
stat = RD_REG_DWORD (& reg -> host_status );
@@ -1688,7 +1691,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1688
1691
WRT_REG_DWORD (& reg -> hccr , HCCRX_CLR_RISC_INT );
1689
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
1696
if (test_bit (MBX_INTR_WAIT , & ha -> mbx_cmd_flags ) &&
1694
1697
(status & MBX_INTERRUPT ) && ha -> flags .mbox_int ) {
0 commit comments