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

Commit 6377a7ae authored by Ben Hutchings's avatar Ben Hutchings Committed by James Bottomley
Browse files

[SCSI] qla2xxx: Disable MSI on qla24xx chips other than QLA2432.

On specific platforms, MSI is unreliable on some of the QLA24xx chips, resulting
in fatal I/O errors under load, as reported in <http://bugs.debian.org/572322

>
and by some RHEL customers.

Signed-off-by: default avatarGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent d84a47c2
Loading
Loading
Loading
Loading
+13 −15
Original line number Original line Diff line number Diff line
@@ -2272,16 +2272,7 @@ qla2x00_request_irqs(struct qla_hw_data *ha, struct rsp_que *rsp)
	/* If possible, enable MSI-X. */
	/* If possible, enable MSI-X. */
	if (!IS_QLA2432(ha) && !IS_QLA2532(ha) &&
	if (!IS_QLA2432(ha) && !IS_QLA2532(ha) &&
		!IS_QLA8432(ha) && !IS_QLA8001(ha))
		!IS_QLA8432(ha) && !IS_QLA8001(ha))
		goto skip_msix;
		goto skip_msi;

	if (IS_QLA2432(ha) && (ha->pdev->revision < QLA_MSIX_CHIP_REV_24XX ||
		!QLA_MSIX_FW_MODE_1(ha->fw_attributes))) {
		DEBUG2(qla_printk(KERN_WARNING, ha,
		"MSI-X: Unsupported ISP2432 (0x%X, 0x%X).\n",
			ha->pdev->revision, ha->fw_attributes));

		goto skip_msix;
	}


	if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_HP &&
	if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_HP &&
		(ha->pdev->subsystem_device == 0x7040 ||
		(ha->pdev->subsystem_device == 0x7040 ||
@@ -2291,10 +2282,17 @@ qla2x00_request_irqs(struct qla_hw_data *ha, struct rsp_que *rsp)
			"MSI-X: Unsupported ISP2432 SSVID/SSDID (0x%X,0x%X).\n",
			"MSI-X: Unsupported ISP2432 SSVID/SSDID (0x%X,0x%X).\n",
			ha->pdev->subsystem_vendor,
			ha->pdev->subsystem_vendor,
			ha->pdev->subsystem_device));
			ha->pdev->subsystem_device));

		goto skip_msi;
		goto skip_msi;
	}
	}


	if (IS_QLA2432(ha) && (ha->pdev->revision < QLA_MSIX_CHIP_REV_24XX ||
		!QLA_MSIX_FW_MODE_1(ha->fw_attributes))) {
		DEBUG2(qla_printk(KERN_WARNING, ha,
		"MSI-X: Unsupported ISP2432 (0x%X, 0x%X).\n",
			ha->pdev->revision, ha->fw_attributes));
		goto skip_msix;
	}

	ret = qla24xx_enable_msix(ha, rsp);
	ret = qla24xx_enable_msix(ha, rsp);
	if (!ret) {
	if (!ret) {
		DEBUG2(qla_printk(KERN_INFO, ha,
		DEBUG2(qla_printk(KERN_INFO, ha,