diff mbox series

[1/2] PCI: Simplify pci_bus_distribute_available_resources()

Message ID 20190622210310.180905-2-helgaas@kernel.org (mailing list archive)
State Mainlined, archived
Commit 5c6bcc344b18dfb3b0ddcca6c26f6858879f73bf
Headers show
Series PCI: Simplify pci_bus_distribute_available_resources() | expand

Commit Message

Bjorn Helgaas June 22, 2019, 9:03 p.m. UTC
From: Bjorn Helgaas <bhelgaas@google.com>

Reorder pci_bus_distribute_available_resources() to group related code
together.  No functional change intended.

Link: https://lore.kernel.org/r/PS2P216MB0642C7A485649D2D787A1C6F80000@PS2P216MB0642.KORP216.PROD.OUTLOOK.COM
Based-on-patch-by: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>
[bhelgaas: extracted from larger patch]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

---

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(-)

Comments

Mika Westerberg June 24, 2019, 11:09 a.m. UTC | #1
On Sat, Jun 22, 2019 at 04:03:10PM -0500, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <bhelgaas@google.com>
> 
> Reorder pci_bus_distribute_available_resources() to group related code
> together.  No functional change intended.
> 
> Link: https://lore.kernel.org/r/PS2P216MB0642C7A485649D2D787A1C6F80000@PS2P216MB0642.KORP216.PROD.OUTLOOK.COM
> Based-on-patch-by: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>
> [bhelgaas: extracted from larger patch]
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Logan Gunthorpe June 24, 2019, 4:21 p.m. UTC | #2
On 2019-06-22 3:03 p.m., Bjorn Helgaas wrote:
> From: Bjorn Helgaas <bhelgaas@google.com>
> 
> Reorder pci_bus_distribute_available_resources() to group related code
> together.  No functional change intended.
> 
> Link: https://lore.kernel.org/r/PS2P216MB0642C7A485649D2D787A1C6F80000@PS2P216MB0642.KORP216.PROD.OUTLOOK.COM
> Based-on-patch-by: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>
> [bhelgaas: extracted from larger patch]
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

Looks correct to me:

Reviewed-by: Logan Gunthorpe <logang@deltatee.com>

> ---
> 
> 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.
>
diff mbox series

Patch

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.