111 lines
3.4 KiB
Diff
111 lines
3.4 KiB
Diff
|
From 14bdd0d36f5284108468bb73afd50726b07c7a84 Mon Sep 17 00:00:00 2001
|
||
|
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||
|
Date: Mon, 29 Mar 2010 23:43:49 -0400
|
||
|
Subject: linux-2.6-defaults-pci_no_msi
|
||
|
|
||
|
---
|
||
|
Documentation/kernel-parameters.txt | 3 +++
|
||
|
drivers/pci/Kconfig | 12 ++++++++++++
|
||
|
drivers/pci/msi.c | 9 +++++++++
|
||
|
drivers/pci/pci.c | 2 ++
|
||
|
drivers/pci/pci.h | 2 ++
|
||
|
5 files changed, 28 insertions(+), 0 deletions(-)
|
||
|
|
||
|
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||
|
index e4cbca5..8154a0f 100644
|
||
|
--- a/Documentation/kernel-parameters.txt
|
||
|
+++ b/Documentation/kernel-parameters.txt
|
||
|
@@ -1911,6 +1911,9 @@ and is between 256 and 4096 characters. It is defined in the file
|
||
|
check_enable_amd_mmconf [X86] check for and enable
|
||
|
properly configured MMIO access to PCI
|
||
|
config space on AMD family 10h CPU
|
||
|
+ msi [MSI] If the PCI_MSI kernel config parameter is
|
||
|
+ enabled, this kernel boot option can be used to
|
||
|
+ enable the use of MSI interrupts system-wide.
|
||
|
nomsi [MSI] If the PCI_MSI kernel config parameter is
|
||
|
enabled, this kernel boot option can be used to
|
||
|
disable the use of MSI interrupts system-wide.
|
||
|
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
|
||
|
index 7858a11..b12fcad 100644
|
||
|
--- a/drivers/pci/Kconfig
|
||
|
+++ b/drivers/pci/Kconfig
|
||
|
@@ -21,6 +21,18 @@ config PCI_MSI
|
||
|
|
||
|
If you don't know what to do here, say Y.
|
||
|
|
||
|
+config PCI_MSI_DEFAULT_ON
|
||
|
+ def_bool y
|
||
|
+ prompt "Use Message Signaled Interrupts by default"
|
||
|
+ depends on PCI_MSI
|
||
|
+ help
|
||
|
+ Selecting this option will enable use of PCI MSI where applicable
|
||
|
+ by default. Support for MSI can be disabled through the use of the
|
||
|
+ pci=nomsi boot flag. Conversely, if this option is not selected,
|
||
|
+ support for PCI MSI can be enabled by passing the pci=msi flag.
|
||
|
+
|
||
|
+ If you don't know what to do here, say N.
|
||
|
+
|
||
|
config PCI_DEBUG
|
||
|
bool "PCI Debugging"
|
||
|
depends on PCI && DEBUG_KERNEL
|
||
|
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
|
||
|
index f9cf317..6b0539a 100644
|
||
|
--- a/drivers/pci/msi.c
|
||
|
+++ b/drivers/pci/msi.c
|
||
|
@@ -22,7 +22,11 @@
|
||
|
#include "pci.h"
|
||
|
#include "msi.h"
|
||
|
|
||
|
+#ifdef CONFIG_PCI_MSI_DEFAULT_ON
|
||
|
static int pci_msi_enable = 1;
|
||
|
+#else
|
||
|
+static int pci_msi_enable = 0;
|
||
|
+#endif /*CONFIG_PCI_MSI_DEFAULT_ON*/
|
||
|
|
||
|
/* Arch hooks */
|
||
|
|
||
|
@@ -836,6 +840,11 @@ int pci_msi_enabled(void)
|
||
|
}
|
||
|
EXPORT_SYMBOL(pci_msi_enabled);
|
||
|
|
||
|
+void pci_yes_msi(void)
|
||
|
+{
|
||
|
+ pci_msi_enable = 1;
|
||
|
+}
|
||
|
+
|
||
|
void pci_msi_init_pci_dev(struct pci_dev *dev)
|
||
|
{
|
||
|
INIT_LIST_HEAD(&dev->msi_list);
|
||
|
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
|
||
|
index 1531f3a..3cb332b 100644
|
||
|
--- a/drivers/pci/pci.c
|
||
|
+++ b/drivers/pci/pci.c
|
||
|
@@ -2983,6 +2983,8 @@ static int __init pci_setup(char *str)
|
||
|
if (*str && (str = pcibios_setup(str)) && *str) {
|
||
|
if (!strcmp(str, "nomsi")) {
|
||
|
pci_no_msi();
|
||
|
+ } else if (!strcmp(str, "msi")) {
|
||
|
+ pci_yes_msi();
|
||
|
} else if (!strcmp(str, "noaer")) {
|
||
|
pci_no_aer();
|
||
|
} else if (!strcmp(str, "nodomains")) {
|
||
|
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
|
||
|
index 4eb10f4..caa051e 100644
|
||
|
--- a/drivers/pci/pci.h
|
||
|
+++ b/drivers/pci/pci.h
|
||
|
@@ -122,9 +122,11 @@ extern unsigned int pci_pm_d3_delay;
|
||
|
|
||
|
#ifdef CONFIG_PCI_MSI
|
||
|
void pci_no_msi(void);
|
||
|
+void pci_yes_msi(void);
|
||
|
extern void pci_msi_init_pci_dev(struct pci_dev *dev);
|
||
|
#else
|
||
|
static inline void pci_no_msi(void) { }
|
||
|
+static inline void pci_yes_msi(void) { }
|
||
|
static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
|
||
|
#endif
|
||
|
|
||
|
--
|
||
|
1.7.0.1
|
||
|
|