aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/pci.c2
-rw-r--r--drivers/pci/pci.h6
-rw-r--r--drivers/pci/pcie/aer/aerdrv.c9
3 files changed, 17 insertions, 0 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 19a64a36ecab..2dd5c282fabe 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1586,6 +1586,8 @@ static int __devinit pci_setup(char *str)
1586 if (*str && (str = pcibios_setup(str)) && *str) { 1586 if (*str && (str = pcibios_setup(str)) && *str) {
1587 if (!strcmp(str, "nomsi")) { 1587 if (!strcmp(str, "nomsi")) {
1588 pci_no_msi(); 1588 pci_no_msi();
1589 } else if (!strcmp(str, "noaer")) {
1590 pci_no_aer();
1589 } else if (!strncmp(str, "cbiosize=", 9)) { 1591 } else if (!strncmp(str, "cbiosize=", 9)) {
1590 pci_cardbus_io_size = memparse(str + 9, &str); 1592 pci_cardbus_io_size = memparse(str + 9, &str);
1591 } else if (!strncmp(str, "cbmemsize=", 10)) { 1593 } else if (!strncmp(str, "cbmemsize=", 10)) {
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 4c36e80f6d26..5360d73d4941 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -52,6 +52,12 @@ void pci_restore_msi_state(struct pci_dev *dev);
52static inline void pci_restore_msi_state(struct pci_dev *dev) {} 52static inline void pci_restore_msi_state(struct pci_dev *dev) {}
53#endif 53#endif
54 54
55#ifdef CONFIG_PCIEAER
56void pci_no_aer(void);
57#else
58static inline void pci_no_aer(void) { }
59#endif
60
55static inline int pci_no_d1d2(struct pci_dev *dev) 61static inline int pci_no_d1d2(struct pci_dev *dev)
56{ 62{
57 unsigned int parent_dstates = 0; 63 unsigned int parent_dstates = 0;
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index ad90a01b0dfc..7a62f7dd9009 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 = {
81 .reset_link = aer_root_reset, 81 .reset_link = aer_root_reset,
82}; 82};
83 83
84static int pcie_aer_disable;
85
86void pci_no_aer(void)
87{
88 pcie_aer_disable = 1; /* has priority over 'forceload' */
89}
90
84/** 91/**
85 * aer_irq - Root Port's ISR 92 * aer_irq - Root Port's ISR
86 * @irq: IRQ assigned to Root Port 93 * @irq: IRQ assigned to Root Port
@@ -327,6 +334,8 @@ static void aer_error_resume(struct pci_dev *dev)
327 **/ 334 **/
328static int __init aer_service_init(void) 335static int __init aer_service_init(void)
329{ 336{
337 if (pcie_aer_disable)
338 return -ENXIO;
330 return pcie_port_service_register(&aerdriver); 339 return pcie_port_service_register(&aerdriver);
331} 340}
332 341