Skip to contentSkip to conversation

mpt fusion: Added msi enable disable for FC,SPI,SAS [Resendig updated patch]

PATCH2/5 Kashyap, Desai 3 participants 3 messages Jan 8, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Added support for MSI enable/disable for different buses FC,SPI,SAS instead of having single MSI enable/disable feature.
---

---

drivers/message/fusion/mptbase.c +37 -13
index c4e8b9a..55d9a7e 100644
@@ -79,9 +79,22 @@ MODULE_VERSION(my_VERSION);
 /*
  *  cmd line parameters
  */
-static int mpt_msi_enable = -1;
-module_param(mpt_msi_enable, int, 0);
-MODULE_PARM_DESC(mpt_msi_enable, " MSI Support Enable (default=0)");
+
+static int mpt_msi_enable_spi;
+module_param(mpt_msi_enable_spi, int, 0);
+MODULE_PARM_DESC(mpt_msi_enable_spi, " Enable MSI Support for SPI \
+		controllers (default=0)");
+
+static int mpt_msi_enable_fc;
+module_param(mpt_msi_enable_fc, int, 0);
+MODULE_PARM_DESC(mpt_msi_enable_fc, " Enable MSI Support for FC \
+		controllers (default=0)");
+
+static int mpt_msi_enable_sas;
+module_param(mpt_msi_enable_sas, int, 1);
+MODULE_PARM_DESC(mpt_msi_enable_sas, " Enable MSI Support for SAS \
+		controllers (default=1)");
+
 
 static int mpt_channel_mapping;
 module_param(mpt_channel_mapping, int, 0);
@@ -91,7 +104,9 @@ static int mpt_debug_level;
 static int mpt_set_debug_level(const char *val, struct kernel_param *kp);
 module_param_call(mpt_debug_level, mpt_set_debug_level, param_get_int,
 		  &mpt_debug_level, 0600);
-MODULE_PARM_DESC(mpt_debug_level, " debug level - refer to mptdebug.h - (default=0)");
+MODULE_PARM_DESC(mpt_debug_level, " debug level - refer to mptdebug.h \
+	- (default=0)");
+
 
 #ifdef MFCNT
 static int mfcounter = 0;
@@ -1751,16 +1766,25 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
 		ioc->bus_type = SAS;
 	}
 
-	if (mpt_msi_enable == -1) {
-		/* Enable on SAS, disable on FC and SPI */
-		if (ioc->bus_type == SAS)
-			ioc->msi_enable = 1;
-		else
-			ioc->msi_enable = 0;
-	} else
-		/* follow flag: 0 - disable; 1 - enable */
-		ioc->msi_enable = mpt_msi_enable;
 
+	switch (ioc->bus_type) {
+
+	case SAS:
+		ioc->msi_enable = mpt_msi_enable_sas;
+		break;
+
+	case SPI:
+		ioc->msi_enable = mpt_msi_enable_spi;
+		break;
+
+	case FC:
+		ioc->msi_enable = mpt_msi_enable_fc;
+		break;
+
+	default:
+		ioc->msi_enable = 0;
+		break;
+	}
 	if (ioc->errata_flag_1064)
 		pci_disable_io_access(pdev);
 
#1 lore raw
Quoted 2 lines · Desai

Added support for MSI enable/disable for different buses FC,SPI,SAS instead of having single MSI enable/disable feature.

Why do you think you need this?

Either the system supports MSI or it doesn't. The original reason for only enabling MSI on SPI cards was that it reduced the number of bug reports since FC and SAS cards are likely to be used on machines with functional MSI.

This is of course a horrible hack. The right thing to do is to detect that you've never received an interrupt, disable MSI, enable regular interrupts and try again.

Signature · 4 lines
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
maintainer
#2 lore raw
Quoted 6 lines · Matthew Wilcox
Quoted 2 lines · Desai

Added support for MSI enable/disable for different buses FC,SPI,SAS instead of having single MSI enable/disable feature.

Why do you think you need this?

Quoted 8 lines

Either the system supports MSI or it doesn't. The original reason for only enabling MSI on SPI cards was that it reduced the number of bug reports since FC and SAS cards are likely to be used on machines with functional MSI.

This is of course a horrible hack. The right thing to do is to detect that you've never received an interrupt, disable MSI, enable regular interrupts and try again.

Right ... we actually had agreement on this and a set of patches to implement some of it that went via the PCI list ... I'll see if I can find them.

James