[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