linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning
@ 2017-06-21 21:52 Arnd Bergmann
  2017-06-21 21:53 ` [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again Arnd Bergmann
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Arnd Bergmann @ 2017-06-21 21:52 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas
  Cc: linux-pci, Arnd Bergmann, linux-arm-kernel, linux-kernel

The last rework returned a variable that the compiler cannot prove
to be initialized:

arch/arm/mach-iop13xx/pci.c: In function 'iop13xx_scan_bus':
arch/arm/mach-iop13xx/pci.c:509:17: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]

In the switch statement that sets the return value, this adds
a default returning an error.

Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/mach-iop13xx/pci.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
index b97879bfb81a..3c51a9bb9b49 100644
--- a/arch/arm/mach-iop13xx/pci.c
+++ b/arch/arm/mach-iop13xx/pci.c
@@ -553,6 +553,8 @@ int iop13xx_scan_bus(int nr, struct pci_host_bridge *bridge)
 		if (!ret)
 			pci_bus_atue = bridge->bus;
 		break;
+	default:
+		ret = -EINVAL;
 	}
 
 	return ret;
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again
  2017-06-21 21:52 [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Arnd Bergmann
@ 2017-06-21 21:53 ` Arnd Bergmann
  2017-06-22  9:38   ` Lorenzo Pieralisi
  2017-06-21 21:53 ` [PATCH 3/4] PCI: versatile: fix typo Arnd Bergmann
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Arnd Bergmann @ 2017-06-21 21:53 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas
  Cc: linux-pci, Arnd Bergmann, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, linux-arm-kernel,
	linux-kernel

We used to pass the operations when calling pci_scan_root_bus, but
that argument was removed:

arch/arm/mach-mv78xx0/pcie.c:175:23: error: 'pcie_ops' defined but not used [-Werror=unused-variable]

