diff options
author | Andrew Patterson <andrew.patterson@hp.com> | 2008-11-10 17:30:45 -0500 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-01-07 14:12:27 -0500 |
commit | 990a7ac5645883a833a11b900bb6f25b65dea65b (patch) | |
tree | 8644b7da9b41069d873d2b4dbe600bc5a828347d /drivers/acpi | |
parent | 8b62091e20215730be1b94b7cd135a78a3e692ca (diff) |
ACPI/PCI: call _OSC support during root bridge discovery
Add pci_acpi_osc_support() and call it when a PCI bridge is added. This
allows us to avoid having every individual PCI root bridge driver call
_OSC support for every root bridge in their probe functions, a
significant savings in boot time.
Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/pci_root.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 642554b1b60c..de4d57114fe4 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/spinlock.h> | 31 | #include <linux/spinlock.h> |
32 | #include <linux/pm.h> | 32 | #include <linux/pm.h> |
33 | #include <linux/pci.h> | 33 | #include <linux/pci.h> |
34 | #include <linux/pci-acpi.h> | ||
34 | #include <linux/acpi.h> | 35 | #include <linux/acpi.h> |
35 | #include <acpi/acpi_bus.h> | 36 | #include <acpi/acpi_bus.h> |
36 | #include <acpi/acpi_drivers.h> | 37 | #include <acpi/acpi_drivers.h> |
@@ -193,6 +194,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) | |||
193 | unsigned long long value = 0; | 194 | unsigned long long value = 0; |
194 | acpi_handle handle = NULL; | 195 | acpi_handle handle = NULL; |
195 | struct acpi_device *child; | 196 | struct acpi_device *child; |
197 | u32 flags; | ||
196 | 198 | ||
197 | 199 | ||
198 | if (!device) | 200 | if (!device) |
@@ -210,6 +212,13 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) | |||
210 | 212 | ||
211 | device->ops.bind = acpi_pci_bind; | 213 | device->ops.bind = acpi_pci_bind; |
212 | 214 | ||
215 | /* | ||
216 | * All supported architectures that use ACPI have support for | ||
217 | * PCI domains, so we indicate this in _OSC support capabilities. | ||
218 | */ | ||
219 | flags = OSC_PCI_SEGMENT_GROUPS_SUPPORT; | ||
220 | pci_acpi_osc_support(device->handle, flags); | ||
221 | |||
213 | /* | 222 | /* |
214 | * Segment | 223 | * Segment |
215 | * ------- | 224 | * ------- |