[PATCH RFC 0/5] arm64: rockchip: enable PCIE3 controller and its phy for Rock5B boards

Piotr Oniszczuk piotr.oniszczuk at gmail.com
Mon Feb 20 10:33:52 PST 2023



> Wiadomość napisana przez Qu Wenruo <wqu at suse.com> w dniu 04.02.2023, o godz. 09:47:
> 
> This series is based on the existing upstream work from Sebastian
> Reichel:
> https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-misc.git/log/?h=rk3588
> 
> And I'm a completely newbie to arm64 world, thus if there is something
> wrong, feel free to point out and I'm pretty happy to learn from the
> failure.
> 
> [BACKGROUND]
> RK3588S and RK3588 have PCIE supports, it's done by the following 3
> controllers:
> 
> - PCIE2.0x1 lane @fe180000 (both RK3588S and RK3588)
> - PCIE2.0x1 lane @fe190000 (both RK3588S and RK3588)
>  Thes two are all connected to a naneng combo phy each, normally shared
>  with SATA or USB.
> 
> - PCIE2.0x1 lane @fe170000 (RK3588 exlusive)
>  This one is also connected to a naneng combo phy, normally shared
>  with SATA or USB.
> 
> - PCIE3.0x4 lanes @fe15000 (RK3588 exclusive)
> 
> And unlike other boards, ROCK5B is utilizing PCIE extensively, its
> network controller (RTL8125 2.5Gbps Ethernet) is connected to the
> PCIE2.0 lane at fe190000, and an M.2 slot is attached to the PCIE3.0x4
> lanes.
> 
> [WORKING]
> Currently the series is able to bring up the PCIE3.0x4 lanes and
> properly boot from an NVME at that M.2 slot of Rock5B boards.
> 
> [NOT WORKING]
> All PCIE2.0 lanes connected to naneng combo phy are not working.
> I tried forward porting the extra handling from downstream, but it only
> results hanging at probing (causing RCU stall).
> 
> [EXTRA WANRING]
> - PCI MSI initialization warning
>  WARNING: CPU: 7 PID: 1 at drivers/pci/msi/msi.h:121 pci_msi_setup_msi_irqs+0x38/0x4c
> 
>  This seems to be caused by the fact that we are still using legcacy
>  msi irqs?
> 
>  I checked up the gic and its dts, can not figure out why (all pretty
>  the same just like rk3399 and rk3568).
>  Any help would be appreciated.
> 
> - pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
>  The vendoer kernel also has this problem, but my RK3399 board with
>  upstream kernel didn't trigger this at all, but something else like:
> 
>    pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> 
>  Then:
> 
>    pci_bus 0000:01: busn_res: [bus 01-1f] end is updated to 01
> 
>  Not sure if it's something missing or can be just ignored.
> 
> [PCI DMESG]
> With this patchset, the PCI initialization and nvme would look like this:
> 
> [    0.142984] rockchip-dw-pcie fe150000.pcie: host bridge /pcie at fe150000 ranges:
> [    0.143653] rockchip-dw-pcie fe150000.pcie:       IO 0x00f0100000..0x00f01fffff -> 0x00f0100000
> [    0.144463] rockchip-dw-pcie fe150000.pcie:      MEM 0x00f0200000..0x00f0ffffff -> 0x00f0200000
> [    0.145261] rockchip-dw-pcie fe150000.pcie:      MEM 0x0900000000..0x093fffffff -> 0x0900000000
> [    0.154022] rockchip-dw-pcie fe150000.pcie: iATU: unroll T, 8 ob, 8 ib, align 64K, limit 8G
> [    0.360415] rockchip-dw-pcie fe150000.pcie: PCIe Gen.3 x4 link up
> [    0.361099] rockchip-dw-pcie fe150000.pcie: PCI host bridge to bus 0000:00
> [    0.361731] pci_bus 0000:00: root bus resource [bus 00-0f]
> [    0.362236] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff] (bus address [0xf0100000-0xf01fffff])
> [    0.363113] pci_bus 0000:00: root bus resource [mem 0xf0200000-0xf0ffffff]
> [    0.363744] pci_bus 0000:00: root bus resource [mem 0x900000000-0x93fffffff pref]
> [    0.364450] pci 0000:00:00.0: [1d87:3588] type 01 class 0x060400
> [    0.365005] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x3fffffff]
> [    0.365583] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x3fffffff]
> [    0.366159] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
> [    0.366801] pci 0000:00:00.0: supports D1 D2
> [    0.367193] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
> [    0.368647] pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
> [    0.369681] pci 0000:01:00.0: [1d97:5216] type 00 class 0x010802
> [    0.370277] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0000ffff 64bit]
> [    0.370975] pci 0000:01:00.0: reg 0x30: [mem 0x00000000-0x0001ffff pref]
> [    0.372130] pci 0000:00:00.0: BAR 0: no space for [mem size 0x40000000]
> [    0.372742] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x40000000]
> [    0.373381] pci 0000:00:00.0: BAR 1: no space for [mem size 0x40000000]
> [    0.373988] pci 0000:00:00.0: BAR 1: failed to assign [mem size 0x40000000]
> [    0.374628] pci 0000:00:00.0: BAR 14: assigned [mem 0xf0200000-0xf02fffff]
> [    0.375259] pci 0000:00:00.0: BAR 6: assigned [mem 0xf0300000-0xf030ffff pref]
> [    0.375923] pci 0000:01:00.0: BAR 6: assigned [mem 0xf0200000-0xf021ffff pref]
> [    0.376590] pci 0000:01:00.0: BAR 0: assigned [mem 0xf0220000-0xf022ffff 64bit]
> [    0.377281] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
> [    0.377762] pci 0000:00:00.0:   bridge window [mem 0xf0200000-0xf02fffff]
> [    0.426841] pcieport 0000:00:00.0: PME: Signaling with IRQ 33
> [    0.427487] pcieport 0000:00:00.0: AER: enabled with IRQ 33
> [    0.625353] nvme nvme0: pci function 0000:01:00.0
> [    0.625774] nvme 0000:01:00.0: enabling device (0000 -> 0002)
> [    0.717069] nvme nvme0: Shutdown timeout set to 8 seconds
> [    0.723025] nvme nvme0: allocated 64 MiB host memory buffer.
> [    0.816820] nvme nvme0: 1/0/0 default/read/poll queues
> [    0.818079] sdhci-pltfm: SDHCI platform and OF driver helper
> [    0.820678]  nvme0n1: p1 p2
> 
> 

