Linux dies with Microchip PCIe switch
We have a design where we can connect NVME boards through a Microchip PCIe switch to either Jetson AGX Xavier SOM, or x86 ComExpress boards. With ComExpress boards we don’t have problems.
With Jetson Xavier kernel dies in the middle of booting. After some printk() debugging I found that the kernel dies in the tegra_pcie_dw_link_up() routine when it’s about to read PCI_EXP_LNKSTA DBI register. Before that the kernel reads a lot other DBI registers but only this attempt fails. It seems that the kernel completely hangs there and watchdog will restart the board some time later.
In another design we connect NVME SSDs directly and everything is working. The SSDs are connected to pcie@141a0000, Gen4, x8.
On the SOM interface board we also have a Broadcom NIC connected to PCIe x4 and it works perfectly. If we don’t power up the Microchip PCIe switch Linux boots up properly on the Jetson SOM. So it seems it’s only the PCIe switch which makes the kernel hang during boot.
I tested both the latest L4T from JetPack 5.0.2 and the Yocto-based build from OE4T/meta-tegra.
Thanks for any advice.