Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7f785763660e75c9eddaddea3d618696af4ae3a2
Commit:     7f785763660e75c9eddaddea3d618696af4ae3a2
Parent:     fd6e732186ab522c812ab19c2c5e5befb8ec8115
Author:     Randy Dunlap <[EMAIL PROTECTED]>
AuthorDate: Fri Oct 5 13:17:58 2007 -0700
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Fri Oct 12 15:03:17 2007 -0700

    pci: implement "pci=noaer"
    
    For cases in which CONFIG_PCIEAER=y (such as distro kernels), allow users
    to disable PCIE Advanced Error Reporting by using "pci=noaer" on the
    kernel command line.
    
    This can be used to work around hardware or (kernel) software problems.
    
    Signed-off-by: Randy Dunlap <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 Documentation/kernel-parameters.txt |    4 ++++
 drivers/pci/pci.c                   |    2 ++
 drivers/pci/pci.h                   |    6 ++++++
 drivers/pci/pcie/aer/aerdrv.c       |    9 +++++++++
 4 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index a57c1f2..3f0173f 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -68,6 +68,7 @@ parameter is applicable:
        PARIDE  The ParIDE (parallel port IDE) subsystem is enabled.
        PARISC  The PA-RISC architecture is enabled.
        PCI     PCI bus support is enabled.
+       PCIE    PCI Express support is enabled.
        PCMCIA  The PCMCIA subsystem is enabled.
        PNP     Plug & Play support is enabled.
        PPC     PowerPC architecture is enabled.
@@ -1270,6 +1271,9 @@ and is between 256 and 4096 characters. It is defined in 
the file
                                Mechanism 1.
                conf2           [X86-32] Force use of PCI Configuration
                                Mechanism 2.
+               noaer           [PCIE] If the PCIEAER kernel config parameter is
+                               enabled, this kernel boot option can be used to
+                               disable the use of PCIE advanced error 
reporting.
                nommconf        [X86-32,X86_64] Disable use of MMCONFIG for PCI
                                Configuration
                nomsi           [MSI] If the PCI_MSI kernel config parameter is
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 19a64a3..2dd5c28 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1586,6 +1586,8 @@ static int __devinit pci_setup(char *str)
                if (*str && (str = pcibios_setup(str)) && *str) {
                        if (!strcmp(str, "nomsi")) {
                                pci_no_msi();
+                       } else if (!strcmp(str, "noaer")) {
+                               pci_no_aer();
                        } else if (!strncmp(str, "cbiosize=", 9)) {
                                pci_cardbus_io_size = memparse(str + 9, &str);
                        } else if (!strncmp(str, "cbmemsize=", 10)) {
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 4c36e80..5360d73 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -52,6 +52,12 @@ void pci_restore_msi_state(struct pci_dev *dev);
 static inline void pci_restore_msi_state(struct pci_dev *dev) {}
 #endif
 
+#ifdef CONFIG_PCIEAER
+void pci_no_aer(void);
+#else
+static inline void pci_no_aer(void) { }
+#endif
+
 static inline int pci_no_d1d2(struct pci_dev *dev)
 {
        unsigned int parent_dstates = 0;
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index ad90a01..7a62f7d 100644
--- a/drivers/pci/pcie/aer/aerdrv.c
+++ b/drivers/pci/pcie/aer/aerdrv.c
@@ -81,6 +81,13 @@ static struct pcie_port_service_driver aerdriver = {
        .reset_link     = aer_root_reset,
 };
 
+static int pcie_aer_disable;
+
+void pci_no_aer(void)
+{
+       pcie_aer_disable = 1;   /* has priority over 'forceload' */
+}
+
 /**
  * aer_irq - Root Port's ISR
  * @irq: IRQ assigned to Root Port
@@ -327,6 +334,8 @@ static void aer_error_resume(struct pci_dev *dev)
  **/
 static int __init aer_service_init(void)
 {
+       if (pcie_aer_disable)
+               return -ENXIO;
        return pcie_port_service_register(&aerdriver);
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to