(resend as plain TXT. Sorry for previous RTF!)

Qu, all

I’m playing with your work on my rock5b as I want to have working Eth on rock5b.

My code is from https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-misc.git/log/?h=rk3588 + your’s PCIE3 patches. 

SBC boots from sd card, I see PCIE related logs in dmesg. but no rtl8125 is detected.
PCIE logs are like this:

    8.207810] rockchip-dw-pcie fe150000.pcie: host bridge /pcie at fe150000 ranges:
[    8.208501] rockchip-dw-pcie fe150000.pcie: Parsing ranges property...
[    8.209089] rockchip-dw-pcie fe150000.pcie:       IO 0x00f0100000..0x00f01fffff -> 0x00f0100000
[    8.209944] rockchip-dw-pcie fe150000.pcie:      MEM 0x00f0200000..0x00f0ffffff -> 0x00f0200000
[    8.210740] rockchip-dw-pcie fe150000.pcie:      MEM 0x0900000000..0x093fffffff -> 0x0900000000
[    8.218918] rockchip-dw-pcie fe150000.pcie: iATU: unroll T, 8 ob, 8 ib, align 64K, limit 8G
[    9.324473] rockchip-dw-pcie fe150000.pcie: Phy link never came up
[    9.325186] rockchip-dw-pcie fe150000.pcie: PCI host bridge to bus 0000:00
[    9.325786] pci_bus 0000:00: root bus resource [bus 00-0f]
[    9.326266] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff] (bus address [0xf0100000-0xf01fffff])
[    9.327097] pci_bus 0000:00: root bus resource [mem 0xf0200000-0xf0ffffff]
[    9.327713] pci_bus 0000:00: root bus resource [mem 0x900000000-0x93fffffff pref]
[    9.328364] pci_bus 0000:00: scanning bus
[    9.328729] pci 0000:00:00.0: [1d87:3588] type 01 class 0x060400
[    9.329258] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x3fffffff]
[    9.329807] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x3fffffff]
[    9.330354] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[    9.330984] pci 0000:00:00.0: supports D1 D2
[    9.331356] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    9.331858] pci 0000:00:00.0: PME# disabled
[    9.332309] pci 0000:00:00.0: vgaarb: pci_notify
[    9.333735] pci_bus 0000:00: fixups for bus
[    9.334106] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 0
[    9.334731] pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
[    9.335668] pci_bus 0000:01: scanning bus
[    9.336052] pci_bus 0000:01: fixups for bus
[    9.336416] pci_bus 0000:01: bus scan returning with max=01
[    9.336903] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 1
[    9.337503] pci_bus 0000:00: bus scan returning with max=ff
[    9.337994] pci 0000:00:00.0: BAR 0: no space for [mem size 0x40000000]
[    9.338570] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x40000000]
[    9.339175] pci 0000:00:00.0: BAR 1: no space for [mem size 0x40000000]
[    9.339749] pci 0000:00:00.0: BAR 1: failed to assign [mem size 0x40000000]
[    9.340356] pci 0000:00:00.0: BAR 6: assigned [mem 0xf0200000-0xf020ffff pref]
[    9.340991] pci 0000:00:00.0: PCI bridge to [bus 01-ff]

and nothing more :-(

Are you progressing maybe with pcie on rock5b?




More information about the Linux-rockchip mailing list