提交 f7ac356d 编写于 作者: Y Yinghai Lu 提交者: Bjorn Helgaas

x86/PCI: Factor out pcibios_allocate_bridge_resources()

Thus pcibios_allocate_bus_resources() could more simple and clean.
Signed-off-by: NYinghai Lu <yinghai@kernel.org>
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
上级 d1c3ed66
......@@ -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);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册