diff --git a/qla2x00t/qla2x00-target/README b/qla2x00t/qla2x00-target/README index 5e7bcce0a..9f08e87c7 100644 --- a/qla2x00t/qla2x00-target/README +++ b/qla2x00t/qla2x00-target/README @@ -24,7 +24,8 @@ following 2.6.26.x commits have been applied to it (upstream ID): 5f3a9a207f1fccde476dd31b4c63ead2967d934f, 85821c906cf3563a00a3d98fa380a2581a7a5ff1, 3c01b4f9fbb43fc911acd33ea7a14ea7a4f9866b, -8eca3f39c4b11320787f7b216f63214aee8415a9. +8eca3f39c4b11320787f7b216f63214aee8415a9, +0f19bc681ed0849a2b95778460a0a8132e3700e2. See also "ToDo" file for list of known issues and unimplemented features. diff --git a/qla2x00t/qla_isr.c b/qla2x00t/qla_isr.c index a8c17db8f..cec7ab3f8 100644 --- a/qla2x00t/qla_isr.c +++ b/qla2x00t/qla_isr.c @@ -1963,16 +1963,17 @@ qla24xx_msix_rsp_q(int irq, void *dev_id) { scsi_qla_host_t *ha; struct device_reg_24xx __iomem *reg; + unsigned long flags; ha = dev_id; reg = &ha->iobase->isp24; - spin_lock_irq(&ha->hardware_lock); + spin_lock_irqsave(&ha->hardware_lock, flags); qla24xx_process_response_queue(ha); WRT_REG_DWORD(®->hccr, HCCRX_CLR_RISC_INT); - spin_unlock_irq(&ha->hardware_lock); + spin_unlock_irqrestore(&ha->hardware_lock, flags); return IRQ_HANDLED; } @@ -1986,12 +1987,13 @@ qla24xx_msix_default(int irq, void *dev_id) uint32_t stat; uint32_t hccr; uint16_t mb[4]; + unsigned long flags; ha = dev_id; reg = &ha->iobase->isp24; status = 0; - spin_lock_irq(&ha->hardware_lock); + spin_lock_irqsave(&ha->hardware_lock, flags); do { stat = RD_REG_DWORD(®->host_status); if (stat & HSRX_RISC_PAUSED) { @@ -2053,7 +2055,7 @@ qla24xx_msix_default(int irq, void *dev_id) } WRT_REG_DWORD(®->hccr, HCCRX_CLR_RISC_INT); } while (0); - spin_unlock_irq(&ha->hardware_lock); + spin_unlock_irqrestore(&ha->hardware_lock, flags); if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) && (status & MBX_INTERRUPT) && ha->flags.mbox_int) {