UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor sdmello
Visitor
195 Views
Registered: ‎04-24-2019

Occasional "Synchronous External Abort" on PCIe read. Zynq Ultrascale. SDK 2019.1

On our Zynq UltraScale+ MPSoC-based customboard, we very rarely see this issue when Linux is booting up.  The exact point at which this exception is encountered is in pci_generic_config_read called by nwl_pcie_probe.

[    3.128810] nwl-pcie fd0e0000.pcie: Link is UP
[    3.136132] nwl-pcie fd0e0000.pcie: host bridge /amba/pcie@fd0e0000 ranges:
[    3.143103] nwl-pcie fd0e0000.pcie:   MEM 0xe0000000..0xefffffff -> 0xe0000000
[    3.150324] nwl-pcie fd0e0000.pcie:   MEM 0x600000000..0x7ffffffff -> 0x600000000
[    3.157904] nwl-pcie fd0e0000.pcie: PCI host bridge to bus 0000:00
[    3.164081] pci_bus 0000:00: root bus resource [bus 00-ff]
[    3.169564] pci_bus 0000:00: root bus resource [mem 0xe0000000-0xefffffff]
[    3.176433] pci_bus 0000:00: root bus resource [mem 0x600000000-0x7ffffffff pref]
[    3.235478] Internal error: synchronous external abort: 96000210 [#1] SMP
[    3.242252] Modules linked in:
[    3.245293] CPU: 0 PID: 59 Comm: kworker/0:1 Not tainted 4.19.0 #1
[    3.251461] Hardware name: xlnx,zynqmp (DT)
[    3.255637] Workqueue: events deferred_probe_work_func
[    3.260759] pstate: 20000085 (nzCv daIf -PAN -UAO)
[    3.265536] pc : pci_generic_config_read+0x34/0xb0
[    3.270316] lr : pci_generic_config_read+0x20/0xb0
[    3.275088] sp : ffffff8008dbb870

 

If it helps, here's the pcie node of the decompiled dtb. I've also attached the complete boot log;

 

pcie@fd0e0000 {
compatible = "xlnx,nwl-pcie-2.11";
status = "okay";
#address-cells = <0x3>;
#size-cells = <0x2>;
#interrupt-cells = <0x1>;
msi-controller;
device_type = "pci";
interrupt-parent = <0x4>;
interrupts = <0x0 0x76 0x4 0x0 0x75 0x4 0x0 0x74 0x4 0x0 0x73 0x4 0x0 0x72 0x4>;
interrupt-names = "misc", "dummy", "intx", "msi1", "msi0";
msi-parent = <0xf>;
reg = <0x0 0xfd0e0000 0x0 0x1000 0x0 0xfd480000 0x0 0x1000 0x80 0x0 0x0 0x1000000>;
reg-names = "breg", "pcireg", "cfg";
ranges = <0x2000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000 0x43000000 0x6 0x0 0x6 0x0 0x2 0x0>;
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
bus-range = <0x0 0xff>;
interrupt-map = <0x0 0x0 0x0 0x1 0x10 0x1 0x0 0x0 0x0 0x2 0x10 0x2 0x0 0x0 0x0 0x3 0x10 0x3 0x0 0x0 0x0 0x4 0x10 0x4>;
power-domains = <0xc 0x3b>;
clocks = <0x3 0x17>;
xlnx,pcie-mode = "Root Port";
xlnx,tz-nonsecure = <0x0>;
linux,phandle = <0xf>;
phandle = <0xf>;

legacy-interrupt-controller {
interrupt-controller;
#address-cells = <0x0>;
#interrupt-cells = <0x1>;
linux,phandle = <0x10>;
phandle = <0x10>;
};
};

 

 

The SDK version is 2019.1.

 

Any help is much appreciated, thanks!

0 Kudos