Setting it in pci_hw should address this.

Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/mach-mv78xx0/pcie.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
index 2b406e909a43..cb7f95c9d8eb 100644
--- a/arch/arm/mach-mv78xx0/pcie.c
+++ b/arch/arm/mach-mv78xx0/pcie.c
@@ -214,6 +214,7 @@ static int __init mv78xx0_pcie_map_irq(const struct pci_dev *dev, u8 slot,
 }
 
 static struct hw_pci mv78xx0_pci __initdata = {
+	.ops		= &pcie_ops,
 	.nr_controllers	= 8,
 	.preinit	= mv78xx0_pcie_preinit,
 	.setup		= mv78xx0_pcie_setup,
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/4] PCI: versatile: fix typo
  2017-06-21 21:52 [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Arnd Bergmann
  2017-06-21 21:53 ` [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again Arnd Bergmann
@ 2017-06-21 21:53 ` Arnd Bergmann
  2017-06-27 22:49   ` Bjorn Helgaas
  2017-06-21 21:53 ` [PATCH 4/4] PCI: versatile: fix another typo Arnd Bergmann
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Arnd Bergmann @ 2017-06-21 21:53 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas
  Cc: linux-pci, Arnd Bergmann, Rob Herring, Brian Norris,
	linux-arm-kernel, linux-kernel

There is no 'dev' variable in this function:

drivers/pci/host/pci-versatile.c: In function 'versatile_pci_probe':
drivers/pci/host/pci-versatile.c:131:38: error: 'dev' undeclared (first use in this function); did you mean 'pdev'?

This passes the device embedded in the platform_device instead.

Fixes: 433d2671da1b ("PCI: versatile: Convert PCI scan API to pci_scan_root_bus_bridge()")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/pci/host/pci-versatile.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/host/pci-versatile.c b/drivers/pci/host/pci-versatile.c
index 3be25a9dd29a..f572c921cdd4 100644
--- a/drivers/pci/host/pci-versatile.c
+++ b/drivers/pci/host/pci-versatile.c
@@ -128,7 +128,7 @@ static int versatile_pci_probe(struct platform_device *pdev)
 	struct pci_host_bridge *bridge;
 	LIST_HEAD(pci_res);
 
-	bridge = devm_pci_alloc_host_bridge(dev, 0);
+	bridge = devm_pci_alloc_host_bridge(&pdev->dev, 0);
 	if (!bridge)
 		return -ENOMEM;
 
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/4] PCI: versatile: fix another typo
  2017-06-21 21:52 [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Arnd Bergmann
  2017-06-21 21:53 ` [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again Arnd Bergmann
  2017-06-21 21:53 ` [PATCH 3/4] PCI: versatile: fix typo Arnd Bergmann
@ 2017-06-21 21:53 ` Arnd Bergmann
  2017-06-27 22:52   ` Bjorn Helgaas
  2017-06-22  8:47 ` [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Lorenzo Pieralisi
  2017-06-27 22:37 ` Bjorn Helgaas
  4 siblings, 1 reply; 12+ messages in thread
From: Arnd Bergmann @ 2017-06-21 21:53 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas
  Cc: linux-pci, Arnd Bergmann, Rob Herring, Brian Norris,
	linux-arm-kernel, linux-kernel

The struct members were added to the wrong variable:

drivers/pci/host/pci-versatile.c: In function 'versatile_pci_probe':
drivers/pci/host/pci-versatile.c:212:2: error: 'host' undeclared (first use in this function)

Fixes: 997995e1722a ("PCI: versatile: Drop pci_fixup_irqs()")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/pci/host/pci-versatile.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/host/pci-versatile.c b/drivers/pci/host/pci-versatile.c
index f572c921cdd4..f6fcec6b5578 100644
--- a/drivers/pci/host/pci-versatile.c
+++ b/drivers/pci/host/pci-versatile.c
@@ -209,8 +209,8 @@ static int versatile_pci_probe(struct platform_device *pdev)
 	bridge->sysdata = NULL;
 	bridge->busnr = 0;
 	bridge->ops = &pci_versatile_ops;
-	host->map_irq = of_irq_parse_and_map_pci;
-	host->swizzle_irq = pci_common_swizzle;
+	bridge->map_irq = of_irq_parse_and_map_pci;
+	bridge->swizzle_irq = pci_common_swizzle;
 
 	ret = pci_scan_root_bus_bridge(bridge);
 	if (ret < 0)
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning
  2017-06-21 21:52 [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Arnd Bergmann
                   ` (2 preceding siblings ...)
  2017-06-21 21:53 ` [PATCH 4/4] PCI: versatile: fix another typo Arnd Bergmann
@ 2017-06-22  8:47 ` Lorenzo Pieralisi
  2017-06-27 22:37 ` Bjorn Helgaas
  4 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Pieralisi @ 2017-06-22  8:47 UTC (permalink / raw)
  To: Arnd Bergmann, Bjorn Helgaas; +Cc: linux-pci, linux-arm-kernel, linux-kernel

On Wed, Jun 21, 2017 at 11:52:59PM +0200, Arnd Bergmann wrote:
> The last rework returned a variable that the compiler cannot prove
> to be initialized:
> 
> arch/arm/mach-iop13xx/pci.c: In function 'iop13xx_scan_bus':
> arch/arm/mach-iop13xx/pci.c:509:17: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 
> In the switch statement that sets the return value, this adds
> a default returning an error.
> 
> Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/mach-iop13xx/pci.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
> index b97879bfb81a..3c51a9bb9b49 100644
> --- a/arch/arm/mach-iop13xx/pci.c
> +++ b/arch/arm/mach-iop13xx/pci.c
> @@ -553,6 +553,8 @@ int iop13xx_scan_bus(int nr, struct pci_host_bridge *bridge)
>  		if (!ret)
>  			pci_bus_atue = bridge->bus;
>  		break;
> +	default:
> +		ret = -EINVAL;
>  	}
>  
>  	return ret;

Ok I managed to miss these ones somehow, apologies. This series can be
squashed into the initial series but there is also Linus' fix for faraday
to address:

https://patchwork.ozlabs.org/patch/778999/

I can respin a v3 but I am off the radar next week so timing for the
pci_fixup_irqs() removal looks bad, I am not sure what's the next course
of action but I think it is better to drop it for this cycle and wait
for 4.14 (hopefully there are not many PCI host bridges updates to
rebase but I will cope with that anyway - that's the best I can do).

Thanks,
Lorenzo

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again
  2017-06-21 21:53 ` [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again Arnd Bergmann
@ 2017-06-22  9:38   ` Lorenzo Pieralisi
  2017-06-27 23:11     ` Bjorn Helgaas
  0 siblings, 1 reply; 12+ messages in thread
From: Lorenzo Pieralisi @ 2017-06-22  9:38 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Bjorn Helgaas, linux-pci, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, linux-arm-kernel,
	linux-kernel

On Wed, Jun 21, 2017 at 11:53:00PM +0200, Arnd Bergmann wrote:
> We used to pass the operations when calling pci_scan_root_bus, but
> that argument was removed:
> 
> arch/arm/mach-mv78xx0/pcie.c:175:23: error: 'pcie_ops' defined but not used [-Werror=unused-variable]
> 
> Setting it in pci_hw should address this.

No unfortunately it does not. The way I structured the code the
bridge set-up is carried out in the struct hw_pci.scan() callback and
for mv78xx0 it was not done properly.

As said in the other thread we need a pci_fixup_irqs() removal v3 to
address these issues, given that on some host bridges v2 it is still
untested.

Lorenzo

> Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/mach-mv78xx0/pcie.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
> index 2b406e909a43..cb7f95c9d8eb 100644
> --- a/arch/arm/mach-mv78xx0/pcie.c
> +++ b/arch/arm/mach-mv78xx0/pcie.c
> @@ -214,6 +214,7 @@ static int __init mv78xx0_pcie_map_irq(const struct pci_dev *dev, u8 slot,
>  }
>  
>  static struct hw_pci mv78xx0_pci __initdata = {
> +	.ops		= &pcie_ops,
>  	.nr_controllers	= 8,
>  	.preinit	= mv78xx0_pcie_preinit,
>  	.setup		= mv78xx0_pcie_setup,
> -- 
> 2.9.0
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning
  2017-06-21 21:52 [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Arnd Bergmann
                   ` (3 preceding siblings ...)
  2017-06-22  8:47 ` [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Lorenzo Pieralisi
@ 2017-06-27 22:37 ` Bjorn Helgaas
  4 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2017-06-27 22:37 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, linux-pci, linux-arm-kernel,
	linux-kernel

On Wed, Jun 21, 2017 at 11:52:59PM +0200, Arnd Bergmann wrote:
> The last rework returned a variable that the compiler cannot prove
> to be initialized:
> 
> arch/arm/mach-iop13xx/pci.c: In function 'iop13xx_scan_bus':
> arch/arm/mach-iop13xx/pci.c:509:17: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 
> In the switch statement that sets the return value, this adds
> a default returning an error.
> 
> Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Folded into Lorenzo's series on pci/enumeration, thanks!

> ---
>  arch/arm/mach-iop13xx/pci.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
> index b97879bfb81a..3c51a9bb9b49 100644
> --- a/arch/arm/mach-iop13xx/pci.c
> +++ b/arch/arm/mach-iop13xx/pci.c
> @@ -553,6 +553,8 @@ int iop13xx_scan_bus(int nr, struct pci_host_bridge *bridge)
>  		if (!ret)
>  			pci_bus_atue = bridge->bus;
>  		break;
> +	default:
> +		ret = -EINVAL;
>  	}
>  
>  	return ret;
> -- 
> 2.9.0
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/4] PCI: versatile: fix typo
  2017-06-21 21:53 ` [PATCH 3/4] PCI: versatile: fix typo Arnd Bergmann
@ 2017-06-27 22:49   ` Bjorn Helgaas
  0 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2017-06-27 22:49 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, Rob Herring, linux-pci,
	Brian Norris, linux-kernel, linux-arm-kernel

