Skip to content

Commit

Permalink
x86/PCI: Factor out pcibios_allocate_bridge_resources()
Browse files Browse the repository at this point in the history
Thus pcibios_allocate_bus_resources() could more simple and clean.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
  • Loading branch information
Yinghai Lu authored and Bjorn Helgaas committed Jan 7, 2013
1 parent d1c3ed6 commit f7ac356
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions arch/x86/pci/i386.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,34 +193,36 @@ EXPORT_SYMBOL(pcibios_align_resource);
* as well.
*/

static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
static void __init pcibios_allocate_bridge_resources(struct pci_dev *dev)
{
struct pci_bus *bus;
struct pci_dev *dev;
int idx;
struct resource *r;

for (idx = PCI_BRIDGE_RESOURCES; idx < PCI_NUM_RESOURCES; idx++) {
r = &dev->resource[idx];
if (!r->flags)
continue;
if (!r->start || pci_claim_resource(dev, idx) < 0) {
/*
* Something is wrong with the region.
* Invalidate the resource to prevent
* child resource allocations in this
* range.
*/
r->start = r->end = 0;
r->flags = 0;
}
}
}

static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
{
struct pci_bus *bus;

/* Depth-First Search on bus tree */
list_for_each_entry(bus, bus_list, node) {
if ((dev = bus->self)) {
for (idx = PCI_BRIDGE_RESOURCES;
idx < PCI_NUM_RESOURCES; idx++) {
r = &dev->resource[idx];
if (!r->flags)
continue;
if (!r->start ||
pci_claim_resource(dev, idx) < 0) {
/*
* Something is wrong with the region.
* Invalidate the resource to prevent
* child resource allocations in this
* range.
*/
r->start = r->end = 0;
r->flags = 0;
}
}
}
if (bus->self)
pcibios_allocate_bridge_resources(bus->self);
pcibios_allocate_bus_resources(&bus->children);
}
}
Expand Down

0 comments on commit f7ac356

Please sign in to comment.