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 | |
| 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')
| -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, |
