diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-09-05 12:56:57 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-09-05 12:56:57 -0400 |
| commit | 616ad8c44281c0c6711a72b560e01ec335ff27e0 (patch) | |
| tree | 0a20453ffedb09db6fb41a0c2208ccc2c7751d3a /drivers/pci/setup-bus.c | |
| parent | 99809963c99e1ed868d9ebeb4a5e7ee1cbe0309f (diff) | |
| parent | b380b0d4f7dffcc235c0facefa537d4655619101 (diff) | |
Merge branch 'linus' into x86/defconfig
Diffstat (limited to 'drivers/pci/setup-bus.c')
| -rw-r--r-- | drivers/pci/setup-bus.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 827c0a520e2b..1aad599816f7 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c | |||
| @@ -352,11 +352,12 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long | |||
| 352 | continue; | 352 | continue; |
| 353 | r_size = r->end - r->start + 1; | 353 | r_size = r->end - r->start + 1; |
| 354 | /* For bridges size != alignment */ | 354 | /* For bridges size != alignment */ |
| 355 | align = (i < PCI_BRIDGE_RESOURCES) ? r_size : r->start; | 355 | align = resource_alignment(r); |
| 356 | order = __ffs(align) - 20; | 356 | order = __ffs(align) - 20; |
| 357 | if (order > 11) { | 357 | if (order > 11) { |
| 358 | dev_warn(&dev->dev, "BAR %d too large: " | 358 | dev_warn(&dev->dev, "BAR %d bad alignment %llx: " |
| 359 | "%#016llx-%#016llx\n", i, | 359 | "%#016llx-%#016llx\n", i, |
| 360 | (unsigned long long)align, | ||
| 360 | (unsigned long long)r->start, | 361 | (unsigned long long)r->start, |
| 361 | (unsigned long long)r->end); | 362 | (unsigned long long)r->end); |
| 362 | r->flags = 0; | 363 | r->flags = 0; |
| @@ -530,6 +531,36 @@ void __ref pci_bus_assign_resources(struct pci_bus *bus) | |||
| 530 | } | 531 | } |
| 531 | EXPORT_SYMBOL(pci_bus_assign_resources); | 532 | EXPORT_SYMBOL(pci_bus_assign_resources); |
| 532 | 533 | ||
| 534 | static void pci_bus_dump_res(struct pci_bus *bus) | ||
| 535 | { | ||
| 536 | int i; | ||
| 537 | |||
| 538 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { | ||
| 539 | struct resource *res = bus->resource[i]; | ||
| 540 | if (!res) | ||
| 541 | continue; | ||
| 542 | |||
| 543 | printk(KERN_INFO "bus: %02x index %x %s: [%llx, %llx]\n", bus->number, i, (res->flags & IORESOURCE_IO)? "io port":"mmio", res->start, res->end); | ||
| 544 | } | ||
| 545 | } | ||
| 546 | |||
| 547 | static void pci_bus_dump_resources(struct pci_bus *bus) | ||
| 548 | { | ||
| 549 | struct pci_bus *b; | ||
| 550 | struct pci_dev *dev; | ||
| 551 | |||
| 552 | |||
| 553 | pci_bus_dump_res(bus); | ||
| 554 | |||
| 555 | list_for_each_entry(dev, &bus->devices, bus_list) { | ||
| 556 | b = dev->subordinate; | ||
| 557 | if (!b) | ||
| 558 | continue; | ||
| 559 | |||
| 560 | pci_bus_dump_resources(b); | ||
| 561 | } | ||
| 562 | } | ||
| 563 | |||
| 533 | void __init | 564 | void __init |
| 534 | pci_assign_unassigned_resources(void) | 565 | pci_assign_unassigned_resources(void) |
| 535 | { | 566 | { |
| @@ -545,4 +576,9 @@ pci_assign_unassigned_resources(void) | |||
| 545 | pci_bus_assign_resources(bus); | 576 | pci_bus_assign_resources(bus); |
| 546 | pci_enable_bridges(bus); | 577 | pci_enable_bridges(bus); |
| 547 | } | 578 | } |
| 579 | |||
| 580 | /* dump the resource on buses */ | ||
| 581 | list_for_each_entry(bus, &pci_root_buses, node) { | ||
| 582 | pci_bus_dump_resources(bus); | ||
| 583 | } | ||
| 548 | } | 584 | } |
