linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix examples at pci/hisilicon,kirin-pcie.yaml
@ 2021-08-12  7:55 Mauro Carvalho Chehab
  2021-08-12  7:55 ` [PATCH 1/2] dt-bindings: PCI: kirin: fix bus-range Mauro Carvalho Chehab
  2021-08-12  7:55 ` [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example Mauro Carvalho Chehab
  0 siblings, 2 replies; 7+ messages in thread
From: Mauro Carvalho Chehab @ 2021-08-12  7:55 UTC (permalink / raw)
  To: Rob Herring
  Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Binghui Wang,
	Rob Herring, Xiaowei Song, devicetree, linux-kernel, linux-pci

Hi Rob,

This small series fix the HiKey960 and HiKey970 examples for the
DT schema defined at pci/hisilicon,kirin-pcie.yaml,

The first one fix bus-range for HiKey960. It is meant to suppress a
resource conflict warning when PCI probe happens. I sent a separate
patch to be applied by HiSilicon maintainers with the DTS change.

The second one fix the topology of the PCIe bridge found at
HiKey970. It matches the DTS file that I'll submit once everything
gets merged. With such DT schema, all of_node sysfs files should
be created, pointing to the right place. It also supresses the bus-range
warnings.

Please apply on your tree, as it depends on the other patches you
already merged there.

Thanks!
Mauro

Mauro Carvalho Chehab (2):
  dt-bindings: PCI: kirin: fix bus-range
  dt-bindings: PCI: kirin: fix HiKey970 example

 .../bindings/pci/hisilicon,kirin-pcie.yaml    | 67 ++++++++++---------
 1 file changed, 37 insertions(+), 30 deletions(-)

-- 
2.31.1



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

* [PATCH 1/2] dt-bindings: PCI: kirin: fix bus-range
  2021-08-12  7:55 [PATCH 0/2] Fix examples at pci/hisilicon,kirin-pcie.yaml Mauro Carvalho Chehab
@ 2021-08-12  7:55 ` Mauro Carvalho Chehab
  2021-08-12  7:55 ` [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example Mauro Carvalho Chehab
  1 sibling, 0 replies; 7+ messages in thread
From: Mauro Carvalho Chehab @ 2021-08-12  7:55 UTC (permalink / raw)
  To: Rob Herring
  Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Binghui Wang,
	Bjorn Helgaas, Rob Herring, Xiaowei Song, devicetree,
	linux-kernel, linux-pci

Using bus-range = <0 1> causes a runtime warning:

            [    5.363450] pci_bus 0000:00: root bus resource [bus 00-01]
            [    5.396998] pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus 00-01] (conflicts with (null) [bus 00-01])
            [    5.284831] pci 0000:00:00.0: PCI bridge to [bus 01-ff]

On Kirin 960, changing to bus-range = <0 0xff> produces a
cleaner log.

Kirin 970 is more complex, so better to just drop bus-range
as a hole.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 .../devicetree/bindings/pci/hisilicon,kirin-pcie.yaml          | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
index c0551d2e606d..d05deebe9dbb 100644
--- a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
@@ -66,7 +66,7 @@ examples:
               <0x0 0xf3f20000 0x0 0x40000>,
               <0x0 0xf5000000 0x0 0x2000>;
         reg-names = "dbi", "apb", "phy", "config";
-        bus-range = <0x0  0x1>;
+        bus-range = <0x0  0xff>;
         #address-cells = <3>;
         #size-cells = <2>;
         device_type = "pci";
@@ -97,7 +97,6 @@ examples:
               <0x0 0xfc180000 0x0 0x1000>,
               <0x0 0xf5000000 0x0 0x2000>;
         reg-names = "dbi", "apb", "config";
-        bus-range = <0x0  0x1>;
         msi-parent = <&its_pcie>;
         #address-cells = <3>;
         #size-cells = <2>;
-- 
2.31.1


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

* [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example
  2021-08-12  7:55 [PATCH 0/2] Fix examples at pci/hisilicon,kirin-pcie.yaml Mauro Carvalho Chehab
  2021-08-12  7:55 ` [PATCH 1/2] dt-bindings: PCI: kirin: fix bus-range Mauro Carvalho Chehab
@ 2021-08-12  7:55 ` Mauro Carvalho Chehab
  2021-08-12 12:56   ` Rob Herring
  1 sibling, 1 reply; 7+ messages in thread
From: Mauro Carvalho Chehab @ 2021-08-12  7:55 UTC (permalink / raw)
  To: Rob Herring
  Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Binghui Wang,
	Bjorn Helgaas, Rob Herring, Xiaowei Song, devicetree,
	linux-kernel, linux-pci

The given example doesn't produce all of_nodes at sysfs.
Update it to reflect what's actually working.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 .../bindings/pci/hisilicon,kirin-pcie.yaml    | 64 +++++++++++--------
 1 file changed, 36 insertions(+), 28 deletions(-)

diff --git a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
index d05deebe9dbb..668a09e27139 100644
--- a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
@@ -97,7 +97,6 @@ examples:
               <0x0 0xfc180000 0x0 0x1000>,
               <0x0 0xf5000000 0x0 0x2000>;
         reg-names = "dbi", "apb", "config";
-        msi-parent = <&its_pcie>;
         #address-cells = <3>;
         #size-cells = <2>;
         device_type = "pci";
@@ -116,43 +115,52 @@ examples:
                         <0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
         reset-gpios = <&gpio7 0 0>;
         hisilicon,clken-gpios = <&gpio27 3 0>, <&gpio17 0 0>, <&gpio20 6 0>;
-
-        pcie@0 { // Lane 0: PCIe switch: Bus 1, Device 0
-          reg = <0 0 0 0 0>;
+        pcie@0,0 { // Lane 0: PCIe switch: Bus 1, Device 0
+          reg = <0x80 0 0 0 0>;
           compatible = "pciclass,0604";
           device_type = "pci";
           #address-cells = <3>;
           #size-cells = <2>;
           ranges;
-          pcie@1,0 { // Lane 4: M.2
-            reg = <0x800 0 0 0 0>;
+          msi-parent = <&its_pcie>;
+
+          pcie@0,0 { // Lane 0: upstream
+            reg = <0 0 0 0 0>;
             compatible = "pciclass,0604";
             device_type = "pci";
-            reset-gpios = <&gpio3 1 0>;
-            clkreq-gpios = <&gpio27 3 0 >;
-            #address-cells = <3>;
-            #size-cells = <2>;
-            ranges;
-          };
-          pcie@5,0 { // Lane 5: Mini PCIe
-            reg = <0x2800 0 0 0 0>;
-            compatible = "pciclass,0604";
-            device_type = "pci";
-            reset-gpios = <&gpio27 4 0 >;
-            clkreq-gpios = <&gpio17 0 0 >;
-            #address-cells = <3>;
-            #size-cells = <2>;
-            ranges;
-          };
-          pcie@7,0 { // Lane 6: Ethernet
-            reg = <0x3800 0 0 0 0>;
-            compatible = "pciclass,0604";
-            device_type = "pci";
-            reset-gpios = <&gpio25 2 0 >;
-            clkreq-gpios = <&gpio20 6 0 >;
             #address-cells = <3>;
             #size-cells = <2>;
             ranges;
+
+            pcie@1,0 { // Lane 4: M.2
+              reg = <0x0800 0 0 0 0>;
+              compatible = "pciclass,0604";
+              device_type = "pci";
+              reset-gpios = <&gpio3 1 0>;
+              #address-cells = <3>;
+              #size-cells = <2>;
+              ranges;
+            };
+
+            pcie@5,0 { // Lane 5: Mini PCIe
+              reg = <0x2800 0 0 0 0>;
+              compatible = "pciclass,0604";
+              device_type = "pci";
+              reset-gpios = <&gpio27 4 0 >;
+              #address-cells = <3>;
+              #size-cells = <2>;
+              ranges;
+            };
+
+            pcie@7,0 { // Lane 6: Ethernet
+              reg = <0x03800 0 0 0 0>;
+              compatible = "pciclass,0604";
+              device_type = "pci";
+              reset-gpios = <&gpio25 2 0 >;
+              #address-cells = <3>;
+              #size-cells = <2>;
+              ranges;
+            };
           };
         };
       };
-- 
2.31.1


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

* Re: [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example
  2021-08-12  7:55 ` [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example Mauro Carvalho Chehab
@ 2021-08-12 12:56   ` Rob Herring
  2021-08-13 14:32     ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 7+ messages in thread
From: Rob Herring @ 2021-08-12 12:56 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Marc Zyngier
  Cc: linuxarm, mauro.chehab, Binghui Wang, Bjorn Helgaas,
	Xiaowei Song, devicetree, linux-kernel, linux-pci

On Thu, Aug 12, 2021 at 09:55:52AM +0200, Mauro Carvalho Chehab wrote:
> The given example doesn't produce all of_nodes at sysfs.
> Update it to reflect what's actually working.
> 
> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> ---
>  .../bindings/pci/hisilicon,kirin-pcie.yaml    | 64 +++++++++++--------
>  1 file changed, 36 insertions(+), 28 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
> index d05deebe9dbb..668a09e27139 100644
> --- a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
> +++ b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
> @@ -97,7 +97,6 @@ examples:
>                <0x0 0xfc180000 0x0 0x1000>,
>                <0x0 0xf5000000 0x0 0x2000>;
>          reg-names = "dbi", "apb", "config";
> -        msi-parent = <&its_pcie>;
>          #address-cells = <3>;
>          #size-cells = <2>;
>          device_type = "pci";
> @@ -116,43 +115,52 @@ examples:
>                          <0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
>          reset-gpios = <&gpio7 0 0>;
>          hisilicon,clken-gpios = <&gpio27 3 0>, <&gpio17 0 0>, <&gpio20 6 0>;
> -
> -        pcie@0 { // Lane 0: PCIe switch: Bus 1, Device 0
> -          reg = <0 0 0 0 0>;
> +        pcie@0,0 { // Lane 0: PCIe switch: Bus 1, Device 0
> +          reg = <0x80 0 0 0 0>;
>            compatible = "pciclass,0604";
>            device_type = "pci";
>            #address-cells = <3>;
>            #size-cells = <2>;
>            ranges;
> -          pcie@1,0 { // Lane 4: M.2
> -            reg = <0x800 0 0 0 0>;
> +          msi-parent = <&its_pcie>;

Why do we need this change? Adding the child nodes shouldn't change 
the behavior here. I'd expect that we'd walk the parent nodes until we 
find a 'msi-parent' much like 'interrupt-parent'.

It looks like we walk PCI bus parents to get the MSI domain, but we 
don't walk the DT node parents. 

Adding Marc for his thoughts.

Rob

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

* Re: [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example
  2021-08-12 12:56   ` Rob Herring
@ 2021-08-13 14:32     ` Mauro Carvalho Chehab
  2021-08-13 14:39       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 7+ messages in thread
From: Mauro Carvalho Chehab @ 2021-08-13 14:32 UTC (permalink / raw)
  To: Rob Herring
  Cc: Marc Zyngier, linuxarm, mauro.chehab, Xiaowei Song, linux-kernel

Em Thu, 12 Aug 2021 07:56:56 -0500
Rob Herring <robh@kernel.org> escreveu:

> > +          msi-parent = <&its_pcie>;  
> 
> Why do we need this change? Adding the child nodes shouldn't change 
> the behavior here. I'd expect that we'd walk the parent nodes until we 
> find a 'msi-parent' much like 'interrupt-parent'.
> 
> It looks like we walk PCI bus parents to get the MSI domain, but we 
> don't walk the DT node parents. 
> 
> Adding Marc for his thoughts.

This is actually not directly related with the pcie hierarchy needed by the
per-slot PERST# signal, but it seems to be related to the fact that, on
this device, we have this topology:


	+------------+
	| Kirin 970  |       +------------+
        | PCIe bus 0 |  ---> | PCIe bus 1 | ---> PCI bus (2 slots + Eth)
	+------------+       +------------+

With this change, we have ("version 1"):

    soc {
	its_pcie: interrupt-controller@f5100000 {
		reg = <0x0 0xf5100000 0x0 0x100000>;
		compatible = "arm,gic-v3-its";
		msi-controller;
	};
	pcie@f4000000 {
		#interrupt-cells = <1>;
		interrupts = <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "msi";
		interrupt-map-mask = <0 0 0 7>;
		interrupt-map = <0x0 0 0 1 &gic GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
				<0x0 0 0 2 &gic GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
				<0x0 0 0 3 &gic GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
				<0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
		pcie@0,0 {
			msi-parent = <&its_pcie>;

		};		
	};
    };

While the original version ("version 2") was:

    soc {
	its_pcie: interrupt-controller@f5100000 {
		reg = <0x0 0xf5100000 0x0 0x100000>;
		compatible = "arm,gic-v3-its";
		msi-controller;
	};
	pcie@f4000000 {
		#interrupt-cells = <1>;
		interrupts = <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "msi";
		interrupt-map-mask = <0 0 0 7>;
		interrupt-map = <0x0 0 0 1 &gic GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
				<0x0 0 0 2 &gic GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
				<0x0 0 0 3 &gic GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
				<0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
		msi-parent = <&its_pcie>;
		pcie@0,0 {
			... (no msi-parent here)
		};		
	};
    };

With both versions, PCI works OK.

Wowever, "version 2" produce lots of crap at dmesg (see enclosed).

The root cause seems to be happening on this function:

	static int pci_msi_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
	{
		struct irq_domain *domain;
	
		domain = dev_get_msi_domain(&dev->dev);
		if (domain && irq_domain_is_hierarchy(domain))
			return msi_domain_alloc_irqs(domain, &dev->dev, nvec);

		return arch_setup_msi_irqs(dev, nvec, type);
	}

It sounds that dev_get_msi_domain() fails with "version 1", probably
because of the additional PCIe bridge, but works fine with "version 2".

Thanks,
Mauro

[    5.034618] ------------[ cut here ]------------
[    5.039239] WARNING: CPU: 4 PID: 7 at include/linux/msi.h:256 __pci_enable_msi_range+0x398/0x59c
[    5.048035] Modules linked in: wl18xx(+) wlcore mac80211 libarc4 cfg80211 wlcore_sdio crct10dif_ce tcpci_rt1711h tcpci tcpm typec phy_hi3670_usb3 phy_hi3670_pcie pcie_kirin hisi_hikey_usb rfkill drm fuse ip_tables x_tables ipv6
[    5.068231] CPU: 4 PID: 7 Comm: kworker/u16:0 Not tainted 5.14.0-rc1+ #340
[    5.075103] Hardware name: HiKey970 (DT)
[    5.079020] Workqueue: events_unbound deferred_probe_work_func
[    5.084855] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
[    5.088800] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    5.090856] pc : __pci_enable_msi_range+0x398/0x59c
[    5.090860] lr : __pci_enable_msi_range+0x2b8/0x59c
[    5.109813] sp : ffff80001220b670
[    5.113119] x29: ffff80001220b670 x28: ffff000104547000 x27: 0000000000000001
[    5.120252] x26: ffff0001045472f0 x25: ffff80001216626c x24: 0000000000000000
[    5.127383] x23: ffff0001045470c8 x22: 0000000000000001 x21: 0000000000000001
[    5.129006] mmc_host mmc1: Bus speed (slot 0) = 25000000Hz (slot req 25000000Hz, actual 25000000HZ div = 0)
[    5.134515] x20: 0000000000000001 x19: ffff0001055b7d00 x18: 00000000fffffffd
[    5.134519] x17: 6572702066666666 x16: 6632376678302d30 x15: 0000000000000020
[    5.158527] x14: 0000000000000001 x13: ffff00010e9ec803 x12: 0000000000000040
[    5.165663] x11: ffff000100400248 x10: ffff00010040024a x9 : 0000000000000000
[    5.172805] x8 : ffff0001055b7d80 x7 : ffff800013000000 x6 : ffff800008f73190
[    5.185571] x5 : 0000000040000000 x4 : 0000000000000000 x3 : ffff800010808ba0
[    5.194702] x2 : 0000000000000000 x1 : ffff0001045472f0 x0 : 0000000000000000
[    5.201855] Call trace:
[    5.201859]  __pci_enable_msi_range+0x398/0x59c
[    5.201868]  pci_alloc_irq_vectors_affinity+0xe0/0x140
[    5.201872]  pcie_port_device_register+0x15c/0x4fc
[    5.201877]  pcie_portdrv_probe+0x44/0xfc
[    5.201881]  local_pci_probe+0x40/0xac
[    5.201886]  pci_device_probe+0x114/0x1b0
[    5.201891]  really_probe+0x1b0/0x42c
[    5.201895]  __driver_probe_device+0x114/0x190
[    5.201899]  driver_probe_device+0x40/0x100
[    5.242782]  __device_attach_driver+0x98/0x130
[    5.242789]  bus_for_each_drv+0x78/0xd0
[    5.242792]  __device_attach+0xdc/0x1c0
[    5.242795]  device_attach+0x14/0x20
[    5.242800]  pci_bus_add_device+0x50/0xb4
[    5.242806]  pci_bus_add_devices+0x3c/0x8c
[    5.266581]  pci_host_probe+0x40/0xc4
[    5.266593]  dw_pcie_host_init+0x198/0x470
[    5.266600]  kirin_pcie_probe+0x5cc/0x88c [pcie_kirin]
[    5.266610]  platform_probe+0x68/0xe0
[    5.266614]  really_probe+0x1b0/0x42c
[    5.272805] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    5.274366]  __driver_probe_device+0x114/0x190
[    5.300468]  driver_probe_device+0x40/0x100
[    5.300480]  __device_attach_driver+0x98/0x130
[    5.300484]  bus_for_each_drv+0x78/0xd0
[    5.300488]  __device_attach+0xdc/0x1c0
[    5.313196] mmc_host mmc1: Bus speed (slot 0) = 25000000Hz (slot req 25000000Hz, actual 25000000HZ div = 0)
[    5.316763]  device_initial_probe+0x14/0x20
[    5.316766]  bus_probe_device+0x98/0xa0
[    5.316770]  deferred_probe_work_func+0x9c/0xf0
[    5.339026]  process_one_work+0x1cc/0x350
[    5.339035]  worker_thread+0x138/0x46c
[    5.339040]  kthread+0x150/0x160
[    5.350007]  ret_from_fork+0x10/0x18
[    5.358700] ---[ end trace a4c2ccee5a840ad8 ]---
[    5.363529] ------------[ cut here ]------------
[    5.373739] WARNING: CPU: 4 PID: 7 at include/linux/msi.h:262 free_msi_irqs+0x54/0x1a0
[    5.373751] Modules linked in: wl18xx wlcore mac80211 libarc4 cfg80211 wlcore_sdio crct10dif_ce tcpci_rt1711h tcpci tcpm typec phy_hi3670_usb3 phy_hi3670_pcie pcie_kirin hisi_hikey_usb rfkill drm fuse ip_tables x_tables ipv6
[    5.402792] CPU: 4 PID: 7 Comm: kworker/u16:0 Tainted: G        W         5.14.0-rc1+ #340
[    5.402801] Hardware name: HiKey970 (DT)
[    5.402804] Workqueue: events_unbound deferred_probe_work_func
[    5.402816] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
[    5.402820] pc : free_msi_irqs+0x54/0x1a0
[    5.402825] lr : __pci_enable_msi_range+0x3dc/0x59c
[    5.402829] sp : ffff80001220b620
[    5.402830] x29: ffff80001220b620 x28: ffff000104547000 x27: 00000000ffffffed
[    5.402835] x26: ffff0001045472f0 x25: ffff0001045470c8 x24: 0000000000000000
[    5.402840] x23: ffff0001045470c8 x22: ffff000104547000 x21: ffff0001045472f0
[    5.402843] x20: 0000000000000001 x19: ffff0001045472f0 x18: 00000000fffffffd
[    5.402847] x17: 6572702066666666 x16: 6632376678302d30 x15: 0000000000000020
[    5.402851] x14: 0000000000000001 x13: ffff00010e9ec803 x12: 0000000000000040
[    5.402855] x11: ffff000100400248 x10: ffff00010040024a
[    5.424804] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    5.426863]  x9 : 0000000000000000
[    5.426866] x8 : ffff0001055b7d80 x7 : ffff800013000000 x6 : ffff800008f73190
[    5.461001] mmc_host mmc1: Bus speed (slot 0) = 25000000Hz (slot req 25000000Hz, actual 25000000HZ div = 0)
[    5.467547] x5 : 0000000040000000 x4 : 0000000000000000 x3 : ffff800010808ba0
[    5.467552] x2 : 0000000000000000 x1 : ffff0001000cd580 x0 : 0000000000000000
[    5.523618] Call trace:
[    5.523621]  free_msi_irqs+0x54/0x1a0
[    5.523625]  __pci_enable_msi_range+0x3dc/0x59c
[    5.541384]  pci_alloc_irq_vectors_affinity+0xe0/0x140
[    5.541392]  pcie_port_device_register+0x15c/0x4fc
[    5.541396]  pcie_portdrv_probe+0x44/0xfc
[    5.541400]  local_pci_probe+0x40/0xac
[    5.541404]  pci_device_probe+0x114/0x1b0
[    5.541407]  really_probe+0x1b0/0x42c
[    5.541412]  __driver_probe_device+0x114/0x190
[    5.571173]  driver_probe_device+0x40/0x100
[    5.571186]  __device_attach_driver+0x98/0x130
[    5.579813]  bus_for_each_drv+0x78/0xd0
[    5.579819]  __device_attach+0xdc/0x1c0
[    5.579822]  device_attach+0x14/0x20
[    5.579826]  pci_bus_add_device+0x50/0xb4
[    5.579830]  pci_bus_add_devices+0x3c/0x8c
[    5.603932]  pci_host_probe+0x40/0xc4
[    5.607754]  dw_pcie_host_init+0x198/0x470
[    5.611850]  kirin_pcie_probe+0x5cc/0x88c [pcie_kirin]
[    5.621932]  platform_probe+0x68/0xe0
[    5.625594]  really_probe+0x1b0/0x42c
[    5.629424]  __driver_probe_device+0x114/0x190
[    5.633870]  driver_probe_device+0x40/0x100
[    5.643685]  __device_attach_driver+0x98/0x130
[    5.648123]  bus_for_each_drv+0x78/0xd0
[    5.652121]  __device_attach+0xdc/0x1c0
[    5.656118]  device_initial_probe+0x14/0x20
[    5.660295]  bus_probe_device+0x98/0xa0
[    5.669763]  deferred_probe_work_func+0x9c/0xf0
[    5.674288]  process_one_work+0x1cc/0x350
[    5.678459]  worker_thread+0x138/0x46c
[    5.682202]  kthread+0x150/0x160
[    5.690802]  ret_from_fork+0x10/0x18
[    5.694375] ---[ end trace a4c2ccee5a840ad9 ]---
[    5.699345] pcieport 0000:00:00.0: PME: Signaling with IRQ 57
[    5.699721] pcieport 0000:00:00.0: AER: enabled with IRQ 57
[    5.716257] wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11)
[    5.716612] pcieport 0000:01:00.0: enabling device (0000 -> 0002)
[    5.729396] wlcore: WARNING Detected unconfigured mac address in nvs, derive from fuse instead.
[    5.734803] pcieport 0000:02:07.0: enabling device (0000 -> 0002)
[    5.742879] wlcore: WARNING This default nvs file can be removed from the file system
[    5.755469] ------------[ cut here ]------------
[    5.765439] wlcore: loaded
[    5.766377] WARNING: CPU: 6 PID: 7 at include/linux/msi.h:256 __pci_enable_msix_range+0x5ec/0x6b0
[    5.777977] Modules linked in: wl18xx wlcore mac80211 libarc4 cfg80211 wlcore_sdio crct10dif_ce tcpci_rt1711h tcpci tcpm typec phy_hi3670_usb3 phy_hi3670_pcie pcie_kirin hisi_hikey_usb rfkill drm fuse ip_tables x_tables ipv6
[    5.797948] CPU: 6 PID: 7 Comm: kworker/u16:0 Tainted: G        W         5.14.0-rc1+ #340
[    5.806233] Hardware name: HiKey970 (DT)
[    5.815789] Workqueue: events_unbound deferred_probe_work_func
[    5.821884] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--)
[    5.827915] pc : __pci_enable_msix_range+0x5ec/0x6b0
[    5.827937] lr : __pci_enable_msix_range+0x37c/0x6b0
[    5.827942] sp : ffff80001220b620
[    5.827944] x29: ffff80001220b620 x28: 0000000000000000 x27: ffff000108fce000
[    5.827954] x26: ffff000108fce0c8 x25: 0000000000000001 x24: 0000000000000000
[    5.827958] x23: 000000000000000c x22: 0000000000000001 x21: ffff000108fce2f0
[    5.827962] x20: 0000000000000001 x19: 0000000000000000 x18: 0000000000000002
[    5.827966] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
[    5.827970] x14: 0000000000000000 x13: 000000000000027e x12: ffff80001286b000
[    5.876878] x11: ffff800012869000 x10: 00000000f7200000 x9 : 0000000000000000
[    5.876886] x8 : 0000000000000039 x7 : 0000000000000000 x6 : 000000000000003f
[    5.876891] x5 : ffff000108fce2f0 x4 : ffff80001220b5e0 x3 : 0000000000000000
[    5.876896] x2 : ffff800012869000 x1 : 0000000000000004 x0 : 0000000000000000
[    5.876901] Call trace:
[    5.876904]  __pci_enable_msix_range+0x5ec/0x6b0
[    5.919629]  pci_alloc_irq_vectors_affinity+0xc0/0x140
[    5.919645]  rtl_init_one+0x55c/0xf90
[    5.919653]  local_pci_probe+0x40/0xac
[    5.932195]  pci_device_probe+0x114/0x1b0
[    5.932200]  really_probe+0x1b0/0x42c
[    5.932205]  __driver_probe_device+0x114/0x190
[    5.932209]  driver_probe_device+0x40/0x100
[    5.932212]  __device_attach_driver+0x98/0x130
[    5.932217]  bus_for_each_drv+0x78/0xd0
[    5.932220]  __device_attach+0xdc/0x1c0
[    5.932223]  device_attach+0x14/0x20
[    5.932227]  pci_bus_add_device+0x50/0xb4
[    5.932231]  pci_bus_add_devices+0x3c/0x8c
[    5.932234]  pci_bus_add_devices+0x68/0x8c
[    5.932236]  pci_bus_add_devices+0x68/0x8c
[    5.932239]  pci_bus_add_devices+0x68/0x8c
[    5.932241]  pci_host_probe+0x40/0xc4
[    5.932244]  dw_pcie_host_init+0x198/0x470
[    5.932250]  kirin_pcie_probe+0x5cc/0x88c [pcie_kirin]
[    5.932259]  platform_probe+0x68/0xe0
[    5.932262]  really_probe+0x1b0/0x42c
[    5.932265]  __driver_probe_device+0x114/0x190
[    5.932268]  driver_probe_device+0x40/0x100
[    5.932271]  __device_attach_driver+0x98/0x130
[    5.932274]  bus_for_each_drv+0x78/0xd0
[    5.932277]  __device_attach+0xdc/0x1c0
[    5.932280]  device_initial_probe+0x14/0x20
[    5.932283]  bus_probe_device+0x98/0xa0
[    5.932286]  deferred_probe_work_func+0x9c/0xf0
[    5.932289]  process_one_work+0x1cc/0x350
[    5.932295]  worker_thread+0x138/0x46c
[    5.932298]  kthread+0x150/0x160
[    5.932302]  ret_from_fork+0x10/0x18
[    5.932307] ---[ end trace a4c2ccee5a840ada ]---



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

* Re: [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example
  2021-08-13 14:32     ` Mauro Carvalho Chehab
@ 2021-08-13 14:39       ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 7+ messages in thread
From: Mauro Carvalho Chehab @ 2021-08-13 14:39 UTC (permalink / raw)
  To: Rob Herring
  Cc: Marc Zyngier, linuxarm, mauro.chehab, Xiaowei Song, linux-kernel

Em Fri, 13 Aug 2021 16:32:55 +0200
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> escreveu:

> Em Thu, 12 Aug 2021 07:56:56 -0500
> Rob Herring <robh@kernel.org> escreveu:
> 
> > > +          msi-parent = <&its_pcie>;    
> > 
> > Why do we need this change? Adding the child nodes shouldn't change 
> > the behavior here. I'd expect that we'd walk the parent nodes until we 
> > find a 'msi-parent' much like 'interrupt-parent'.
> > 
> > It looks like we walk PCI bus parents to get the MSI domain, but we 
> > don't walk the DT node parents. 
> > 
> > Adding Marc for his thoughts.  
> 
> This is actually not directly related with the pcie hierarchy needed by the
> per-slot PERST# signal, but it seems to be related to the fact that, on
> this device, we have this topology:
> 
> 
> 	+------------+
> 	| Kirin 970  |       +------------+
>         | PCIe bus 0 |  ---> | PCIe bus 1 | ---> PCI bus (2 slots + Eth)
> 	+------------+       +------------+
> 
> With this change, we have ("version 1"):
> 
>     soc {
> 	its_pcie: interrupt-controller@f5100000 {
> 		reg = <0x0 0xf5100000 0x0 0x100000>;
> 		compatible = "arm,gic-v3-its";
> 		msi-controller;
> 	};
> 	pcie@f4000000 {
> 		#interrupt-cells = <1>;
> 		interrupts = <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
> 		interrupt-names = "msi";
> 		interrupt-map-mask = <0 0 0 7>;
> 		interrupt-map = <0x0 0 0 1 &gic GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
> 				<0x0 0 0 2 &gic GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
> 				<0x0 0 0 3 &gic GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
> 				<0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
> 		pcie@0,0 {
> 			msi-parent = <&its_pcie>;
> 
> 		};		
> 	};
>     };
> 
> While the original version ("version 2") was:
> 
>     soc {
> 	its_pcie: interrupt-controller@f5100000 {
> 		reg = <0x0 0xf5100000 0x0 0x100000>;
> 		compatible = "arm,gic-v3-its";
> 		msi-controller;
> 	};
> 	pcie@f4000000 {
> 		#interrupt-cells = <1>;
> 		interrupts = <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
> 		interrupt-names = "msi";
> 		interrupt-map-mask = <0 0 0 7>;
> 		interrupt-map = <0x0 0 0 1 &gic GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
> 				<0x0 0 0 2 &gic GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
> 				<0x0 0 0 3 &gic GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
> 				<0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
> 		msi-parent = <&its_pcie>;
> 		pcie@0,0 {
> 			... (no msi-parent here)
> 		};		
> 	};
>     };
> 
> With both versions, PCI works OK.
> 
> Wowever, "version 2" produce lots of crap at dmesg (see enclosed).
> 
> The root cause seems to be happening on this function:
> 
> 	static int pci_msi_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
> 	{
> 		struct irq_domain *domain;
> 	
> 		domain = dev_get_msi_domain(&dev->dev);
> 		if (domain && irq_domain_is_hierarchy(domain))
> 			return msi_domain_alloc_irqs(domain, &dev->dev, nvec);
> 
> 		return arch_setup_msi_irqs(dev, nvec, type);
> 	}
> 
> It sounds that dev_get_msi_domain() fails with "version 1", probably
> because of the additional PCIe bridge, but works fine with "version 2".

Sorry, clicked <enter> too soon. I actually meant the reverse here:

It sounds that dev_get_msi_domain() fails with "version 2", probably
because of the additional PCIe bridge, but works fine with "version 1".

> 
> Thanks,
> Mauro
> 
> [    5.034618] ------------[ cut here ]------------
> [    5.039239] WARNING: CPU: 4 PID: 7 at include/linux/msi.h:256 __pci_enable_msi_range+0x398/0x59c
> [    5.048035] Modules linked in: wl18xx(+) wlcore mac80211 libarc4 cfg80211 wlcore_sdio crct10dif_ce tcpci_rt1711h tcpci tcpm typec phy_hi3670_usb3 phy_hi3670_pcie pcie_kirin hisi_hikey_usb rfkill drm fuse ip_tables x_tables ipv6
> [    5.068231] CPU: 4 PID: 7 Comm: kworker/u16:0 Not tainted 5.14.0-rc1+ #340
> [    5.075103] Hardware name: HiKey970 (DT)
> [    5.079020] Workqueue: events_unbound deferred_probe_work_func
> [    5.084855] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
> [    5.088800] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
> [    5.090856] pc : __pci_enable_msi_range+0x398/0x59c
> [    5.090860] lr : __pci_enable_msi_range+0x2b8/0x59c
> [    5.109813] sp : ffff80001220b670
> [    5.113119] x29: ffff80001220b670 x28: ffff000104547000 x27: 0000000000000001
> [    5.120252] x26: ffff0001045472f0 x25: ffff80001216626c x24: 0000000000000000
> [    5.127383] x23: ffff0001045470c8 x22: 0000000000000001 x21: 0000000000000001
> [    5.129006] mmc_host mmc1: Bus speed (slot 0) = 25000000Hz (slot req 25000000Hz, actual 25000000HZ div = 0)
> [    5.134515] x20: 0000000000000001 x19: ffff0001055b7d00 x18: 00000000fffffffd
> [    5.134519] x17: 6572702066666666 x16: 6632376678302d30 x15: 0000000000000020
> [    5.158527] x14: 0000000000000001 x13: ffff00010e9ec803 x12: 0000000000000040
> [    5.165663] x11: ffff000100400248 x10: ffff00010040024a x9 : 0000000000000000
> [    5.172805] x8 : ffff0001055b7d80 x7 : ffff800013000000 x6 : ffff800008f73190
> [    5.185571] x5 : 0000000040000000 x4 : 0000000000000000 x3 : ffff800010808ba0
> [    5.194702] x2 : 0000000000000000 x1 : ffff0001045472f0 x0 : 0000000000000000
> [    5.201855] Call trace:
> [    5.201859]  __pci_enable_msi_range+0x398/0x59c
> [    5.201868]  pci_alloc_irq_vectors_affinity+0xe0/0x140
> [    5.201872]  pcie_port_device_register+0x15c/0x4fc
> [    5.201877]  pcie_portdrv_probe+0x44/0xfc
> [    5.201881]  local_pci_probe+0x40/0xac
> [    5.201886]  pci_device_probe+0x114/0x1b0
> [    5.201891]  really_probe+0x1b0/0x42c
> [    5.201895]  __driver_probe_device+0x114/0x190
> [    5.201899]  driver_probe_device+0x40/0x100
> [    5.242782]  __device_attach_driver+0x98/0x130
> [    5.242789]  bus_for_each_drv+0x78/0xd0
> [    5.242792]  __device_attach+0xdc/0x1c0
> [    5.242795]  device_attach+0x14/0x20
> [    5.242800]  pci_bus_add_device+0x50/0xb4
> [    5.242806]  pci_bus_add_devices+0x3c/0x8c
> [    5.266581]  pci_host_probe+0x40/0xc4
> [    5.266593]  dw_pcie_host_init+0x198/0x470
> [    5.266600]  kirin_pcie_probe+0x5cc/0x88c [pcie_kirin]
> [    5.266610]  platform_probe+0x68/0xe0
> [    5.266614]  really_probe+0x1b0/0x42c
> [    5.272805] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
> [    5.274366]  __driver_probe_device+0x114/0x190
> [    5.300468]  driver_probe_device+0x40/0x100
> [    5.300480]  __device_attach_driver+0x98/0x130
> [    5.300484]  bus_for_each_drv+0x78/0xd0
> [    5.300488]  __device_attach+0xdc/0x1c0
> [    5.313196] mmc_host mmc1: Bus speed (slot 0) = 25000000Hz (slot req 25000000Hz, actual 25000000HZ div = 0)
> [    5.316763]  device_initial_probe+0x14/0x20
> [    5.316766]  bus_probe_device+0x98/0xa0
> [    5.316770]  deferred_probe_work_func+0x9c/0xf0
> [    5.339026]  process_one_work+0x1cc/0x350
> [    5.339035]  worker_thread+0x138/0x46c
> [    5.339040]  kthread+0x150/0x160
> [    5.350007]  ret_from_fork+0x10/0x18
> [    5.358700] ---[ end trace a4c2ccee5a840ad8 ]---
> [    5.363529] ------------[ cut here ]------------
> [    5.373739] WARNING: CPU: 4 PID: 7 at include/linux/msi.h:262 free_msi_irqs+0x54/0x1a0
> [    5.373751] Modules linked in: wl18xx wlcore mac80211 libarc4 cfg80211 wlcore_sdio crct10dif_ce tcpci_rt1711h tcpci tcpm typec phy_hi3670_usb3 phy_hi3670_pcie pcie_kirin hisi_hikey_usb rfkill drm fuse ip_tables x_tables ipv6
> [    5.402792] CPU: 4 PID: 7 Comm: kworker/u16:0 Tainted: G        W         5.14.0-rc1+ #340
> [    5.402801] Hardware name: HiKey970 (DT)
> [    5.402804] Workqueue: events_unbound deferred_probe_work_func
> [    5.402816] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
> [    5.402820] pc : free_msi_irqs+0x54/0x1a0
> [    5.402825] lr : __pci_enable_msi_range+0x3dc/0x59c
> [    5.402829] sp : ffff80001220b620
> [    5.402830] x29: ffff80001220b620 x28: ffff000104547000 x27: 00000000ffffffed
> [    5.402835] x26: ffff0001045472f0 x25: ffff0001045470c8 x24: 0000000000000000
> [    5.402840] x23: ffff0001045470c8 x22: ffff000104547000 x21: ffff0001045472f0
> [    5.402843] x20: 0000000000000001 x19: ffff0001045472f0 x18: 00000000fffffffd
> [    5.402847] x17: 6572702066666666 x16: 6632376678302d30 x15: 0000000000000020
> [    5.402851] x14: 0000000000000001 x13: ffff00010e9ec803 x12: 0000000000000040
> [    5.402855] x11: ffff000100400248 x10: ffff00010040024a
> [    5.424804] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
> [    5.426863]  x9 : 0000000000000000
> [    5.426866] x8 : ffff0001055b7d80 x7 : ffff800013000000 x6 : ffff800008f73190
> [    5.461001] mmc_host mmc1: Bus speed (slot 0) = 25000000Hz (slot req 25000000Hz, actual 25000000HZ div = 0)
> [    5.467547] x5 : 0000000040000000 x4 : 0000000000000000 x3 : ffff800010808ba0
> [    5.467552] x2 : 0000000000000000 x1 : ffff0001000cd580 x0 : 0000000000000000
> [    5.523618] Call trace:
> [    5.523621]  free_msi_irqs+0x54/0x1a0
> [    5.523625]  __pci_enable_msi_range+0x3dc/0x59c
> [    5.541384]  pci_alloc_irq_vectors_affinity+0xe0/0x140
> [    5.541392]  pcie_port_device_register+0x15c/0x4fc
> [    5.541396]  pcie_portdrv_probe+0x44/0xfc
> [    5.541400]  local_pci_probe+0x40/0xac
> [    5.541404]  pci_device_probe+0x114/0x1b0
> [    5.541407]  really_probe+0x1b0/0x42c
> [    5.541412]  __driver_probe_device+0x114/0x190
> [    5.571173]  driver_probe_device+0x40/0x100
> [    5.571186]  __device_attach_driver+0x98/0x130
> [    5.579813]  bus_for_each_drv+0x78/0xd0
> [    5.579819]  __device_attach+0xdc/0x1c0
> [    5.579822]  device_attach+0x14/0x20
> [    5.579826]  pci_bus_add_device+0x50/0xb4
> [    5.579830]  pci_bus_add_devices+0x3c/0x8c
> [    5.603932]  pci_host_probe+0x40/0xc4
> [    5.607754]  dw_pcie_host_init+0x198/0x470
> [    5.611850]  kirin_pcie_probe+0x5cc/0x88c [pcie_kirin]
> [    5.621932]  platform_probe+0x68/0xe0
> [    5.625594]  really_probe+0x1b0/0x42c
> [    5.629424]  __driver_probe_device+0x114/0x190
> [    5.633870]  driver_probe_device+0x40/0x100
> [    5.643685]  __device_attach_driver+0x98/0x130
> [    5.648123]  bus_for_each_drv+0x78/0xd0
> [    5.652121]  __device_attach+0xdc/0x1c0
> [    5.656118]  device_initial_probe+0x14/0x20
> [    5.660295]  bus_probe_device+0x98/0xa0
> [    5.669763]  deferred_probe_work_func+0x9c/0xf0
> [    5.674288]  process_one_work+0x1cc/0x350
> [    5.678459]  worker_thread+0x138/0x46c
> [    5.682202]  kthread+0x150/0x160
> [    5.690802]  ret_from_fork+0x10/0x18
> [    5.694375] ---[ end trace a4c2ccee5a840ad9 ]---
> [    5.699345] pcieport 0000:00:00.0: PME: Signaling with IRQ 57
> [    5.699721] pcieport 0000:00:00.0: AER: enabled with IRQ 57
> [    5.716257] wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11)
> [    5.716612] pcieport 0000:01:00.0: enabling device (0000 -> 0002)
> [    5.729396] wlcore: WARNING Detected unconfigured mac address in nvs, derive from fuse instead.
> [    5.734803] pcieport 0000:02:07.0: enabling device (0000 -> 0002)
> [    5.742879] wlcore: WARNING This default nvs file can be removed from the file system
> [    5.755469] ------------[ cut here ]------------
> [    5.765439] wlcore: loaded
> [    5.766377] WARNING: CPU: 6 PID: 7 at include/linux/msi.h:256 __pci_enable_msix_range+0x5ec/0x6b0
> [    5.777977] Modules linked in: wl18xx wlcore mac80211 libarc4 cfg80211 wlcore_sdio crct10dif_ce tcpci_rt1711h tcpci tcpm typec phy_hi3670_usb3 phy_hi3670_pcie pcie_kirin hisi_hikey_usb rfkill drm fuse ip_tables x_tables ipv6
> [    5.797948] CPU: 6 PID: 7 Comm: kworker/u16:0 Tainted: G        W         5.14.0-rc1+ #340
> [    5.806233] Hardware name: HiKey970 (DT)
> [    5.815789] Workqueue: events_unbound deferred_probe_work_func
> [    5.821884] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--)
> [    5.827915] pc : __pci_enable_msix_range+0x5ec/0x6b0
> [    5.827937] lr : __pci_enable_msix_range+0x37c/0x6b0
> [    5.827942] sp : ffff80001220b620
> [    5.827944] x29: ffff80001220b620 x28: 0000000000000000 x27: ffff000108fce000
> [    5.827954] x26: ffff000108fce0c8 x25: 0000000000000001 x24: 0000000000000000
> [    5.827958] x23: 000000000000000c x22: 0000000000000001 x21: ffff000108fce2f0
> [    5.827962] x20: 0000000000000001 x19: 0000000000000000 x18: 0000000000000002
> [    5.827966] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
> [    5.827970] x14: 0000000000000000 x13: 000000000000027e x12: ffff80001286b000
> [    5.876878] x11: ffff800012869000 x10: 00000000f7200000 x9 : 0000000000000000
> [    5.876886] x8 : 0000000000000039 x7 : 0000000000000000 x6 : 000000000000003f
> [    5.876891] x5 : ffff000108fce2f0 x4 : ffff80001220b5e0 x3 : 0000000000000000
> [    5.876896] x2 : ffff800012869000 x1 : 0000000000000004 x0 : 0000000000000000
> [    5.876901] Call trace:
> [    5.876904]  __pci_enable_msix_range+0x5ec/0x6b0
> [    5.919629]  pci_alloc_irq_vectors_affinity+0xc0/0x140
> [    5.919645]  rtl_init_one+0x55c/0xf90
> [    5.919653]  local_pci_probe+0x40/0xac
> [    5.932195]  pci_device_probe+0x114/0x1b0
> [    5.932200]  really_probe+0x1b0/0x42c
> [    5.932205]  __driver_probe_device+0x114/0x190
> [    5.932209]  driver_probe_device+0x40/0x100
> [    5.932212]  __device_attach_driver+0x98/0x130
> [    5.932217]  bus_for_each_drv+0x78/0xd0
> [    5.932220]  __device_attach+0xdc/0x1c0
> [    5.932223]  device_attach+0x14/0x20
> [    5.932227]  pci_bus_add_device+0x50/0xb4
> [    5.932231]  pci_bus_add_devices+0x3c/0x8c
> [    5.932234]  pci_bus_add_devices+0x68/0x8c
> [    5.932236]  pci_bus_add_devices+0x68/0x8c
> [    5.932239]  pci_bus_add_devices+0x68/0x8c
> [    5.932241]  pci_host_probe+0x40/0xc4
> [    5.932244]  dw_pcie_host_init+0x198/0x470
> [    5.932250]  kirin_pcie_probe+0x5cc/0x88c [pcie_kirin]
> [    5.932259]  platform_probe+0x68/0xe0
> [    5.932262]  really_probe+0x1b0/0x42c
> [    5.932265]  __driver_probe_device+0x114/0x190
> [    5.932268]  driver_probe_device+0x40/0x100
> [    5.932271]  __device_attach_driver+0x98/0x130
> [    5.932274]  bus_for_each_drv+0x78/0xd0
> [    5.932277]  __device_attach+0xdc/0x1c0
> [    5.932280]  device_initial_probe+0x14/0x20
> [    5.932283]  bus_probe_device+0x98/0xa0
> [    5.932286]  deferred_probe_work_func+0x9c/0xf0
> [    5.932289]  process_one_work+0x1cc/0x350
> [    5.932295]  worker_thread+0x138/0x46c
> [    5.932298]  kthread+0x150/0x160
> [    5.932302]  ret_from_fork+0x10/0x18
> [    5.932307] ---[ end trace a4c2ccee5a840ada ]---
> 
> 



Thanks,
Mauro

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

* [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example
  2021-08-11  7:54 [PATCH 0/2] Adjust HiKey examples for kirin-pcie Mauro Carvalho Chehab
@ 2021-08-11  7:54 ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 7+ messages in thread
From: Mauro Carvalho Chehab @ 2021-08-11  7:54 UTC (permalink / raw)
  To: Rob Herring
  Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Binghui Wang,
	Bjorn Helgaas, Xiaowei Song, devicetree, linux-kernel, linux-pci

The given example doesn't produce all of_nodes at sysfs.
Update it to reflect what's actually working.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 .../bindings/pci/hisilicon,kirin-pcie.yaml    | 64 +++++++++++--------
 1 file changed, 36 insertions(+), 28 deletions(-)

diff --git a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
index d05deebe9dbb..668a09e27139 100644
--- a/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
@@ -97,7 +97,6 @@ examples:
               <0x0 0xfc180000 0x0 0x1000>,
               <0x0 0xf5000000 0x0 0x2000>;
         reg-names = "dbi", "apb", "config";
-        msi-parent = <&its_pcie>;
         #address-cells = <3>;
         #size-cells = <2>;
         device_type = "pci";
@@ -116,43 +115,52 @@ examples:
                         <0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
         reset-gpios = <&gpio7 0 0>;
         hisilicon,clken-gpios = <&gpio27 3 0>, <&gpio17 0 0>, <&gpio20 6 0>;
-
-        pcie@0 { // Lane 0: PCIe switch: Bus 1, Device 0
-          reg = <0 0 0 0 0>;
+        pcie@0,0 { // Lane 0: PCIe switch: Bus 1, Device 0
+          reg = <0x80 0 0 0 0>;
           compatible = "pciclass,0604";
           device_type = "pci";
           #address-cells = <3>;
           #size-cells = <2>;
           ranges;
-          pcie@1,0 { // Lane 4: M.2
-            reg = <0x800 0 0 0 0>;
+          msi-parent = <&its_pcie>;
+
+          pcie@0,0 { // Lane 0: upstream
+            reg = <0 0 0 0 0>;
             compatible = "pciclass,0604";
             device_type = "pci";
-            reset-gpios = <&gpio3 1 0>;
-            clkreq-gpios = <&gpio27 3 0 >;
-            #address-cells = <3>;
-            #size-cells = <2>;
-            ranges;
-          };
-          pcie@5,0 { // Lane 5: Mini PCIe
-            reg = <0x2800 0 0 0 0>;
-            compatible = "pciclass,0604";
-            device_type = "pci";
-            reset-gpios = <&gpio27 4 0 >;
-            clkreq-gpios = <&gpio17 0 0 >;
-            #address-cells = <3>;
-            #size-cells = <2>;
-            ranges;
-          };
-          pcie@7,0 { // Lane 6: Ethernet
-            reg = <0x3800 0 0 0 0>;
-            compatible = "pciclass,0604";
-            device_type = "pci";
-            reset-gpios = <&gpio25 2 0 >;
-            clkreq-gpios = <&gpio20 6 0 >;
             #address-cells = <3>;
             #size-cells = <2>;
             ranges;
+
+            pcie@1,0 { // Lane 4: M.2
+              reg = <0x0800 0 0 0 0>;
+              compatible = "pciclass,0604";
+              device_type = "pci";
+              reset-gpios = <&gpio3 1 0>;
+              #address-cells = <3>;
+              #size-cells = <2>;
+              ranges;
+            };
+
+            pcie@5,0 { // Lane 5: Mini PCIe
+              reg = <0x2800 0 0 0 0>;
+              compatible = "pciclass,0604";
+              device_type = "pci";
+              reset-gpios = <&gpio27 4 0 >;
+              #address-cells = <3>;
+              #size-cells = <2>;
+              ranges;
+            };
+
+            pcie@7,0 { // Lane 6: Ethernet
+              reg = <0x03800 0 0 0 0>;
+              compatible = "pciclass,0604";
+              device_type = "pci";
+              reset-gpios = <&gpio25 2 0 >;
+              #address-cells = <3>;
+              #size-cells = <2>;
+              ranges;
+            };
           };
         };
       };
-- 
2.31.1


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

end of thread, other threads:[~2021-08-13 14:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-12  7:55 [PATCH 0/2] Fix examples at pci/hisilicon,kirin-pcie.yaml Mauro Carvalho Chehab
2021-08-12  7:55 ` [PATCH 1/2] dt-bindings: PCI: kirin: fix bus-range Mauro Carvalho Chehab
2021-08-12  7:55 ` [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example Mauro Carvalho Chehab
2021-08-12 12:56   ` Rob Herring
2021-08-13 14:32     ` Mauro Carvalho Chehab
2021-08-13 14:39       ` Mauro Carvalho Chehab
  -- strict thread matches above, loose matches on Subject: below --
2021-08-11  7:54 [PATCH 0/2] Adjust HiKey examples for kirin-pcie Mauro Carvalho Chehab
2021-08-11  7:54 ` [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example Mauro Carvalho Chehab

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