* [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper
@ 2017-11-10 17:52 Andy Shevchenko
2017-11-10 17:52 ` [PATCH v2 2/2] powerpc/pci: Unroll two pass loop when scanning bridges Andy Shevchenko
2017-11-22 20:12 ` [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper Bjorn Helgaas
0 siblings, 2 replies; 6+ messages in thread
From: Andy Shevchenko @ 2017-11-10 17:52 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
linuxppc-dev, Bjorn Helgaas, linux-pci
Cc: Andy Shevchenko
...which makes code slightly cleaner.
Requires: d43f59ce6c50 ("PCI: Add for_each_pci_bridge() helper")
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/kernel/pci-hotplug.c | 7 ++-----
arch/powerpc/kernel/pci_of_scan.c | 7 ++-----
2 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/arch/powerpc/kernel/pci-hotplug.c b/arch/powerpc/kernel/pci-hotplug.c
index 2d71269e7dc1..741f47295188 100644
--- a/arch/powerpc/kernel/pci-hotplug.c
+++ b/arch/powerpc/kernel/pci-hotplug.c
@@ -134,11 +134,8 @@ void pci_hp_add_devices(struct pci_bus *bus)
pcibios_setup_bus_devices(bus);
max = bus->busn_res.start;
for (pass = 0; pass < 2; pass++) {
- list_for_each_entry(dev, &bus->devices, bus_list) {
- if (pci_is_bridge(dev))
- max = pci_scan_bridge(bus, dev,
- max, pass);
- }
+ for_each_pci_bridge(dev, bus)
+ max = pci_scan_bridge(bus, dev, max, pass);
}
}
pcibios_finish_adding_to_bus(bus);
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
index 0d790f8432d2..8bdaa2a6fa62 100644
--- a/arch/powerpc/kernel/pci_of_scan.c
+++ b/arch/powerpc/kernel/pci_of_scan.c
@@ -369,11 +369,8 @@ static void __of_scan_bus(struct device_node *node, struct pci_bus *bus,
pcibios_setup_bus_devices(bus);
/* Now scan child busses */
- list_for_each_entry(dev, &bus->devices, bus_list) {
- if (pci_is_bridge(dev)) {
- of_scan_pci_bridge(dev);
- }
- }
+ for_each_pci_bridge(dev, bus)
+ of_scan_pci_bridge(dev);
}
/**
--
2.14.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] powerpc/pci: Unroll two pass loop when scanning bridges
2017-11-10 17:52 [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper Andy Shevchenko
@ 2017-11-10 17:52 ` Andy Shevchenko
2017-11-13 14:30 ` Mika Westerberg
2017-11-22 20:12 ` [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper Bjorn Helgaas
1 sibling, 1 reply; 6+ messages in thread
From: Andy Shevchenko @ 2017-11-10 17:52 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
linuxppc-dev, Bjorn Helgaas, linux-pci
Cc: Andy Shevchenko, Mika Westerberg
The current scanning code is really hard to understand because it calls
the same function in a loop where pass value is changed without any
comments explaining it:
for (pass = 0; pass < 2; pass++)
for_each_pci_bridge(dev, bus)
max = pci_scan_bridge(bus, dev, max, pass);
Unfamiliar reader cannot tell easily what is the purpose of this loop
without looking at internals of pci_scan_bridge().
In order to make this bit easier to understand, open-code the loop in
pci_scan_child_bus() and pci_hp_add_bridge() with added comments.
No functional changes intended.
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/kernel/pci-hotplug.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/kernel/pci-hotplug.c b/arch/powerpc/kernel/pci-hotplug.c
index 741f47295188..cf47b1aec4c2 100644
--- a/arch/powerpc/kernel/pci-hotplug.c
+++ b/arch/powerpc/kernel/pci-hotplug.c
@@ -104,7 +104,7 @@ EXPORT_SYMBOL_GPL(pci_hp_remove_devices);
*/
void pci_hp_add_devices(struct pci_bus *bus)
{
- int slotno, mode, pass, max;
+ int slotno, mode, max;
struct pci_dev *dev;
struct pci_controller *phb;
struct device_node *dn = pci_bus_to_OF_node(bus);
@@ -133,10 +133,17 @@ void pci_hp_add_devices(struct pci_bus *bus)
pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
pcibios_setup_bus_devices(bus);
max = bus->busn_res.start;
- for (pass = 0; pass < 2; pass++) {
- for_each_pci_bridge(dev, bus)
- max = pci_scan_bridge(bus, dev, max, pass);
- }
+ /*
+ * Scan bridges that are already configured. We don't touch
+ * them unless they are misconfigured (which will be done in
+ * the second scan below).
+ */
+ for_each_pci_bridge(dev, bus)
+ max = pci_scan_bridge(bus, dev, max, 0);
+
+ /* Scan bridges that need to be reconfigured */
+ for_each_pci_bridge(dev, bus)
+ max = pci_scan_bridge(bus, dev, max, 1);
}
pcibios_finish_adding_to_bus(bus);
}
--
2.14.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] powerpc/pci: Unroll two pass loop when scanning bridges
2017-11-10 17:52 ` [PATCH v2 2/2] powerpc/pci: Unroll two pass loop when scanning bridges Andy Shevchenko
@ 2017-11-13 14:30 ` Mika Westerberg
0 siblings, 0 replies; 6+ messages in thread
From: Mika Westerberg @ 2017-11-13 14:30 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
linuxppc-dev, Bjorn Helgaas, linux-pci
On Fri, Nov 10, 2017 at 07:52:30PM +0200, Andy Shevchenko wrote:
> The current scanning code is really hard to understand because it calls
> the same function in a loop where pass value is changed without any
> comments explaining it:
>
> for (pass = 0; pass < 2; pass++)
> for_each_pci_bridge(dev, bus)
> max = pci_scan_bridge(bus, dev, max, pass);
>
> Unfamiliar reader cannot tell easily what is the purpose of this loop
> without looking at internals of pci_scan_bridge().
>
> In order to make this bit easier to understand, open-code the loop in
> pci_scan_child_bus() and pci_hp_add_bridge() with added comments.
>
> No functional changes intended.
>
> Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper
2017-11-10 17:52 [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper Andy Shevchenko
2017-11-10 17:52 ` [PATCH v2 2/2] powerpc/pci: Unroll two pass loop when scanning bridges Andy Shevchenko
@ 2017-11-22 20:12 ` Bjorn Helgaas
2017-11-23 12:48 ` Michael Ellerman
1 sibling, 1 reply; 6+ messages in thread
From: Bjorn Helgaas @ 2017-11-22 20:12 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
linuxppc-dev, Bjorn Helgaas, linux-pci
On Fri, Nov 10, 2017 at 07:52:29PM +0200, Andy Shevchenko wrote:
> ...which makes code slightly cleaner.
>
> Requires: d43f59ce6c50 ("PCI: Add for_each_pci_bridge() helper")
Requires: 24a0c654d7d6 ("PCI: Add for_each_pci_bridge() helper")
(My fault, I rebased that commit before sending it to Linus.)
> Acked-by: Michael Ellerman <mpe@ellerman.id.au>
These don't depend on anything in the PCI core, so they could go
either via my tree or the powerpc tree. Since you acked this,
Michael, I corrected the SHA1 above and put these both on my pci/misc
branch.
If you pick them up, let me know and I'll drop them from my tree.
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> arch/powerpc/kernel/pci-hotplug.c | 7 ++-----
> arch/powerpc/kernel/pci_of_scan.c | 7 ++-----
> 2 files changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/arch/powerpc/kernel/pci-hotplug.c b/arch/powerpc/kernel/pci-hotplug.c
> index 2d71269e7dc1..741f47295188 100644
> --- a/arch/powerpc/kernel/pci-hotplug.c
> +++ b/arch/powerpc/kernel/pci-hotplug.c
> @@ -134,11 +134,8 @@ void pci_hp_add_devices(struct pci_bus *bus)
> pcibios_setup_bus_devices(bus);
> max = bus->busn_res.start;
> for (pass = 0; pass < 2; pass++) {
> - list_for_each_entry(dev, &bus->devices, bus_list) {
> - if (pci_is_bridge(dev))
> - max = pci_scan_bridge(bus, dev,
> - max, pass);
> - }
> + for_each_pci_bridge(dev, bus)
> + max = pci_scan_bridge(bus, dev, max, pass);
> }
> }
> pcibios_finish_adding_to_bus(bus);
> diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
> index 0d790f8432d2..8bdaa2a6fa62 100644
> --- a/arch/powerpc/kernel/pci_of_scan.c
> +++ b/arch/powerpc/kernel/pci_of_scan.c
> @@ -369,11 +369,8 @@ static void __of_scan_bus(struct device_node *node, struct pci_bus *bus,
> pcibios_setup_bus_devices(bus);
>
> /* Now scan child busses */
> - list_for_each_entry(dev, &bus->devices, bus_list) {
> - if (pci_is_bridge(dev)) {
> - of_scan_pci_bridge(dev);
> - }
> - }
> + for_each_pci_bridge(dev, bus)
> + of_scan_pci_bridge(dev);
> }
>
> /**
> --
> 2.14.2
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper
2017-11-22 20:12 ` [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper Bjorn Helgaas
@ 2017-11-23 12:48 ` Michael Ellerman
2017-11-27 18:03 ` Bjorn Helgaas
0 siblings, 1 reply; 6+ messages in thread
From: Michael Ellerman @ 2017-11-23 12:48 UTC (permalink / raw)
To: Bjorn Helgaas, Andy Shevchenko
Cc: Benjamin Herrenschmidt, Paul Mackerras, linuxppc-dev,
Bjorn Helgaas, linux-pci
Bjorn Helgaas <helgaas@kernel.org> writes:
> On Fri, Nov 10, 2017 at 07:52:29PM +0200, Andy Shevchenko wrote:
>> ...which makes code slightly cleaner.
>>
>> Requires: d43f59ce6c50 ("PCI: Add for_each_pci_bridge() helper")
>
> Requires: 24a0c654d7d6 ("PCI: Add for_each_pci_bridge() helper")
>
> (My fault, I rebased that commit before sending it to Linus.)
>
>> Acked-by: Michael Ellerman <mpe@ellerman.id.au>
>
> These don't depend on anything in the PCI core, so they could go
> either via my tree or the powerpc tree. Since you acked this,
> Michael, I corrected the SHA1 above and put these both on my pci/misc
> branch.
Thanks. That's aiming for 4.16 I assume?
cheers
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper
2017-11-23 12:48 ` Michael Ellerman
@ 2017-11-27 18:03 ` Bjorn Helgaas
0 siblings, 0 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2017-11-27 18:03 UTC (permalink / raw)
To: Michael Ellerman
Cc: Andy Shevchenko, Benjamin Herrenschmidt, Paul Mackerras,
linuxppc-dev, Bjorn Helgaas, linux-pci
On Thu, Nov 23, 2017 at 11:48:18PM +1100, Michael Ellerman wrote:
> Bjorn Helgaas <helgaas@kernel.org> writes:
>
> > On Fri, Nov 10, 2017 at 07:52:29PM +0200, Andy Shevchenko wrote:
> >> ...which makes code slightly cleaner.
> >>
> >> Requires: d43f59ce6c50 ("PCI: Add for_each_pci_bridge() helper")
> >
> > Requires: 24a0c654d7d6 ("PCI: Add for_each_pci_bridge() helper")
> >
> > (My fault, I rebased that commit before sending it to Linus.)
> >
> >> Acked-by: Michael Ellerman <mpe@ellerman.id.au>
> >
> > These don't depend on anything in the PCI core, so they could go
> > either via my tree or the powerpc tree. Since you acked this,
> > Michael, I corrected the SHA1 above and put these both on my pci/misc
> > branch.
>
> Thanks. That's aiming for 4.16 I assume?
Right.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-11-27 18:03 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-10 17:52 [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper Andy Shevchenko
2017-11-10 17:52 ` [PATCH v2 2/2] powerpc/pci: Unroll two pass loop when scanning bridges Andy Shevchenko
2017-11-13 14:30 ` Mika Westerberg
2017-11-22 20:12 ` [PATCH v2 1/2] powerpc/pci: convert to use for_each_pci_bridge() helper Bjorn Helgaas
2017-11-23 12:48 ` Michael Ellerman
2017-11-27 18:03 ` Bjorn Helgaas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).