All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Adjust HiKey examples for kirin-pcie
@ 2021-08-11  7:54 Mauro Carvalho Chehab
  2021-08-11  7:54 ` [PATCH 1/2] dt-bindings: PCI: kirin: fix bus-range Mauro Carvalho Chehab
  2021-08-11  7:54 ` [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-11  7:54 UTC (permalink / raw)
  To: Rob Herring
  Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Wei Xu,
	Binghui Wang, Xiaowei Song, devicetree, linux-kernel, linux-pci

Rob,

As discussed on another thread, there are two issues at
pci/hisilicon,kirin-pcie.yaml:

- The bus-range parameters are causing warnings;
- The Kirin970 example doesn't reflect the right device
  hierarchy, causing some of_node files under sysfs to
  not be initialized.

This small series fix both.

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

 .../bindings   | 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-11  7:54 [PATCH 0/2] Adjust HiKey examples for kirin-pcie Mauro Carvalho Chehab
@ 2021-08-11  7:54 ` Mauro Carvalho Chehab
  2021-08-11  7:54 ` [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-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

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-11  7:54 [PATCH 0/2] Adjust HiKey examples for kirin-pcie Mauro Carvalho Chehab
  2021-08-11  7:54 ` [PATCH 1/2] dt-bindings: PCI: kirin: fix bus-range Mauro Carvalho Chehab
@ 2021-08-11  7:54 ` Mauro Carvalho Chehab
  1 sibling, 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

* 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

* 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-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

* [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 ` Mauro Carvalho Chehab
  2021-08-12 12:56   ` Rob Herring
  0 siblings, 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

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-11  7:54 [PATCH 0/2] Adjust HiKey examples for kirin-pcie Mauro Carvalho Chehab
2021-08-11  7:54 ` [PATCH 1/2] dt-bindings: PCI: kirin: fix bus-range Mauro Carvalho Chehab
2021-08-11  7:54 ` [PATCH 2/2] dt-bindings: PCI: kirin: fix HiKey970 example Mauro Carvalho Chehab
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 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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.