aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2010-03-19 19:59:19 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-03-27 15:11:35 -0400
commit6377a7ae1ab82859edccdbc8eaea63782efb134d (patch)
treea4d3fd086fd7d499f3e1e0fe6738eada40580cf5 /drivers/scsi
parentd84a47c2e8d8880d068f23f3033f6f6987717b17 (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.c28
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,