[kernel] r15316 - in dists/lenny/linux-2.6/debian: . patches/bugfix/all patches/series
Ben Hutchings
benh at alioth.debian.org
Thu Mar 4 13:55:27 UTC 2010
Author: benh
Date: Thu Mar 4 13:55:23 2010
New Revision: 15316
Log:
qla2xxx: Disable MSI/MSI-X on some chips or as selected by module parameter (Closes: #572322)
Added:
dists/lenny/linux-2.6/debian/patches/bugfix/all/qla2xxx-disable-broken-msi.patch
Modified:
dists/lenny/linux-2.6/debian/changelog
dists/lenny/linux-2.6/debian/patches/series/22
Modified: dists/lenny/linux-2.6/debian/changelog
==============================================================================
--- dists/lenny/linux-2.6/debian/changelog Thu Mar 4 05:24:40 2010 (r15315)
+++ dists/lenny/linux-2.6/debian/changelog Thu Mar 4 13:55:23 2010 (r15316)
@@ -32,6 +32,11 @@
* postinst: Fix pattern-matching for 'do_bootloader' configuration option
(Closes: #568317)
* yealink: Reliably kill URBs, fixing potential deadlock (Closes: #570532)
+ * qla2xxx: Disable MSI/MSI-X on some chips or as selected by module parameter
+ (Closes: #572322)
+ - MSI is disabled on QLA24xx chips other than QLA2432 (MSI-X already was)
+ - MSI-X is disabled if qlx2enablemsix=2
+ - MSI and MSI-X are disabled if qlx2enablemsix=0
[ dann frazier ]
* Add be2net driver (Closes: #570428)
Added: dists/lenny/linux-2.6/debian/patches/bugfix/all/qla2xxx-disable-broken-msi.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/lenny/linux-2.6/debian/patches/bugfix/all/qla2xxx-disable-broken-msi.patch Thu Mar 4 13:55:23 2010 (r15316)
@@ -0,0 +1,97 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Subject: [PATCH] qla2xxx: Disable MSI/MSI-X on some chips or as selected by module parameter
+
+Based on these patches applied to RHEL 5:
+
+linux-2.6-scsi-qla2xxx-disable-msi-x-by-default.patch
+linux-2.6-scsi-qla2xxx-msi-x-hardware-issues-on-platforms.patch
+linux-2.6-scsi-qla2xxx-allow-use-of-msi-when-msi-x-disabled.patch
+linux-2.6-scsi-qla2xxx-enable-msi-x-correctly-on-qlogic-2xxx-series.patch
+
+The combined effect is:
+- MSI is disabled on QLA24xx chips other than QLA2432 (MSI-X already was)
+- MSI-X is disabled if qlx2enablemsix=2
+- MSI and MSI-X are disabled if qlx2enablemsix=0
+
+--- a/drivers/scsi/qla2xxx/qla_gbl.h
++++ b/drivers/scsi/qla2xxx/qla_gbl.h
+@@ -62,6 +62,7 @@ extern int ql2xfdmienable;
+ extern int ql2xallocfwdump;
+ extern int ql2xextended_error_logging;
+ extern int ql2xqfullrampup;
++extern int ql2xenablemsix;
+ extern int num_hosts;
+
+ extern int qla2x00_loop_reset(scsi_qla_host_t *);
+--- a/drivers/scsi/qla2xxx/qla_isr.c
++++ b/drivers/scsi/qla2xxx/qla_isr.c
+@@ -1769,18 +1769,12 @@ qla2x00_request_irqs(scsi_qla_host_t *ha)
+ int ret;
+ device_reg_t __iomem *reg = ha->iobase;
+
+- /* If possible, enable MSI-X. */
+- if (!IS_QLA2432(ha) && !IS_QLA2532(ha) && !IS_QLA8432(ha))
+- goto skip_msix;
+-
+- if (IS_QLA2432(ha) && (ha->chip_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->chip_revision, ha->fw_attributes));
++ /* If possible, enable MSI-X, MSI. */
++ if (ql2xenablemsix == 0)
++ goto skip_msi;
+
+- goto skip_msix;
+- }
++ if (!IS_QLA2432(ha) && !IS_QLA2532(ha) && !IS_QLA8432(ha))
++ goto skip_msi;
+
+ if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_HP &&
+ (ha->pdev->subsystem_device == 0x7040 ||
+@@ -1794,6 +1788,17 @@ qla2x00_request_irqs(scsi_qla_host_t *ha)
+ goto skip_msi;
+ }
+
++ if (ql2xenablemsix == 2)
++ goto skip_msix;
++
++ if (IS_QLA2432(ha) && (ha->chip_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->chip_revision, ha->fw_attributes));
++ goto skip_msix;
++ }
++
+ ret = qla24xx_enable_msix(ha);
+ if (!ret) {
+ DEBUG2(qla_printk(KERN_INFO, ha,
+@@ -1805,9 +1810,6 @@ qla2x00_request_irqs(scsi_qla_host_t *ha)
+ "MSI-X: Falling back-to INTa mode -- %d.\n", ret);
+ skip_msix:
+
+- if (!IS_QLA24XX(ha) && !IS_QLA2532(ha) && !IS_QLA8432(ha))
+- goto skip_msi;
+-
+ ret = pci_enable_msi(ha->pdev);
+ if (!ret) {
+ DEBUG2(qla_printk(KERN_INFO, ha, "MSI: Enabled.\n"));
+--- a/drivers/scsi/qla2xxx/qla_os.c
++++ b/drivers/scsi/qla2xxx/qla_os.c
+@@ -87,6 +87,15 @@ MODULE_PARM_DESC(ql2xqfullrampup,
+ "depth for a device after a queue-full condition has been "
+ "detected. Default is 120 seconds.");
+
++int ql2xenablemsix = 1;
++module_param(ql2xenablemsix, int, S_IRUGO|S_IRUSR);
++MODULE_PARM_DESC(ql2xenablemsix,
++ "Set to enable MSI or MSI-X interrupt mechanism."
++ " Default is 1, enable MSI-X interrupt mechanism."
++ " 0 = enable traditional pin-based mechanism."
++ " 1 = enable MSI-X interrupt mechanism."
++ " 2 = enable MSI interrupt mechanism.");
++
+ /*
+ * SCSI host template entry points
+ */
Modified: dists/lenny/linux-2.6/debian/patches/series/22
==============================================================================
--- dists/lenny/linux-2.6/debian/patches/series/22 Thu Mar 4 05:24:40 2010 (r15315)
+++ dists/lenny/linux-2.6/debian/patches/series/22 Thu Mar 4 13:55:23 2010 (r15316)
@@ -25,3 +25,4 @@
+ features/all/ata-piix-add-intel-pci-ids.patch
++ bugfix/all/qla2xxx-disable-broken-msi.patch
More information about the Kernel-svn-changes
mailing list