aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2011-01-06 18:55:09 -0500
committerJesse Barnes <jbarnes@virtuousgeek.org>2011-01-14 11:55:41 -0500
commit415e12b2379239973feab91850b0dce985c6058a (patch)
treeaa79c7a87fd30ac13ae3fd146aad5a44e854c4bc /include
parent6e8af08dfa40b747002207d3ce8e8b43a050d99f (diff)
PCI/ACPI: Request _OSC control once for each root bridge (v3)
Move the evaluation of acpi_pci_osc_control_set() (to request control of PCI Express native features) into acpi_pci_root_add() to avoid calling it many times for the same root complex with the same arguments. Additionally, check if all of the requisite _OSC support bits are set before calling acpi_pci_osc_control_set() for a given root complex. References: https://bugzilla.kernel.org/show_bug.cgi?id=20232 Reported-by: Ozan Caglayan <ozan@pardus.org.tr> Tested-by: Ozan Caglayan <ozan@pardus.org.tr> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'include')
-rw-r--r--include/acpi/apei.h6
-rw-r--r--include/linux/pci-acpi.h6
-rw-r--r--include/linux/pci.h11
3 files changed, 23 insertions, 0 deletions
diff --git a/include/acpi/apei.h b/include/acpi/apei.h
index b3365025ff8d..c4dbb132d902 100644
--- a/include/acpi/apei.h
+++ b/include/acpi/apei.h
@@ -19,6 +19,12 @@
19extern int hest_disable; 19extern int hest_disable;
20extern int erst_disable; 20extern int erst_disable;
21 21
22#ifdef CONFIG_ACPI_APEI
23void __init acpi_hest_init(void);
24#else
25static inline void acpi_hest_init(void) { return; }
26#endif
27
22typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data); 28typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data);
23int apei_hest_parse(apei_hest_func_t func, void *data); 29int apei_hest_parse(apei_hest_func_t func, void *data);
24 30
diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h
index c8b6473c5f42..479d9bb88e11 100644
--- a/include/linux/pci-acpi.h
+++ b/include/linux/pci-acpi.h
@@ -40,4 +40,10 @@ static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev)
40{ return NULL; } 40{ return NULL; }
41#endif 41#endif
42 42
43#ifdef CONFIG_ACPI_APEI
44extern bool aer_acpi_firmware_first(void);
45#else
46static inline bool aer_acpi_firmware_first(void) { return false; }
47#endif
48
43#endif /* _PCI_ACPI_H_ */ 49#endif /* _PCI_ACPI_H_ */
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 63cbadce337e..12dd86a82a15 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -994,6 +994,9 @@ extern void pci_restore_msi_state(struct pci_dev *dev);
994extern int pci_msi_enabled(void); 994extern int pci_msi_enabled(void);
995#endif 995#endif
996 996
997extern bool pcie_ports_disabled;
998extern bool pcie_ports_auto;
999
997#ifndef CONFIG_PCIEASPM 1000#ifndef CONFIG_PCIEASPM
998static inline int pcie_aspm_enabled(void) 1001static inline int pcie_aspm_enabled(void)
999{ 1002{
@@ -1003,6 +1006,14 @@ static inline int pcie_aspm_enabled(void)
1003extern int pcie_aspm_enabled(void); 1006extern int pcie_aspm_enabled(void);
1004#endif 1007#endif
1005 1008
1009#ifdef CONFIG_PCIEAER
1010void pci_no_aer(void);
1011bool pci_aer_available(void);
1012#else
1013static inline void pci_no_aer(void) { }
1014static inline bool pci_aer_available(void) { return false; }
1015#endif
1016
1006#ifndef CONFIG_PCIE_ECRC 1017#ifndef CONFIG_PCIE_ECRC
1007static inline void pcie_set_ecrc_checking(struct pci_dev *dev) 1018static inline void pcie_set_ecrc_checking(struct pci_dev *dev)
1008{ 1019{