On 2019-06-22 3:03 p.m., Bjorn Helgaas wrote: > From: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > > Reorder pci_bus_distribute_available_resources() to group related code > together. No functional change intended. > > Link: https://lore.kernel.org/r/PS2P216MB0642C7A485649D2D787A1C6F80000@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > Based-on-patch-by: Nicholas Johnson <nicholas.johnson-opensource@xxxxxxxxxxxxxx> > [bhelgaas: extracted from larger patch] > Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> Looks correct to me: Reviewed-by: Logan Gunthorpe <logang@xxxxxxxxxxxx> > --- > > The original order was: > > 1) remaining_io = available_io > > 2) for_each_pci_bridge(dev, bus) > # count hotplug_bridges, normal_bridges > > 3) for_each_pci_bridge(dev, bus) > if (!dev->is_hotplug_bridge) > # reduce remaining_io by dev window > > 4) if (hotplug_bridges + normal_bridges == 1) > # distribute available_io to the single bridge > # return > > 5) for_each_pci_bridge(dev, bus) > # distribute remaining_io to hotplug bridges > > Blocks 2 and 4 don't require remaining_io, so do them first. Blocks 1, 3, > 5 deal with remaining_io, so group them together. > --- > drivers/pci/setup-bus.c | 50 ++++++++++++++++++++--------------------- > 1 file changed, 25 insertions(+), 25 deletions(-) > > diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c > index 0cdd5ff389de..af28af898e42 100644 > --- a/drivers/pci/setup-bus.c > +++ b/drivers/pci/setup-bus.c > @@ -1860,16 +1860,6 @@ static void pci_bus_distribute_available_resources(struct pci_bus *bus, > extend_bridge_window(bridge, mmio_pref_res, add_list, > available_mmio_pref); > > - /* > - * Calculate the total amount of extra resource space we can > - * pass to bridges below this one. This is basically the > - * extra space reduced by the minimal required space for the > - * non-hotplug bridges. > - */ > - remaining_io = available_io; > - remaining_mmio = available_mmio; > - remaining_mmio_pref = available_mmio_pref; > - > /* > * Calculate how many hotplug bridges and normal bridges there > * are on this bus. We will distribute the additional available > @@ -1882,6 +1872,31 @@ static void pci_bus_distribute_available_resources(struct pci_bus *bus, > normal_bridges++; > } > > + /* > + * There is only one bridge on the bus so it gets all available > + * resources which it can then distribute to the possible hotplug > + * bridges below. > + */ > + if (hotplug_bridges + normal_bridges == 1) { > + dev = list_first_entry(&bus->devices, struct pci_dev, bus_list); > + if (dev->subordinate) { > + pci_bus_distribute_available_resources(dev->subordinate, > + add_list, available_io, available_mmio, > + available_mmio_pref); > + } > + return; > + } > + > + /* > + * Calculate the total amount of extra resource space we can > + * pass to bridges below this one. This is basically the > + * extra space reduced by the minimal required space for the > + * non-hotplug bridges. > + */ > + remaining_io = available_io; > + remaining_mmio = available_mmio; > + remaining_mmio_pref = available_mmio_pref; > + > for_each_pci_bridge(dev, bus) { > const struct resource *res; > > @@ -1905,21 +1920,6 @@ static void pci_bus_distribute_available_resources(struct pci_bus *bus, > remaining_mmio_pref -= resource_size(res); > } > > - /* > - * There is only one bridge on the bus so it gets all available > - * resources which it can then distribute to the possible hotplug > - * bridges below. > - */ > - if (hotplug_bridges + normal_bridges == 1) { > - dev = list_first_entry(&bus->devices, struct pci_dev, bus_list); > - if (dev->subordinate) { > - pci_bus_distribute_available_resources(dev->subordinate, > - add_list, available_io, available_mmio, > - available_mmio_pref); > - } > - return; > - } > - > /* > * Go over devices on this bus and distribute the remaining > * resource space between hotplug bridges. >