diff options
| -rw-r--r-- | drivers/pci/setup-bus.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 8ddb918f5f57..c74a2bce083d 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c | |||
| @@ -537,6 +537,36 @@ void __ref pci_bus_assign_resources(struct pci_bus *bus) | |||
| 537 | } | 537 | } |
| 538 | EXPORT_SYMBOL(pci_bus_assign_resources); | 538 | EXPORT_SYMBOL(pci_bus_assign_resources); |
| 539 | 539 | ||
| 540 | static void pci_bus_dump_res(struct pci_bus *bus) | ||
| 541 | { | ||
| 542 | int i; | ||
| 543 | |||
| 544 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { | ||
| 545 | struct resource *res = bus->resource[i]; | ||
| 546 | if (!res) | ||
| 547 | continue; | ||
| 548 | |||
| 549 | 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); | ||
| 550 | } | ||
| 551 | } | ||
| 552 | |||
| 553 | static void pci_bus_dump_resources(struct pci_bus *bus) | ||
| 554 | { | ||
| 555 | struct pci_bus *b; | ||
| 556 | struct pci_dev *dev; | ||
| 557 | |||
| 558 | |||
| 559 | pci_bus_dump_res(bus); | ||
| 560 | |||
| 561 | list_for_each_entry(dev, &bus->devices, bus_list) { | ||
| 562 | b = dev->subordinate; | ||
| 563 | if (!b) | ||
| 564 | continue; | ||
| 565 | |||
| 566 | pci_bus_dump_resources(b); | ||
| 567 | } | ||
| 568 | } | ||
| 569 | |||
| 540 | void __init | 570 | void __init |
| 541 | pci_assign_unassigned_resources(void) | 571 | pci_assign_unassigned_resources(void) |
| 542 | { | 572 | { |
| @@ -552,4 +582,9 @@ pci_assign_unassigned_resources(void) | |||
| 552 | pci_bus_assign_resources(bus); | 582 | pci_bus_assign_resources(bus); |
| 553 | pci_enable_bridges(bus); | 583 | pci_enable_bridges(bus); |
| 554 | } | 584 | } |
| 585 | |||
| 586 | /* dump the resource on buses */ | ||
| 587 | list_for_each_entry(bus, &pci_root_buses, node) { | ||
| 588 | pci_bus_dump_resources(bus); | ||
| 589 | } | ||
| 555 | } | 590 | } |