On Wed, Jun 21, 2017 at 11:53:01PM +0200, Arnd Bergmann wrote:
> There is no 'dev' variable in this function:
> 
> drivers/pci/host/pci-versatile.c: In function 'versatile_pci_probe':
> drivers/pci/host/pci-versatile.c:131:38: error: 'dev' undeclared (first use in this function); did you mean 'pdev'?
> 
> This passes the device embedded in the platform_device instead.
> 
> Fixes: 433d2671da1b ("PCI: versatile: Convert PCI scan API to pci_scan_root_bus_bridge()")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Folded into Lorenzo's series on pci/enumeration, thanks!

> ---
>  drivers/pci/host/pci-versatile.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/host/pci-versatile.c b/drivers/pci/host/pci-versatile.c
> index 3be25a9dd29a..f572c921cdd4 100644
> --- a/drivers/pci/host/pci-versatile.c
> +++ b/drivers/pci/host/pci-versatile.c
> @@ -128,7 +128,7 @@ static int versatile_pci_probe(struct platform_device *pdev)
>  	struct pci_host_bridge *bridge;
>  	LIST_HEAD(pci_res);
>  
> -	bridge = devm_pci_alloc_host_bridge(dev, 0);
> +	bridge = devm_pci_alloc_host_bridge(&pdev->dev, 0);
>  	if (!bridge)
>  		return -ENOMEM;
>  
> -- 
> 2.9.0
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/4] PCI: versatile: fix another typo
  2017-06-21 21:53 ` [PATCH 4/4] PCI: versatile: fix another typo Arnd Bergmann
@ 2017-06-27 22:52   ` Bjorn Helgaas
  0 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2017-06-27 22:52 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, linux-pci, Rob Herring,
	Brian Norris, linux-arm-kernel, linux-kernel

