Bootloader panic when pcie@141c0000 / pcie@141e0000 enabled

Hi,
With bootloader Jetson UEFI firmware (version v35.3.1 built on 2023-01-24T13:18:32+00:00) I’m getting a panic when the device tree has pcie@141c0000 / pcie@141e0000 enabled:

//PCIe C6
pcie@141c0000{
    status = "okay";    // leaving this as disabled, when enabled, the bootloader panics
    num-lanes = <4>;
    phys = <&p2u_nvhs_4>, <&p2u_nvhs_5>, <&p2u_nvhs_6>, <&p2u_nvhs_7>;
    phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3";

};

//PCIe C7
pcie@141e0000 {
    status = "okay";    // leavnig this as disabled, when enabled, the bootloader panics
    num-lanes = <1>;
    phys = <&p2u_gbe_0>;
    phy-names = "p2u-0";
};

Looking at the dev kit, it both pcie@141c0000 / pcie@141e0000 are disabled. This is what the bootloader will produce in the panic (not all registers copied)

I/TC: Primary CPU switching to normal world boot
Unhandled Exception in EL3.
x30 = 0x00000000500013a4
x0 = 0x0000000000000000
x1 = 0xfffffffffffff000
x2 = 0xfffffffffffdd000
x3 = 0x0000000000022000
x4 = 0x0000000000000548
x5 = 0x0000001036000550
x6 = 0x0000000000000000
x7 = 0x0000000000000000
x8 = 0x000000102ea00000
x9 = 0x0000000000100004

Using the uefi debugger with the debugging enabled produced more debugging information:

PCIE Controller ID-6, Bpmp Phandle-2
��Unhandled Exception in EL3.

pcie@141c0000 / pcie@141e0000 seem to have a complete definition, as when I boot with the nvidia device tree, I see a reasonable set of values, just that the status is disabled:

pcie@141c0000 {
	compatible = "nvidia,tegra234-pcie\0snps,dw-pcie";
	power-domains = <0x04 0x06>;
	reg = <0x00 0x141c0000 0x00 0x20000 0x00 0x3c000000 0x00 0x40000 0x00 0x3c040000 0x00 0x40000 0x00 0x3c080000 0x00 0x40000 0x2e 0x30000000 0x00 0x10000000>;
	reg-names = "appl\0config\0atu_dma\0dbi\0ecam";
	status = "disabled";
	#address-cells = <0x03>;
	#size-cells = <0x02>;
	device_type = "pci";
	num-lanes = <0x04>;
	num-viewport = <0x08>;
	linux,pci-domain = <0x06>;
	clocks = <0x04 0xa1 0x04 0xeb>;
	clock-names = "core\0core_m";
	resets = <0x04 0x0c 0x04 0x0b>;
	reset-names = "apb\0core";
	interrupts = <0x00 0x160 0x04 0x00 0x161 0x04>;
	interrupt-names = "intr\0msi";
	interconnects = <0x23 0x28 0x23 0x29>;
	interconnect-names = "dma-mem\0dma-mem";
	iommus = <0x02 0x15>;
	iommu-map = <0x00 0x02 0x15 0x1000>;
	msi-parent = <0x11 0x15>;
	msi-map = <0x00 0x11 0x15 0x1000>;
	dma-coherent;
	iommu-map-mask = <0x00>;
	#interrupt-cells = <0x01>;
	interrupt-map-mask = <0x00 0x00 0x00 0x00>;
	interrupt-map = <0x00 0x00 0x00 0x00 0x01 0x00 0x160 0x04>;
	nvidia,dvfs-tbl = <0xc28cb00 0xc28cb00 0xc28cb00 0x27ac4000 0xc28cb00 0xc28cb00 0x27ac4000 0x5f5e1000 0xc28cb00 0x27ac4000 0x5f5e1000 0x7f22ff40 0x00 0x00 0x00 0x00>;
	nvidia,max-speed = <0x04>;
	nvidia,disable-aspm-states = <0x0f>;
	nvidia,controller-id = <0x04 0x06>;
	nvidia,tsa-config = <0x200b004>;
	nvidia,disable-l1-cpm;
	nvidia,aux-clk-freq = <0x13>;
	nvidia,preset-init = <0x05>;
	nvidia,aspm-cmrt = <0x3c>;
	nvidia,aspm-pwr-on-t = <0x14>;
	nvidia,aspm-l0s-entrance-latency = <0x03>;
	nvidia,bpmp = <0x04 0x06>;
	nvidia,aspm-cmrt-us = <0x3c>;
	nvidia,aspm-pwr-on-t-us = <0x14>;
	nvidia,aspm-l0s-entrance-latency-us = <0x03>;
	bus-range = <0x00 0xff>;
	ranges = <0x81000000 0x00 0x3c100000 0x00 0x3c100000 0x00 0x100000 0x82000000 0x00 0x40000000 0x2e 0x28000000 0x00 0x8000000 0xc3000000 0x2b 0x40000000 0x2b 0x40000000 0x02 0xe8000000>;
	nvidia,cfg-link-cap-l1sub = <0x1b0>;
	nvidia,cap-pl16g-status = <0x174>;
	nvidia,cap-pl16g-cap-off = <0x188>;
	nvidia,event-cntr-ctrl = <0x1c4>;
	nvidia,event-cntr-data = <0x1c8>;
	nvidia,dl-feature-cap = <0x2f8>;
	nvidia,ptm-cap-off = <0x304>;
	vddio-pex-ctl-supply = <0x13>;
	phandle = <0x31b>;
};

Is there a known problem with version of the bootloader (v35.3.1) or configuration of pcie@141c0000 / pcie@141e0000? At this time, I’ve left pcie@141c0000 / pcie@141e0000 disabled so the machine boots to linux as I research this issue.

What are you trying to do here exactly? Jetson Orin AGX totally does not support PCIe C6 at all… there is no pin out for this PCIe controller…

Please read design guide document before trying these things.

Also, when you enable C7, did you remember to modify ODMDATA?

Hi WayneWWW,

What are you trying to do here
Jetson Orin AGX totally does not support PCIe C6 at all… there is no pin out for this PCIe controller…

This was in a device tree supplied to me by a vendor. It wasn’t working (producing the panic above) so I used the debugging tools I had to determine this was the issue. I guess this explains the problem. :) Given some other problems with the BSPish thing supplied by the vendor, I’m not entirely sure if the supplied code was run on the target board.

Also, when you enable C7, did you remember to modify ODMDATA?

Oh no, probably not. :) Can you tolerate my asininity enough to point me in the right direction? In the meanwhile, I’ll be looking for myself, but it’s helpful to know from a second source that I’ve found the correct information.

Hi,

Just to clarify first. I hope you know what you are doing because it sounds like this board is not made by you so you don’t know the hardware connection.

For example, each PCIe controller (e.g C6/C7) is mapping to a specific pin.

If your PCIe pin does not connect to it (e.g. C7), then enabling C7 will not work. My point here is you have to really make sure C7 (or something else) is really the controller you need. The attempt to enable C6 seems indicate you are not sure why you have to enable it…

As for the ODMDATA, we have a document over here.
https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/HR/JetsonModuleAdaptationAndBringUp/JetsonAgxOrinSeries.html?highlight=pcie#uphy-lane-configuration

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.