Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d88021a6 authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley
Browse files

[SCSI] qla2xxx: Handle IRQ-0 assignments by the system.



No restriction should be placed on the IRQ number assigned
to a given ISP.  Original code incorrectly assumed a
non-zero IRQ number assignment by the system.  In these
circumstances the proper freeing of the IRQ (via free_irq())
would not take place.

Signed-off-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent a8488abe
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2097,6 +2097,7 @@ typedef struct scsi_qla_host {
		uint32_t	enable_lip_full_login	:1;
		uint32_t	enable_target_reset	:1;
		uint32_t	enable_led_scheme	:1;
		uint32_t	inta_enabled		:1;
		uint32_t	msi_enabled		:1;
		uint32_t	msix_enabled		:1;
		uint32_t	disable_serdes		:1;
+5 −3
Original line number Diff line number Diff line
@@ -1725,12 +1725,14 @@ qla2x00_request_irqs(scsi_qla_host_t *ha)
skip_msix:
	ret = request_irq(ha->pdev->irq, ha->isp_ops.intr_handler,
	    IRQF_DISABLED|IRQF_SHARED, QLA2XXX_DRIVER_NAME, ha);
	if (ret) {
	if (!ret) {
		ha->flags.inta_enabled = 1;
		ha->host->irq = ha->pdev->irq;
	} else {
		qla_printk(KERN_WARNING, ha,
		    "Failed to reserve interrupt %d already in use.\n",
		    ha->pdev->irq);
	}
	ha->host->irq = ha->pdev->irq;

	return ret;
}
@@ -1741,6 +1743,6 @@ qla2x00_free_irqs(scsi_qla_host_t *ha)

	if (ha->flags.msix_enabled)
		qla24xx_disable_msix(ha);
	else if (ha->host->irq)
	else if (ha->flags.inta_enabled)
		free_irq(ha->host->irq, ha);
}