Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 89877e42827f16fa5f86b1df0c2860b1 > files > 2200

kernel-2.6.18-128.1.10.el5.src.rpm

From: Marcus Barrow <mbarrow@redhat.com>
Subject: [Bug 252410][QLOGIC 5.1 bug] qla2xxx MSI-X hardware issues on some 	platforms
Date: Wed, 15 Aug 2007 20:22:09 -0400
Bugzilla: 252410
Message-Id: <3A253AE9-1301-4046-B5BD-62F6053DC1D7@redhat.com>
Changelog: [scsi] qla2xxx: disable MSI-X by default




Testing and upstream have found problems handling MSI-X by some
chipsets. These include major servers. Enabling MSI-X support
has caused a major regression on some machines.

This attached patch disable the MSI-X feature by default, but
allows enabling with a module parameter "ql2x_enable_msix".

It basically ammounts to one line, plus 5 lines to declare
the module parameter.


From 174422b4e58acbe6c134672ae8d1803c8d12db51 Mon Sep 17 00:00:00 2001
From: Marcus Barrow <mbarrow@marcus-barrows-computer.local>
Date: Wed, 15 Aug 2007 19:51:43 -0400
Subject: [PATCH] By default disable MSI-X, enable with module param.

---
 drivers/scsi/qla2xxx/qla_gbl.h |    1 +
 drivers/scsi/qla2xxx/qla_isr.c |    2 +-
 drivers/scsi/qla2xxx/qla_os.c  |    6 ++++++
 3 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index 8f73f22..c28ceb2 100644
--- 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 ql2x_enable_msix;
 
 extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *);
 
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 1a8c919..2a6c20c 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1707,7 +1707,7 @@ qla2x00_request_irqs(scsi_qla_host_t *ha
 	int ret;
 
 	/* If possible, enable MSI-X. */
-	if (!IS_QLA2432(ha))
+	if (!IS_QLA2432(ha) || !ql2x_enable_msix)
 		goto skip_msix;
 
         if (ha->chip_revision < QLA_MSIX_CHIP_REV_24XX ||
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index b040e31..6388091 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -67,6 +67,7 @@ MODULE_PARM_DESC(ql2xextended_error_logg
 		"Option to enable extended error logging, "
 		"Default is 0 - no logging. 1 - log errors.");
 
+
 static void qla2x00_free_device(scsi_qla_host_t *);
 
 static void qla2x00_config_dma_addressing(scsi_qla_host_t *ha);
@@ -90,6 +91,11 @@ MODULE_PARM_DESC(ql2xqfullrampup,
 		"depth for a device after a queue-full condition has been "
 		"detected.  Default is 120 seconds.");
 
+int ql2x_enable_msix = 0;
+module_param(ql2x_enable_msix, int, S_IRUGO|S_IRUSR);
+MODULE_PARM_DESC(ql2x_enable_msix,
+                 "Set to enable MSI-X interrupt mechanism.");
+
 /*
  * SCSI host template entry points
  */
-- 
1.4.4.1