Hi all,
Currently I am trying to set up an AGX Orin as a PCIe endpoint to send data to a more powerful desktop machine.
Specifically (if it matters), I am interested in sending raw camera data over the PCI cable, as this theoretically allows for much higher throughput than USB or ethernet. Our cameras interact with the CSI-2 interface on the Orin, which is nice, but unfortunately is not a well-supported interface. Our thinking is that we can use the Orin as a bridge between a more traditional machine and the CSI-2 cameras.
I am having some trouble getting the PCI endpoint mode to work, however. I will recount the steps I’ve taken to try and get the endpoint mode to work:
First, I downloaded and extracted the files from this location: Jetson Linux Release 36.4.4 | NVIDIA Developer
Specifically, I downloaded the Driver Package and Sample Root Filesystem
I extracted the Driver Package, which produced the “Linux_for_Tegra” directory complete with scripts and files
I extracted the Sample Root Filesystem package to the “rootfs” directory
I ran the apply_binaries.sh script
I ran the flash.sh script as shown in the PCI endpoint guide after putting my Orin in forced recovery mode
I can confirm that the pci endpoint modules are present on my AGX orin, via
$ lsmod | grep pci
pci_epf_tegra_vnet 32768 1
tegra_pcie_dma_test 20480 0
tegra_pcie_edma 20480 1 tegra_pcie_dma_test
pcie_tegra194 40960 0
I connected the agx endpoint to my root port machine using an x16 PCIE cable with tx<->rx signal swap- this cable was suggested by a PDF I found describing the root/endpoint layout between two Jetson Xavier systems
(Jetson_AGX_Xavier_PCIe_Endpoint_Design_Guidelines.pdf)
I configured and enabled PCIe endpoint mode for the pci_epf_tvnet function as shown in the documentation. (mkdir functions/pci_epf_tvnet/func1 etc…)
On the host side I compiled the tegra_vnet kernel module- on reboot I modprobe it.
When I reboot my host system, I see the following output from tegra194-pcie on the endpoint:
[ 2503.615795] tegra194-pcie 141a0000.pcie-ep: iATU unroll: enabled
[ 2503.615808] tegra194-pcie 141a0000.pcie-ep: Detected iATU regions: 8 outbound, 2 inbound
[ 2504.604721] tegra194-pcie 141a0000.pcie-ep: iATU unroll: enabled
[ 2504.604728] tegra194-pcie 141a0000.pcie-ep: Detected iATU regions: 8 outbound, 2 inbound
However I do not see any activity from my endpoint function modules.
The only activity I do see is when I try to start the pci_epf_tvnet function while NetworkManager is running, in which case I see the following dmesg output (repeated a number of times):
[ 4822.261111] pci_epf_tvnet pci_epf_tvnet.0: tvnet_ep_open: PCIe link is not up
Disabling NetworkManager before starting the module eliminates these messages (but also disables internet, so… a bit awkward)
I suspected the endpoint mode might work better between two AGX orin machines, where one is root and the other is endpoint, as this is closer to the setup used in the documentation (though it implies any PC should work as root)
To confirm, I flashed another AGX orin machine, this time without the ODMDATA line in the jetson-agx-orin-devkit.conf, and hooked it to my endpoint Orin with the same PCI cable.
Unfortunately- no dice. The log message is slightly different this time for tegra194-pcie:
[ 235.268834] tegra194-pcie 141a0000.pcie-ep: iATU unroll: enabled
[ 235.268847] tegra194-pcie 141a0000.pcie-ep: Detected iATU regions: 8 outbound, 2 inbound
[ 249.119540] tegra194-pcie 141a0000.pcie-ep: LTSSM state: 0x2018 timeout: -110
[ 262.887676] tegra194-pcie 141a0000.pcie-ep: iATU unroll: enabled
[ 262.887689] tegra194-pcie 141a0000.pcie-ep: Detected iATU regions: 8 outbound, 2 inbound
[ 265.130463] tegra194-pcie 141a0000.pcie-ep: LTSSM state: 0x2018 timeout: -110
But nothing for pci_epf_tegra_vnet or tegra_vnet. Device not showing up with lspci.
I added tegra_vnet to /etc/modules-load.d/modules.conf on the root machine, and that did pop up a message:
[ 9.175955] tegra_vnet: loading out-of-tree module taints kernel
so… not sure what that means.
I’m quite a bit out of my depth here, and would appreciate any information/support/ideas people have to offer.
Cheers!