On Wed, Jun 21, 2017 at 11:53:02PM +0200, Arnd Bergmann wrote:
> The struct members were added to the wrong variable:
> 
> drivers/pci/host/pci-versatile.c: In function 'versatile_pci_probe':
> drivers/pci/host/pci-versatile.c:212:2: error: 'host' undeclared (first use in this function)
> 
> Fixes: 997995e1722a ("PCI: versatile: Drop pci_fixup_irqs()")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Folded into Lorenzo's series on pci/enumeration, thanks!

> ---
>  drivers/pci/host/pci-versatile.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/host/pci-versatile.c b/drivers/pci/host/pci-versatile.c
> index f572c921cdd4..f6fcec6b5578 100644
> --- a/drivers/pci/host/pci-versatile.c
> +++ b/drivers/pci/host/pci-versatile.c
> @@ -209,8 +209,8 @@ static int versatile_pci_probe(struct platform_device *pdev)
>  	bridge->sysdata = NULL;
>  	bridge->busnr = 0;
>  	bridge->ops = &pci_versatile_ops;
> -	host->map_irq = of_irq_parse_and_map_pci;
> -	host->swizzle_irq = pci_common_swizzle;
> +	bridge->map_irq = of_irq_parse_and_map_pci;
> +	bridge->swizzle_irq = pci_common_swizzle;
>  
>  	ret = pci_scan_root_bus_bridge(bridge);
>  	if (ret < 0)
> -- 
> 2.9.0
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again
  2017-06-22  9:38   ` Lorenzo Pieralisi
@ 2017-06-27 23:11     ` Bjorn Helgaas
  2017-07-01 13:54       ` Lorenzo Pieralisi
  0 siblings, 1 reply; 12+ messages in thread
From: Bjorn Helgaas @ 2017-06-27 23:11 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Arnd Bergmann, Andrew Lunn, Jason Cooper, linux-pci,
	linux-kernel, Gregory Clement, Bjorn Helgaas, linux-arm-kernel,
	Sebastian Hesselbarth

On Thu, Jun 22, 2017 at 10:38:55AM +0100, Lorenzo Pieralisi wrote:
> On Wed, Jun 21, 2017 at 11:53:00PM +0200, Arnd Bergmann wrote:
> > We used to pass the operations when calling pci_scan_root_bus, but
> > that argument was removed:
> > 
> > arch/arm/mach-mv78xx0/pcie.c:175:23: error: 'pcie_ops' defined but not used [-Werror=unused-variable]
> > 
> > Setting it in pci_hw should address this.
> 
> No unfortunately it does not. The way I structured the code the
> bridge set-up is carried out in the struct hw_pci.scan() callback and
> for mv78xx0 it was not done properly.
> 
> As said in the other thread we need a pci_fixup_irqs() removal v3 to
> address these issues, given that on some host bridges v2 it is still
> untested.
> 
> Lorenzo
> 
> > Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> >  arch/arm/mach-mv78xx0/pcie.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
> > index 2b406e909a43..cb7f95c9d8eb 100644
> > --- a/arch/arm/mach-mv78xx0/pcie.c
> > +++ b/arch/arm/mach-mv78xx0/pcie.c
> > @@ -214,6 +214,7 @@ static int __init mv78xx0_pcie_map_irq(const struct pci_dev *dev, u8 slot,
> >  }
> >  
> >  static struct hw_pci mv78xx0_pci __initdata = {
> > +	.ops		= &pcie_ops,
> >  	.nr_controllers	= 8,
> >  	.preinit	= mv78xx0_pcie_preinit,
> >  	.setup		= mv78xx0_pcie_setup,

I provisionally made the following change for mv78xx0, based on similar
hunks for dove, iop13xx, and orion5x.

This is on my pci/enumeration branch:

https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?h=pci/enumeration&id=31ddd0eab68e19cf3dfc14321c99ff0b95cda4ad

Please take a look and see if it makes sense.


diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
index 2b406e909a43..f793ebbd7539 100644
--- a/arch/arm/mach-mv78xx0/pcie.c
+++ b/arch/arm/mach-mv78xx0/pcie.c
@@ -201,6 +201,7 @@ static int __init mv78xx0_pcie_scan_bus(int nr, struct pci_host_bridge *bridge)
 		return -EINVAL;
 	}
 
+	bridge->ops = &pcie_ops;
 	return pci_scan_root_bus_bridge(bridge);
 }
 

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again
  2017-06-27 23:11     ` Bjorn Helgaas
