→ In 5.x release, Linux kernel has enhanced security, if you want to access shared RAM need to add CONFIG_STRICT_DEVMEM=n to tegra_defconfig and recompile the kernel
@WayneWWW Thanks- It seems my modified kernel wasn’t being properly flashed to the AGX Endpoint before, so the tegra_defconfig change wasn’t taking effect.
Now I’ve got the busybox devmem <BAR0_RAM_phys> command working and can read/write the endpoint RAM.
But even after running the setpci command in the docs, the two Jetsons still don’t seem to recognize each other with lspci -v. I get:
setpci -s 0005:01:00.0 COMMAND=0x02 Warning: No devices selected for “COMMAND=0x02”.
I have tried booting both Root and Endpoint in different orders, but no luck.
My ls /sys/bus/pci/devices/ results are as follows on AGX Orin EP:
root@nvidia-agx-orin:/sys/kernel/config/pci_ep# ls /sys/bus/pci/devices/ 0001:00:00.00001:01:00.0
So controller 5 isn’t set apparently. I made sure to set the ODMDATA bit before flashing.
I will check internally to determine if it’s a hardware issue. But also, is there any command I can run on the EP to make sure the ODMDATA was indeed set correctly?
Got it, are there any hardware folks you can tag who may be able to help with bringing up an Xavier NX M.2<–> AGX Orin PCIe connection? Or, should I make a separate post?
Here are the additional debug steps I’ve tried:
Replacing the Xavier NX RP with a different machine that has an M.2 slot (still did not detect AGX Orin EP). Sadly I do not a second x16 device to test with.
Tracing connectivity between the M.2 side’s pins and AGX Orin’s PCIe pins (i.e. crossover is correct)
Re-checking custom kernel, ODMData, flash steps - all are fine.
different methods of powering the PCIe slot M.2 to x16 adapter (bench 12v supply vs wall adapter - I was concerned the slot was being powered incorrectly, but it has no effect .)
Re-enumerating the PCIe bus using echo 1 > /sys/bus/pci/rescan and changing the RP / EP boot order - no effect.
Our team has triple-checked that our custom PCIe crossover board’s buffers are getting power correctly, and it was built with NVIDIA’s design guidelines for PCIe, so quite confident that part is right especially after probing pins.
My thinking: could Orin AGX EP require some special kernel config / patch for x4 that i’m unaware of, since M.2 (RP) supports only upto x4 while the physical AGX slot is x16?
Please refer to "Jetson AGX Xavier Series PCIe Endpoint Design Guidelines Application Note ". We didn’t validate what you are doing here, so cannot guarantee.