mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 13:13:57 +08:00
x86/PCI: Factor out pcibios_allocate_bridge_resources()
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>
This commit is contained in:
parent
d1c3ed669a
commit
f7ac356dc3
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user