diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-26 13:35:27 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-26 13:35:27 -0500 |
commit | 68c6b859846bd078b37c6ca5f3882032f129e72d (patch) | |
tree | e243605957f1cab3532d57d86ea87355c10b6385 /arch/ia64 | |
parent | a4a47bc03fe520e95e0c4212bf97c86545fb14f9 (diff) | |
parent | bb8d41330ce27edb91adb6922d3f8e1a8923f727 (diff) |
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
* 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (48 commits)
x86/PCI: Prevent mmconfig memory corruption
ACPI: Use GPE reference counting to support shared GPEs
x86/PCI: use host bridge _CRS info by default on 2008 and newer machines
PCI: augment bus resource table with a list
PCI: add pci_bus_for_each_resource(), remove direct bus->resource[] refs
PCI: read bridge windows before filling in subtractive decode resources
PCI: split up pci_read_bridge_bases()
PCIe PME: use pci_pcie_cap()
PCI PM: Run-time callbacks for PCI bus type
PCIe PME: use pci_is_pcie()
PCI / ACPI / PM: Platform support for PCI PME wake-up
ACPI / ACPICA: Multiple system notify handlers per device
ACPI / PM: Add more run-time wake-up fields
ACPI: Use GPE reference counting to support shared GPEs
PCI PM: Make it possible to force using INTx for PCIe PME signaling
PCI PM: PCIe PME root port service driver
PCI PM: Add function for checking PME status of devices
PCI: mark is_pcie obsolete
PCI: set PCI_PREF_RANGE_TYPE_64 in pci_bridge_check_ranges
PCI: pciehp: second try to get big range for pcie devices
...
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/include/asm/acpi.h | 1 | ||||
-rw-r--r-- | arch/ia64/pci/pci.c | 22 |
2 files changed, 9 insertions, 14 deletions
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index e97b255d97bc..93997bd5edc3 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h | |||
@@ -98,6 +98,7 @@ ia64_acpi_release_global_lock (unsigned int *lock) | |||
98 | #endif | 98 | #endif |
99 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ | 99 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ |
100 | static inline void disable_acpi(void) { } | 100 | static inline void disable_acpi(void) { } |
101 | static inline void pci_acpi_crs_quirks(void) { } | ||
101 | 102 | ||
102 | const char *acpi_get_sysname (void); | 103 | const char *acpi_get_sysname (void); |
103 | int acpi_request_vector (u32 int_type); | 104 | int acpi_request_vector (u32 int_type); |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index df639db779f9..64aff520b899 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -320,9 +320,9 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data) | |||
320 | static void __devinit | 320 | static void __devinit |
321 | pcibios_setup_root_windows(struct pci_bus *bus, struct pci_controller *ctrl) | 321 | pcibios_setup_root_windows(struct pci_bus *bus, struct pci_controller *ctrl) |
322 | { | 322 | { |
323 | int i, j; | 323 | int i; |
324 | 324 | ||
325 | j = 0; | 325 | pci_bus_remove_resources(bus); |
326 | for (i = 0; i < ctrl->windows; i++) { | 326 | for (i = 0; i < ctrl->windows; i++) { |
327 | struct resource *res = &ctrl->window[i].resource; | 327 | struct resource *res = &ctrl->window[i].resource; |
328 | /* HP's firmware has a hack to work around a Windows bug. | 328 | /* HP's firmware has a hack to work around a Windows bug. |
@@ -330,13 +330,7 @@ pcibios_setup_root_windows(struct pci_bus *bus, struct pci_controller *ctrl) | |||
330 | if ((res->flags & IORESOURCE_MEM) && | 330 | if ((res->flags & IORESOURCE_MEM) && |
331 | (res->end - res->start < 16)) | 331 | (res->end - res->start < 16)) |
332 | continue; | 332 | continue; |
333 | if (j >= PCI_BUS_NUM_RESOURCES) { | 333 | pci_bus_add_resource(bus, res, 0); |
334 | dev_warn(&bus->dev, | ||
335 | "ignoring host bridge window %pR (no space)\n", | ||
336 | res); | ||
337 | continue; | ||
338 | } | ||
339 | bus->resource[j++] = res; | ||
340 | } | 334 | } |
341 | } | 335 | } |
342 | 336 | ||
@@ -452,13 +446,12 @@ EXPORT_SYMBOL(pcibios_bus_to_resource); | |||
452 | static int __devinit is_valid_resource(struct pci_dev *dev, int idx) | 446 | static int __devinit is_valid_resource(struct pci_dev *dev, int idx) |
453 | { | 447 | { |
454 | unsigned int i, type_mask = IORESOURCE_IO | IORESOURCE_MEM; | 448 | unsigned int i, type_mask = IORESOURCE_IO | IORESOURCE_MEM; |
455 | struct resource *devr = &dev->resource[idx]; | 449 | struct resource *devr = &dev->resource[idx], *busr; |
456 | 450 | ||
457 | if (!dev->bus) | 451 | if (!dev->bus) |
458 | return 0; | 452 | return 0; |
459 | for (i=0; i<PCI_BUS_NUM_RESOURCES; i++) { | ||
460 | struct resource *busr = dev->bus->resource[i]; | ||
461 | 453 | ||
454 | pci_bus_for_each_resource(dev->bus, busr, i) { | ||
462 | if (!busr || ((busr->flags ^ devr->flags) & type_mask)) | 455 | if (!busr || ((busr->flags ^ devr->flags) & type_mask)) |
463 | continue; | 456 | continue; |
464 | if ((devr->start) && (devr->start >= busr->start) && | 457 | if ((devr->start) && (devr->start >= busr->start) && |
@@ -547,10 +540,11 @@ pcibios_disable_device (struct pci_dev *dev) | |||
547 | acpi_pci_irq_disable(dev); | 540 | acpi_pci_irq_disable(dev); |
548 | } | 541 | } |
549 | 542 | ||
550 | void | 543 | resource_size_t |
551 | pcibios_align_resource (void *data, struct resource *res, | 544 | pcibios_align_resource (void *data, const struct resource *res, |
552 | resource_size_t size, resource_size_t align) | 545 | resource_size_t size, resource_size_t align) |
553 | { | 546 | { |
547 | return res->start; | ||
554 | } | 548 | } |
555 | 549 | ||
556 | /* | 550 | /* |