diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2010-03-19 19:59:19 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-03-27 15:11:35 -0400 |
commit | 6377a7ae1ab82859edccdbc8eaea63782efb134d (patch) | |
tree | a4d3fd086fd7d499f3e1e0fe6738eada40580cf5 /drivers/scsi | |
parent | d84a47c2e8d8880d068f23f3033f6f6987717b17 (diff) |
[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: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 295337d1fcb8..44df0b752adf 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -2271,30 +2271,28 @@ qla2x00_request_irqs(struct qla_hw_data *ha, struct rsp_que *rsp) | |||
2271 | 2271 | ||
2272 | /* If possible, enable MSI-X. */ | 2272 | /* If possible, enable MSI-X. */ |
2273 | if (!IS_QLA2432(ha) && !IS_QLA2532(ha) && | 2273 | if (!IS_QLA2432(ha) && !IS_QLA2532(ha) && |
2274 | !IS_QLA8432(ha) && !IS_QLA8001(ha)) | 2274 | !IS_QLA8432(ha) && !IS_QLA8001(ha)) |
2275 | goto skip_msix; | 2275 | goto skip_msi; |
2276 | |||
2277 | if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_HP && | ||
2278 | (ha->pdev->subsystem_device == 0x7040 || | ||
2279 | ha->pdev->subsystem_device == 0x7041 || | ||
2280 | ha->pdev->subsystem_device == 0x1705)) { | ||
2281 | DEBUG2(qla_printk(KERN_WARNING, ha, | ||
2282 | "MSI-X: Unsupported ISP2432 SSVID/SSDID (0x%X,0x%X).\n", | ||
2283 | ha->pdev->subsystem_vendor, | ||
2284 | ha->pdev->subsystem_device)); | ||
2285 | goto skip_msi; | ||
2286 | } | ||
2276 | 2287 | ||
2277 | if (IS_QLA2432(ha) && (ha->pdev->revision < QLA_MSIX_CHIP_REV_24XX || | 2288 | if (IS_QLA2432(ha) && (ha->pdev->revision < QLA_MSIX_CHIP_REV_24XX || |
2278 | !QLA_MSIX_FW_MODE_1(ha->fw_attributes))) { | 2289 | !QLA_MSIX_FW_MODE_1(ha->fw_attributes))) { |
2279 | DEBUG2(qla_printk(KERN_WARNING, ha, | 2290 | DEBUG2(qla_printk(KERN_WARNING, ha, |
2280 | "MSI-X: Unsupported ISP2432 (0x%X, 0x%X).\n", | 2291 | "MSI-X: Unsupported ISP2432 (0x%X, 0x%X).\n", |
2281 | ha->pdev->revision, ha->fw_attributes)); | 2292 | ha->pdev->revision, ha->fw_attributes)); |
2282 | |||
2283 | goto skip_msix; | 2293 | goto skip_msix; |
2284 | } | 2294 | } |
2285 | 2295 | ||
2286 | if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_HP && | ||
2287 | (ha->pdev->subsystem_device == 0x7040 || | ||
2288 | ha->pdev->subsystem_device == 0x7041 || | ||
2289 | ha->pdev->subsystem_device == 0x1705)) { | ||
2290 | DEBUG2(qla_printk(KERN_WARNING, ha, | ||
2291 | "MSI-X: Unsupported ISP2432 SSVID/SSDID (0x%X, 0x%X).\n", | ||
2292 | ha->pdev->subsystem_vendor, | ||
2293 | ha->pdev->subsystem_device)); | ||
2294 | |||
2295 | goto skip_msi; | ||
2296 | } | ||
2297 | |||
2298 | ret = qla24xx_enable_msix(ha, rsp); | 2296 | ret = qla24xx_enable_msix(ha, rsp); |
2299 | if (!ret) { | 2297 | if (!ret) { |
2300 | DEBUG2(qla_printk(KERN_INFO, ha, | 2298 | DEBUG2(qla_printk(KERN_INFO, ha, |