diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index e7dbe21705ba..939cf8578150 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -1210,14 +1210,21 @@ void __pci_bus_size_bridges(struct pci_bus *bus, struct list_head *realloc_head) case PCI_HEADER_TYPE_BRIDGE: pci_bridge_check_ranges(bus); + pci_info(bus->self, "hotplug bridge: %d\n", bus->self->is_hotplug_bridge); + pci_info(bus->self, "io_window: %d\n", bus->self->io_window); if (bus->self->is_hotplug_bridge) { - additional_io_size = pci_hotplug_io_size; + if (bus->self->io_window) + additional_io_size = pci_hotplug_io_size; additional_mem_size = pci_hotplug_mem_size; } /* Fall through */ default: - pbus_size_io(bus, realloc_head ? 0 : additional_io_size, - additional_io_size, realloc_head); + pci_info(bus->self, "additional_io_size: %pa\n", &additional_io_size); + if (bus->self->io_window) { + pci_info(bus->self, "sizing io\n"); + pbus_size_io(bus, realloc_head ? 0 : additional_io_size, + additional_io_size, realloc_head); + } /* * If there's a 64-bit prefetchable MMIO window, compute @@ -2010,6 +2017,9 @@ void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge) pci_bridge_distribute_available_resources(bridge, &add_list); __pci_bridge_assign_resources(bridge, &add_list, &fail_head); + + goto enable_all; + BUG_ON(!list_empty(&add_list)); tried_times++;