Re: [RESEND] Re: [PATCH] PCI: dw-rockchip: Skip waiting for link up

Shawn Lin
2025-11-10T10:15:53Z

在 2025/11/10 星期一 15:52, FUKAUMI Naoki 写道:
> Hi Shawn,
>
> On 11/10/25 16:12, Shawn Lin wrote:
> (snip)> Thanks for testing. I just got a ASM2806 switch as yours and
> verified it
>> on vanilla v6.18-rc5. After 30 times of cold boot, two NVMes behind
>> ASM2806 work as expected. Nothing special happened when I checked
>> with PA as well. You could help check the log and lspci dump there[1].
>>
>> [1]https://pastebin.com/sAF1fT0g
>
> Thanks for the info!
>
> I tried ASM2806 on Radxa ROCK 5B (RK3588).
>  https://gist.github.com/RadxaNaoki/640e47d377add9fe38301de164d4058e
>
> It doesn't work on PCIe 2.0 (M.2 E Key), but it does work on PCIe 3.0
> (M.2 M Key).
>
> Could you try PCIe 2.0 slot on your board?

I did, it doesn't work on PCIe 2.0 slot. From the PA, I could see
the link is still in training during pci_host_probe() is called.
Add some delay before pci_rescan_bus() in pcie-dw-rockchip doesn't
help. But the below change should work as we delayed pci_host_probe().

--- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c
+++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c
@@ -236,6 +236,8 @@ static int rockchip_pcie_start_link(struct dw_pcie *pci)
msleep(PCIE_T_PVPERL_MS);
gpiod_set_value_cansleep(rockchip->rst_gpio, 1);

+ msleep(50);
+
return 0;

Otherwise we got:

[ 0.841518] pci_bus 0003:33: busn_res: can not insert [bus 33-31]
under [bus 32-31] (conflicts with (null) [bus 32-31])
[ 0.842596] pci_bus 0003:33: busn_res: [bus 33-31] end is updated to 33
[ 0.843184] pci_bus 0003:33: busn_res: can not insert [bus 33] under
[bus 32-31] (conflicts with (null) [bus 32-31])
[ 0.844120] pci 0003:32:00.0: devices behind bridge are unusable
because [bus 33] cannot be assigned for them
[ 0.845229] pci_bus 0003:34: busn_res: can not insert [bus 34-31]
under [bus 32-31] (conflicts with (null) [bus 32-31])
[ 0.846309] pci_bus 0003:34: busn_res: [bus 34-31] end is updated to 34
[ 0.846898] pci_bus 0003:34: busn_res: can not insert [bus 34] under
[bus 32-31] (conflicts with (null) [bus 32-31])
[ 0.847833] pci 0003:32:06.0: devices behind bridge are unusable
because [bus 34] cannot be assigned for them
[ 0.848923] pci_bus 0003:35: busn_res: can not insert [bus 35-31]
under [bus 32-31] (conflicts with (null) [bus 32-31])
[ 0.850014] pci_bus 0003:35: busn_res: [bus 35-31] end is updated to 35
[ 0.850605] pci_bus 0003:35: busn_res: can not insert [bus 35] under
[bus 32-31] (conflicts with (null) [bus 32-31])
[ 0.851540] pci 0003:32:0e.0: devices behind bridge are unusable
because [bus 35] cannot be assigned for them
[ 0.852424] pci_bus 0003:32: busn_res: [bus 32-31] end is updated to 35
[ 0.853028] pci_bus 0003:32: busn_res: can not insert [bus 32-35]
under [bus 31] (conflicts with (null) [bus 31])
[ 0.853184] hub 3-0:1.0: USB hub found
[ 0.853931] pci 0003:31:00.0: devices behind bridge are unusable
because [bus 32-35] cannot be assigned for them
[ 0.854262] hub 3-0:1.0: 1 port detected
[ 0.855144] pcieport 0003:30:00.0: bridge has subordinate 31 but max
busn 35
[ 0.855722] hub 4-0:1.0: USB hub found
[ 0.856109] pci 0003:32:00.0: PCI bridge to [bus 33]
[ 0.856939] pci 0003:32:06.0: PCI bridge to [bus 34]
[ 0.857133] hub 4-0:1.0: 1 port detected
[ 0.857430] pci 0003:32:0e.0: PCI bridge to [bus 35]
[ 0.858236] pci 0003:31:00.0: PCI bridge to [bus 32-35]

>
> Best regards,
>
> --
> FUKAUMI Naoki
> Radxa Computer (Shenzhen) Co., Ltd.
>
>