}
}
-void __pci_bus_assign_resources(const struct pci_bus *bus,
- struct list_head *add_list,
- struct list_head *fail_head)
+static void __pci_bus_assign_resources_one(const struct pci_bus *bus,
+ struct list_head *add_list,
+ struct list_head *fail_head)
{
struct pci_bus *b;
struct pci_dev *dev;
if (!b)
continue;
- __pci_bus_assign_resources(b, add_list, fail_head);
+ __pci_bus_assign_resources_one(b, add_list, fail_head);
switch (dev->hdr_type) {
case PCI_HEADER_TYPE_BRIDGE:
}
}
+void __pci_bus_assign_resources(const struct pci_bus *bus,
+ struct list_head *add_list,
+ struct list_head *fail_head)
+{
+ __pci_bus_assign_resources_one(bus, add_list, fail_head);
+
+ if (WARN_ON_ONCE(add_list && !list_empty(add_list)))
+ pci_dev_res_free_list(add_list);
+}
+
void pci_bus_assign_resources(const struct pci_bus *bus)
{
__pci_bus_assign_resources(bus, NULL, NULL);
pci_domain_nr(b), b->number);
break;
}
+
+ if (WARN_ON_ONCE(add_list && !list_empty(add_list)))
+ pci_dev_res_free_list(add_list);
}
static void pci_bridge_release_resources(struct pci_bus *bus,
/* Depth last, allocate resources and update the hardware. */
__pci_bus_assign_resources(bus, add_list, &fail_head);
- if (WARN_ON_ONCE(add_list && !list_empty(add_list)))
- pci_dev_res_free_list(add_list);
tried_times++;
/* Any device complain? */
pci_bridge_distribute_available_resources(bridge, &add_list);
__pci_bridge_assign_resources(bridge, &add_list, &fail_head);
- if (WARN_ON_ONCE(!list_empty(&add_list)))
- pci_dev_res_free_list(&add_list);
tried_times++;
if (list_empty(&fail_head))
__pci_bus_size_bridges(bridge->subordinate, &add_list);
__pci_bridge_assign_resources(bridge, &add_list, &failed);
- if (WARN_ON_ONCE(!list_empty(&add_list)))
- pci_dev_res_free_list(&add_list);
if (!list_empty(&failed)) {
if (pci_required_resource_failed(&failed, type))
__pci_bus_size_bridges(dev->subordinate, &add_list);
up_read(&pci_bus_sem);
__pci_bus_assign_resources(bus, &add_list, NULL);
- if (WARN_ON_ONCE(!list_empty(&add_list)))
- pci_dev_res_free_list(&add_list);
}
EXPORT_SYMBOL_GPL(pci_assign_unassigned_bus_resources);