mirror of https://gitee.com/openkylin/linux.git
[SCSI] qla2xxx: Rework MSI-X handlers.
Since MSI-X vectors do not require a clearing "handshake" from the system perspective, and the registered handler will not be called more than once for one occurrence of receipt of a vector, there is no requirement to flush the risc register write clearing the interrupt condition in the risc. Also, since the msi-x registered handlers are optimised for a particular vector, it is preferable to handle the one vector received per invocation of the handler. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
8b3253d10f
commit
87f27015b8
|
@ -1679,7 +1679,6 @@ qla24xx_msix_rsp_q(int irq, void *dev_id)
|
|||
qla24xx_process_response_queue(ha);
|
||||
|
||||
WRT_REG_DWORD(®->hccr, HCCRX_CLR_RISC_INT);
|
||||
RD_REG_DWORD_RELAXED(®->hccr);
|
||||
|
||||
spin_unlock_irqrestore(&ha->hardware_lock, flags);
|
||||
|
||||
|
@ -1693,7 +1692,6 @@ qla24xx_msix_default(int irq, void *dev_id)
|
|||
struct device_reg_24xx __iomem *reg;
|
||||
int status;
|
||||
unsigned long flags;
|
||||
unsigned long iter;
|
||||
uint32_t stat;
|
||||
uint32_t hccr;
|
||||
uint16_t mb[4];
|
||||
|
@ -1703,7 +1701,7 @@ qla24xx_msix_default(int irq, void *dev_id)
|
|||
status = 0;
|
||||
|
||||
spin_lock_irqsave(&ha->hardware_lock, flags);
|
||||
for (iter = 50; iter--; ) {
|
||||
do {
|
||||
stat = RD_REG_DWORD(®->host_status);
|
||||
if (stat & HSRX_RISC_PAUSED) {
|
||||
if (pci_channel_offline(ha->pdev))
|
||||
|
@ -1748,8 +1746,7 @@ qla24xx_msix_default(int irq, void *dev_id)
|
|||
break;
|
||||
}
|
||||
WRT_REG_DWORD(®->hccr, HCCRX_CLR_RISC_INT);
|
||||
RD_REG_DWORD_RELAXED(®->hccr);
|
||||
}
|
||||
} while (0);
|
||||
spin_unlock_irqrestore(&ha->hardware_lock, flags);
|
||||
|
||||
if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) &&
|
||||
|
|
Loading…
Reference in New Issue