@ 2017-07-01 13:54       ` Lorenzo Pieralisi
  2017-07-02 21:12         ` Bjorn Helgaas
  0 siblings, 1 reply; 12+ messages in thread
From: Lorenzo Pieralisi @ 2017-07-01 13:54 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Arnd Bergmann, Andrew Lunn, Jason Cooper, linux-pci,
	linux-kernel, Gregory Clement, Bjorn Helgaas, linux-arm-kernel,
	Sebastian Hesselbarth

Hi Bjorn,

On Tue, Jun 27, 2017 at 06:11:43PM -0500, Bjorn Helgaas wrote:
> On Thu, Jun 22, 2017 at 10:38:55AM +0100, Lorenzo Pieralisi wrote:
> > On Wed, Jun 21, 2017 at 11:53:00PM +0200, Arnd Bergmann wrote:
> > > We used to pass the operations when calling pci_scan_root_bus, but
> > > that argument was removed:
> > > 
> > > arch/arm/mach-mv78xx0/pcie.c:175:23: error: 'pcie_ops' defined but not used [-Werror=unused-variable]
> > > 
> > > Setting it in pci_hw should address this.
> > 
> > No unfortunately it does not. The way I structured the code the
> > bridge set-up is carried out in the struct hw_pci.scan() callback and
> > for mv78xx0 it was not done properly.
> > 
> > As said in the other thread we need a pci_fixup_irqs() removal v3 to
> > address these issues, given that on some host bridges v2 it is still
> > untested.
> > 
> > Lorenzo
> > 
> > > Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
> > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > > ---
> > >  arch/arm/mach-mv78xx0/pcie.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
> > > index 2b406e909a43..cb7f95c9d8eb 100644
> > > --- a/arch/arm/mach-mv78xx0/pcie.c
> > > +++ b/arch/arm/mach-mv78xx0/pcie.c
> > > @@ -214,6 +214,7 @@ static int __init mv78xx0_pcie_map_irq(const struct pci_dev *dev, u8 slot,
> > >  }
> > >  
> > >  static struct hw_pci mv78xx0_pci __initdata = {
> > > +	.ops		= &pcie_ops,
> > >  	.nr_controllers	= 8,
> > >  	.preinit	= mv78xx0_pcie_preinit,
> > >  	.setup		= mv78xx0_pcie_setup,
> 
> I provisionally made the following change for mv78xx0, based on similar
> hunks for dove, iop13xx, and orion5x.
> 
> This is on my pci/enumeration branch:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?h=pci/enumeration&id=31ddd0eab68e19cf3dfc14321c99ff0b95cda4ad
> 
> Please take a look and see if it makes sense.

It makes code compile but it is missing some initializations.

Patch below, to be folded in commit

e592c4a52cb8 ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")

in your pci/irq-fixups branch, I did that and recompiled (I can't test
this code) and everything seems fine.

Thanks a lot !

Lorenzo

-- >8 --
diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
index f793ebb..636d84b 100644
--- a/arch/arm/mach-mv78xx0/pcie.c
+++ b/arch/arm/mach-mv78xx0/pcie.c
@@ -196,12 +196,19 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
 
 static int __init mv78xx0_pcie_scan_bus(int nr, struct pci_host_bridge *bridge)
 {
+	struct pci_sys_data *sys = pci_host_bridge_priv(bridge);
+
 	if (nr >= num_pcie_ports) {
 		BUG();
 		return -EINVAL;
 	}
 
+	list_splice_init(&sys->resources, &bridge->windows);
+	bridge->dev.parent = NULL;
+	bridge->sysdata = sys;
+	bridge->busnr = sys->busnr;
 	bridge->ops = &pcie_ops;
+
 	return pci_scan_root_bus_bridge(bridge);
 }
 
-- 
2.10.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again
  2017-07-01 13:54       ` Lorenzo Pieralisi
@ 2017-07-02 21:12         ` Bjorn Helgaas
  0 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2017-07-02 21:12 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Arnd Bergmann, Andrew Lunn, Jason Cooper, linux-pci,
	linux-kernel, Gregory Clement, Bjorn Helgaas, linux-arm-kernel,
	Sebastian Hesselbarth

On Sat, Jul 01, 2017 at 02:54:57PM +0100, Lorenzo Pieralisi wrote:
> Hi Bjorn,
> 
> On Tue, Jun 27, 2017 at 06:11:43PM -0500, Bjorn Helgaas wrote:
> > On Thu, Jun 22, 2017 at 10:38:55AM +0100, Lorenzo Pieralisi wrote:
> > > On Wed, Jun 21, 2017 at 11:53:00PM +0200, Arnd Bergmann wrote:
> > > > We used to pass the operations when calling pci_scan_root_bus, but
> > > > that argument was removed:
> > > > 
> > > > arch/arm/mach-mv78xx0/pcie.c:175:23: error: 'pcie_ops' defined but not used [-Werror=unused-variable]
> > > > 
> > > > Setting it in pci_hw should address this.
> > > 
> > > No unfortunately it does not. The way I structured the code the
> > > bridge set-up is carried out in the struct hw_pci.scan() callback and
> > > for mv78xx0 it was not done properly.
> > > 
> > > As said in the other thread we need a pci_fixup_irqs() removal v3 to
> > > address these issues, given that on some host bridges v2 it is still
> > > untested.
> > > 
> > > Lorenzo
> > > 
> > > > Fixes: ace27646da8e ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
> > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > > > ---
> > > >  arch/arm/mach-mv78xx0/pcie.c | 1 +
> > > >  1 file changed, 1 insertion(+)
> > > > 
> > > > diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
> > > > index 2b406e909a43..cb7f95c9d8eb 100644
> > > > --- a/arch/arm/mach-mv78xx0/pcie.c
> > > > +++ b/arch/arm/mach-mv78xx0/pcie.c
> > > > @@ -214,6 +214,7 @@ static int __init mv78xx0_pcie_map_irq(const struct pci_dev *dev, u8 slot,
> > > >  }
> > > >  
> > > >  static struct hw_pci mv78xx0_pci __initdata = {
> > > > +	.ops		= &pcie_ops,
> > > >  	.nr_controllers	= 8,
> > > >  	.preinit	= mv78xx0_pcie_preinit,
> > > >  	.setup		= mv78xx0_pcie_setup,
> > 
> > I provisionally made the following change for mv78xx0, based on similar
> > hunks for dove, iop13xx, and orion5x.
> > 
> > This is on my pci/enumeration branch:
> > 
> > https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?h=pci/enumeration&id=31ddd0eab68e19cf3dfc14321c99ff0b95cda4ad
> > 
> > Please take a look and see if it makes sense.
> 
> It makes code compile but it is missing some initializations.
> 
> Patch below, to be folded in commit
> 
> e592c4a52cb8 ("ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge()")
> 
> in your pci/irq-fixups branch, I did that and recompiled (I can't test
> this code) and everything seems fine.

Folded into pci/irq-fixups, thanks!

> -- >8 --
> diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
> index f793ebb..636d84b 100644
> --- a/arch/arm/mach-mv78xx0/pcie.c
> +++ b/arch/arm/mach-mv78xx0/pcie.c
> @@ -196,12 +196,19 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
>  
>  static int __init mv78xx0_pcie_scan_bus(int nr, struct pci_host_bridge *bridge)
>  {
> +	struct pci_sys_data *sys = pci_host_bridge_priv(bridge);
> +
>  	if (nr >= num_pcie_ports) {
>  		BUG();
>  		return -EINVAL;
>  	}
>  
> +	list_splice_init(&sys->resources, &bridge->windows);
> +	bridge->dev.parent = NULL;
> +	bridge->sysdata = sys;
> +	bridge->busnr = sys->busnr;
>  	bridge->ops = &pcie_ops;
> +
>  	return pci_scan_root_bus_bridge(bridge);
>  }
>  
> -- 
> 2.10.0
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-07-02 21:12 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-21 21:52 [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Arnd Bergmann
2017-06-21 21:53 ` [PATCH 2/4] ARM/PCI: mv78xx0: pass pci_ops correctly again Arnd Bergmann
2017-06-22  9:38   ` Lorenzo Pieralisi
2017-06-27 23:11     ` Bjorn Helgaas
2017-07-01 13:54       ` Lorenzo Pieralisi
2017-07-02 21:12         ` Bjorn Helgaas
2017-06-21 21:53 ` [PATCH 3/4] PCI: versatile: fix typo Arnd Bergmann
2017-06-27 22:49   ` Bjorn Helgaas
2017-06-21 21:53 ` [PATCH 4/4] PCI: versatile: fix another typo Arnd Bergmann
2017-06-27 22:52   ` Bjorn Helgaas
2017-06-22  8:47 ` [PATCH 1/4] ARM/PCI: iop13xx: address uninitialized variable warning Lorenzo Pieralisi
2017-06-27 22:37 ` 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).