diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2011-01-06 18:55:09 -0500 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2011-01-14 11:55:41 -0500 |
commit | 415e12b2379239973feab91850b0dce985c6058a (patch) | |
tree | aa79c7a87fd30ac13ae3fd146aad5a44e854c4bc /include/linux/pci.h | |
parent | 6e8af08dfa40b747002207d3ce8e8b43a050d99f (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/linux/pci.h')
-rw-r--r-- | include/linux/pci.h | 11 |
1 files changed, 11 insertions, 0 deletions
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); | |||
994 | extern int pci_msi_enabled(void); | 994 | extern int pci_msi_enabled(void); |
995 | #endif | 995 | #endif |
996 | 996 | ||
997 | extern bool pcie_ports_disabled; | ||
998 | extern bool pcie_ports_auto; | ||
999 | |||
997 | #ifndef CONFIG_PCIEASPM | 1000 | #ifndef CONFIG_PCIEASPM |
998 | static inline int pcie_aspm_enabled(void) | 1001 | static inline int pcie_aspm_enabled(void) |
999 | { | 1002 | { |
@@ -1003,6 +1006,14 @@ static inline int pcie_aspm_enabled(void) | |||
1003 | extern int pcie_aspm_enabled(void); | 1006 | extern int pcie_aspm_enabled(void); |
1004 | #endif | 1007 | #endif |
1005 | 1008 | ||
1009 | #ifdef CONFIG_PCIEAER | ||
1010 | void pci_no_aer(void); | ||
1011 | bool pci_aer_available(void); | ||
1012 | #else | ||
1013 | static inline void pci_no_aer(void) { } | ||
1014 | static inline bool pci_aer_available(void) { return false; } | ||
1015 | #endif | ||
1016 | |||
1006 | #ifndef CONFIG_PCIE_ECRC | 1017 | #ifndef CONFIG_PCIE_ECRC |
1007 | static inline void pcie_set_ecrc_checking(struct pci_dev *dev) | 1018 | static inline void pcie_set_ecrc_checking(struct pci_dev *dev) |
1008 | { | 1019 | { |