[Arm64-baikalm] [PATCH] device tree: BM-1000 PCI-e is NOT compatible with dw-pcie

Alexey Sheplyakov asheplyakov на basealt.ru
Вт Июл 19 16:21:23 MSK 2022


For one NVME drives don't work:

[  132.874676] nvme nvme1: I/O 13 QID 0 timeout, completion polled
[  247.562614] INFO: task kworker/u16:1:64 blocked for more than 122 seconds.
[  247.569714]       Not tainted 5.19.0-rc7-00043-g385e32fcf0e8 #1
[  247.575731] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  247.583656] task:kworker/u16:1   state:D stack:    0 pid:   64 ppid:     2 flags:0x00000008
[  247.592107] Workqueue: events_unbound async_run_entry_fn
[  247.597521] Call trace:
[  247.600047]  __switch_to+0xf8/0x170
[  247.603618]  __schedule+0x390/0xb3c
[  247.607182]  schedule+0x5c/0xd4
[  247.610399]  schedule_timeout+0xd8/0x110
[  247.614401]  __wait_for_common+0xb0/0x1d0
[  247.618508]  wait_for_completion+0x2c/0x40
[  247.622681]  __flush_work+0x200/0x4c0
[  247.626420]  flush_work+0x20/0x30
[  247.629812]  nvme_async_probe+0x28/0x50 [nvme]
[  247.634349]  async_run_entry_fn+0x44/0x170
[  247.638527]  process_one_work+0x264/0x684
[  247.642612]  worker_thread+0x80/0x42c
[  247.646351]  kthread+0x100/0x110
[  247.649655]  ret_from_fork+0x10/0x20

Other devices (PCI-e Ethernet controller) also fail due to timeouts.
This has been tested on several boards (TF307 rev 1.4, Rhodeola).
To avoid the problem remove "compatible = snps,dw-pcie" from PCI-E
nodes in the DTB.

---
 src/kernel/arch/arm64/boot/dts/baikal/bm1000.dtsi | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/kernel/arch/arm64/boot/dts/baikal/bm1000.dtsi b/src/kernel/arch/arm64/boot/dts/baikal/bm1000.dtsi
index 8e5d49776..a201dfb2c 100644
--- a/src/kernel/arch/arm64/boot/dts/baikal/bm1000.dtsi
+++ b/src/kernel/arch/arm64/boot/dts/baikal/bm1000.dtsi
@@ -321,7 +321,7 @@
 
 		pcie0: pcie at 2200000 { /* PCIe x4 #0 */
 			device_type = "pci";
-			compatible = "baikal,bm1000-pcie", "baikal,pcie-m", "snps,dw-pcie";
+			compatible = "baikal,bm1000-pcie", "baikal,pcie-m";
 			reg = <0x00000000 0x02200000 0x0 0x1000>,
 			      <0x00000040 0x00000000 0x0 0x10000000>;
 			reg-names = "dbi", "config";
@@ -343,7 +343,7 @@
 
 		pcie1: pcie at 2210000 { /* PCIe x4 #1 */
 			device_type = "pci";
-			compatible = "baikal,bm1000-pcie", "baikal,pcie-m", "snps,dw-pcie";
+			compatible = "baikal,bm1000-pcie", "baikal,pcie-m";
 			reg = <0x00000000 0x02210000 0x0 0x1000>,
 			      <0x00000050 0x00000000 0x0 0x10000000>;
 			reg-names = "dbi", "config";
@@ -365,7 +365,7 @@
 
 		pcie2: pcie at 2220000 { /* PCIe x8 */
 			device_type = "pci";
-			compatible = "baikal,bm1000-pcie", "baikal,pcie-m", "snps,dw-pcie";
+			compatible = "baikal,bm1000-pcie", "baikal,pcie-m";
 			reg = <0x00000000 0x02220000 0x0 0x1000>,
 			      <0x00000060 0x00000000 0x0 0x10000000>;
 			reg-names = "dbi", "config";
-- 
2.32.0



Подробная информация о списке рассылки Arm64-baikalm