This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-DRA8X-TDA4X: PCIe bus error

Part Number: PROCESSOR-SDK-DRA8X-TDA4X


Hi, we are analyzing PCIe capabilities on TDA4x with goal of using it for development of TDA4 SoC based platform.

This custom device will incorporate a FPGA which will be connected to TDA4x over PCIe.

Currently we are testing the PCIe subsystem of TDA4x and we run into few problems.

We connected Xilinx VCU128 board [https://www.xilinx.com/products/boards-and-kits/vcu128-es1.html] with TDA4x EVM over PCIe.
Cable used: [https://www.digikey.com/product-detail/en/3m/8KJ1-0727-0250/3M12025-ND/3641398].

When the Linux boot finishes we can see that the Xilinx FPGA was enumerated using lspci command, but after analyzing the dmesg output we noticed following error message related to PCIe bus:

[ 2.493861] pci 0001:00:00.0: of_irq_parse_pci: failed with rc=-22

The Xilinx FPGA Bus:Device.Function is 0001:00:00.0.

Despite the error above, we tried to compile and insmod the Xilinx XDMA driver [https://github.com/Xilinx/dma_ip_drivers/tree/master/XDMA/linux-kernel] to the kernel.
But trying to do so gives the following error message:

[ 666.768621] xdma: loading out-of-tree module taints kernel.
[ 666.776705] xdma:xdma_mod_init: Xilinx XDMA Reference Driver xdma v2019.2.51
[ 666.783758] xdma:xdma_mod_init: desc_blen_max: 0xfffffff/268435455, sgdma_timeout: 10 sec.
[ 666.792054] xdma:xdma_threads_create: xdma_threads_create
[ 666.820093] pci 0001:00:00.0: of_irq_parse_pci: failed with rc=-22
[ 666.826276] xdma:xdma_device_open: xdma device 0001:01:00.0, 0x00000000447ba4db.
[ 666.833789] xdma:map_single_bar: BAR0 at 0x4100000000 mapped at 0x000000000c603820, length=1048576(/1048576)
[ 666.843624] xdma:map_single_bar: BAR1 at 0x4100100000 mapped at 0x00000000c298e304, length=65536(/65536)
[ 666.853091] xdma:map_bars: config bar 1, pos 1.
[ 666.857614] xdma:identify_bars: 2 BARs: config 1, user 0, bypass -1.
[ 666.879443] xdma:probe_one: pdev 0x00000000447ba4db, err -22.
[ 666.885181] xdma:xpdev_free: xpdev 0x000000005e35f5e2, destroy_interfaces, xdev 0x (null).
[ 666.894210] xdma:xpdev_free: xpdev 0x000000005e35f5e2, xdev 0x (null) xdma_device_close.
[ 666.903075] xdma: probe of 0001:01:00.0 failed with error -22

Note: we tested the same XDMA driver on PC with the VCU128 board connected with the same PCIe cable as with TDA4x EVM and there are no issues.
On PC everything is working as expected. The PC has a Asus Z390-A Motherboard and is running Ubuntu 18.04.4 LTS.

Next we looked into of_irq_parse_pci function and we found that the error -22 was returned by function of_irq_parse_raw.

The function of_irq_parse_raw returns the -22 (which is EINVAL) inside following if statement:

if (out_irq->args_count != intsize)

The out_irq->args_count is a parameter that is set to 1 before the of_irq_parse_raw was called.
The intsize is a local variable that represents the #interrupt-cells property read from the current Device Tree Node.

Inside the of_irq_parse_raw we where able to print current Device Tree Node name which is: interrupt-controller

Next we checked the arch/arm64/boot/dts/ti/k3-j721e-main.dtsi file and found the interrupt-controller node. The node #interrupt-cells is set to 3.
But when we checked in Documentation/devicetree/bindings/interrupt-controller/ti,sci-inta.txt we found that the #interrupt-cells value should be set to 4 according to that document file.

Can you help us to solve these issues?

In the attachment you can find the Linux boot log and lspci output of TDA4x.

Regads.

Uros

U-Boot SPL 2019.01-g350f3927b8 (Feb 17 2020 - 09:46:23 +0000)
SYSFW ABI: 2.9 (firmware rev 0x0013 '19.12.1-v2019.12a (Terrific Lla')
Trying to boot from MMC2
Loading Environment from MMC... *** Warning - No MMC card found, using default environment

Remoteproc 2 started successfully
** File not found /lib/firmware/j7-mcu-r5f0_0-fw **
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.2(release):ti2019.05-rc1
NOTICE:  BL31: Built : 09:32:00, Feb 17 2020
I/TC: 
I/TC: OP-TEE version: ti2019.05-rc1-dev (gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))) #1 Mon Feb 17 09:40:16 UTC 2020 aarch64
I/TC: Initialized

U-Boot SPL 2019.01-g350f3927b8 (Feb 17 2020 - 09:48:06 +0000)
Detected: J7X-BASE-CPB rev E3
Detected: J7X-VSC8514-ETH rev E2
Trying to boot from MMC2


U-Boot 2019.01-g350f3927b8 (Feb 17 2020 - 09:48:06 +0000)

SoC:   J721E PG 1.0
Model: Texas Instruments K3 J721E SoC
Board: J721EX-PM2-SOM rev E7
DRAM:  4 GiB
Flash: 0 Bytes
MMC:   sdhci@4f80000: 0, sdhci@4fb0000: 1
Loading Environment from MMC... *** Warning - bad CRC, using default environment

In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
Detected: J7X-BASE-CPB rev E3
Detected: J7X-VSC8514-ETH rev E2
Net:   
Warning: ethernet@046000000 using MAC address from ROM
eth0: ethernet@046000000
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
** Unable to read file boot.scr **
40 bytes read in 1 ms (39.1 KiB/s)
Loaded env from uEnv.txt
Importing environment from mmc1 ...
13928456 bytes read in 1808 ms (7.3 MiB/s)
99354 bytes read in 3 ms (31.6 MiB/s)
** File not found /boot/k3-j721e-auto-common.dtbo **
## Flattened Device Tree blob at 82000000
   Booting using the fdt blob at 0x82000000
   Loading Device Tree to 00000000fdda3000, end 00000000fdebefff ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd080]
[    0.000000] Linux version 4.19.94 (rtrk@rtrkw1003-lin) (gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))) #9 SMP PREEMPT Fri Apr 24 17:22:25 CEST 2020
[    0.000000] Machine model: Texas Instruments K3 J721E SoC
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] bootconsole [ns16550a0] enabled
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a4000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a4100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a5000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a5000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a5100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a5100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a6000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node c66-dma-memory@a6000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a6100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node c66-memory@a6100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a7000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node c66-dma-memory@a7000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a7100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node c66-memory@a7100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a8000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node c71-dma-memory@a8000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a8100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node c71-memory@a8100000, compatible id shared-dma-pool
[    0.000000] cma: Reserved 512 MiB at 0x00000000c0000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.1
[    0.000000] random: get_random_bytes called from start_kernel+0x94/0x3e4 with crng_init=0
[    0.000000] percpu: Embedded 2 pages/cpu s48536 r8192 d74344 u131072
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for EL2 vector hardening
[    0.000000] Speculative Store Bypass Disable mitigation not required
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 62339
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=47040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),128k(ospi.env),128k(ospi.env.backup),1m(ospi.sysfw),-@8m(ospi.rootfs);47034000.hyperbus:512k(hbmc.tiboot3),2m(hbmc.tispl),4m(hbmc.u-boot),256k(hbmc.env),1m(hbmc.sysfw),-@8m(hbmc.rootfs) root=PARTUUID=41a1b097-02 rw rootfstype=ext4 rootwait
[    0.000000] Dentry cache hash table entries: 524288 (order: 6, 4194304 bytes)
[    0.000000] Inode-cache hash table entries: 262144 (order: 5, 2097152 bytes)
[    0.000000] software IO TLB: mapped [mem 0xf9da0000-0xfdda0000] (64MB)
[    0.000000] Memory: 3377088K/3993600K available (8638K kernel code, 994K rwdata, 3328K rodata, 576K init, 641K bss, 92224K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=2.
[    0.000000] 	Tasks RCU enabled.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] GICv3: no VLPI support, no direct LPI support
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: allocated 1048576 Devices @8c0800000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GIC: using LPI property table @0x00000008c00a0000
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001900000
[    0.000000] CPU0: using LPI pending table @0x00000008c00b0000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000001] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008346] Console: colour dummy device 80x25
[    0.012900] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
[    0.023569] pid_max: default: 32768 minimum: 301
[    0.028308] Security Framework initialized
[    0.032511] Mount-cache hash table entries: 8192 (order: 0, 65536 bytes)
[    0.039366] Mountpoint-cache hash table entries: 8192 (order: 0, 65536 bytes)
[    0.070700] ASID allocator initialised with 32768 entries
[    0.084228] rcu: Hierarchical SRCU implementation.
[    0.097550] Platform MSI: gic-its@1820000 domain created
[    0.103094] PCI/MSI: /interconnect@100000/interrupt-controller@1800000/gic-its@1820000 domain created
[    0.120531] smp: Bringing up secondary CPUs ...
[    0.157431] Detected PIPT I-cache on CPU1
[    0.157449] GICv3: CPU1: found redistributor 1 region 0:0x0000000001920000
[    0.157476] CPU1: using LPI pending table @0x00000008c0310000
[    0.157497] CPU1: Booted secondary processor 0x0000000001 [0x411fd080]
[    0.157538] smp: Brought up 1 node, 2 CPUs
[    0.185374] SMP: Total of 2 processors activated.
[    0.190184] CPU features: detected: GIC system register CPU interface
[    0.196765] CPU features: detected: 32-bit EL0 Support
[    0.202239] CPU: All CPU(s) started at EL2
[    0.206426] alternatives: patching kernel code
[    0.211408] devtmpfs: initialized
[    0.219164] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.229127] futex hash table entries: 512 (order: -1, 32768 bytes)
[    0.235824] pinctrl core: initialized pinctrl subsystem
[    0.241506] NET: Registered protocol family 16
[    0.246388] vdso: 2 pages (1 code @ (____ptrval____), 1 data @ (____ptrval____))
[    0.253952] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.263130] DMA: preallocated 256 KiB pool for atomic allocations
[    0.276420] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.283273] HugeTLB registered 512 MiB page size, pre-allocated 0 pages
[    0.290672] cryptd: max_cpu_qlen set to 1000
[    0.295521] vsys_3v3: supplied by evm_12v0
[    0.299783] vsys_5v0: supplied by evm_12v0
[    0.304339] SCSI subsystem initialized
[    0.308397] media: Linux media interface: v0.10
[    0.313038] videodev: Linux video capture interface: v2.00
[    0.318654] pps_core: LinuxPPS API ver. 1 registered
[    0.323726] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.333065] PTP clock support registered
[    0.337078] EDAC MC: Ver: 3.0.0
[    0.340896] Advanced Linux Sound Architecture Driver Initialized.
[    0.347434] clocksource: Switched to clocksource arch_sys_counter
[    0.353726] VFS: Disk quotas dquot_6.6.0
[    0.357774] VFS: Dquot-cache hash table entries: 8192 (order 0, 65536 bytes)
[    0.367190] NET: Registered protocol family 2
[    0.371891] tcp_listen_portaddr_hash hash table entries: 4096 (order: 0, 65536 bytes)
[    0.379942] TCP established hash table entries: 32768 (order: 2, 262144 bytes)
[    0.387425] TCP bind hash table entries: 32768 (order: 3, 524288 bytes)
[    0.394405] TCP: Hash tables configured (established 32768 bind 32768)
[    0.401137] UDP hash table entries: 2048 (order: 0, 65536 bytes)
[    0.407319] UDP-Lite hash table entries: 2048 (order: 0, 65536 bytes)
[    0.413989] NET: Registered protocol family 1
[    0.418656] RPC: Registered named UNIX socket transport module.
[    0.424708] RPC: Registered udp transport module.
[    0.429511] RPC: Registered tcp transport module.
[    0.434314] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.441146] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    0.450768] Initialise system trusted keyrings
[    0.455375] workingset: timestamp_bits=46 max_order=16 bucket_order=0
[    0.463392] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.469547] NFS: Registering the id_resolver key type
[    0.474714] Key type id_resolver registered
[    0.478987] Key type id_legacy registered
[    0.483084] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.489986] 9p: Installing v9fs 9p2000 file system support
[    0.497092] Key type asymmetric registered
[    0.501280] Asymmetric key parser 'x509' registered
[    0.506282] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[    0.513841] io scheduler noop registered
[    0.517846] io scheduler deadline registered
[    0.522247] io scheduler cfq registered (default)
[    0.527053] io scheduler mq-deadline registered
[    0.531679] io scheduler kyber registered
[    0.536583] pinctrl-single 4301c000.pinmux: 94 pins, size 376
[    0.542658] pinctrl-single 11c000.pinmux: 173 pins, size 692
[    0.548783] pinctrl-single a40000.timesync_router: 512 pins, size 2048
[    0.557390] ti-pat 31010000.pat: Found PAT Rev 1.0 with 16384 pages
[    0.563813] ti-pat 31010000.pat: Failed to create 31010000.pat debugfs directory
[    0.571499] ti-pat 31011000.pat: Found PAT Rev 1.0 with 16384 pages
[    0.577910] ti-pat 31011000.pat: Failed to create 31011000.pat debugfs directory
[    0.585562] ti-pat 31012000.pat: Found PAT Rev 1.0 with 16384 pages
[    0.591974] ti-pat 31012000.pat: Failed to create 31012000.pat debugfs directory
[    0.599622] ti-pat 31013000.pat: Found PAT Rev 1.0 with 2048 pages
[    0.605943] ti-pat 31013000.pat: Failed to create 31013000.pat debugfs directory
[    0.613596] ti-pat 31014000.pat: Found PAT Rev 1.0 with 2048 pages
[    0.619918] ti-pat 31014000.pat: Failed to create 31014000.pat debugfs directory
[    0.628896] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    0.640031] brd: module loaded
[    0.645784] loop: module loaded
[    0.650050] libphy: Fixed MDIO Bus: probed
[    0.654393] tun: Universal TUN/TAP device driver, 1.6
[    0.659779] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k
[    0.667785] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.673850] sky2: driver version 1.30
[    0.678174] VFIO - User Level meta-driver version: 0.3
[    0.683743] i2c /dev entries driver
[    0.687745] sdhci: Secure Digital Host Controller Interface driver
[    0.694061] sdhci: Copyright(c) Pierre Ossman
[    0.698697] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.704919] ledtrig-cpu: registered to indicate activity on CPUs
[    0.711726] optee: probing for conduit method from DT.
[    0.716986] optee: revision 3.7 (5208e5c1)
[    0.717155] optee: initialized driver
[    0.725755] NET: Registered protocol family 17
[    0.730373] 9pnet: Installing 9P2000 support
[    0.734752] Key type dns_resolver registered
[    0.739304] registered taskstats version 1
[    0.743489] Loading compiled-in X.509 certificates
[    0.752760] ti-sci 44083000.dmsc: ABI: 2.9 (firmware rev 0x0013 '19.12.1-v2019.12a (Terrific Lla')
[    0.777575] random: fast init done
[    0.819620] omap_i2c 40b00000.i2c: bus 0 rev0.12 at 100 kHz
[    0.825573] omap_i2c 40b10000.i2c: bus 1 rev0.12 at 100 kHz
[    0.831562] omap_i2c 42120000.i2c: bus 2 rev0.12 at 100 kHz
[    0.837584] pca953x 3-0020: 3-0020 supply vcc not found, using dummy regulator
[    0.844990] pca953x 3-0020: Linked as a consumer to regulator.0
[    0.871969] pca953x 3-0022: 3-0022 supply vcc not found, using dummy regulator
[    0.879367] pca953x 3-0022: Linked as a consumer to regulator.0
[    0.886237] GPIO line 481 (MCASP/TRACE_MUX_S0) hogged as output/low
[    0.892961] GPIO line 482 (MCASP/TRACE_MUX_S1) hogged as output/high
[    0.899514] omap_i2c 2000000.i2c: bus 3 rev0.12 at 400 kHz
[    0.905466] omap_i2c 2010000.i2c: bus 4 rev0.12 at 400 kHz
[    0.911326] omap_i2c 2020000.i2c: bus 5 rev0.12 at 100 kHz
[    0.917233] pca953x 6-0020: 6-0020 supply vcc not found, using dummy regulator
[    0.924632] pca953x 6-0020: Linked as a consumer to regulator.0
[    0.952091] GPIO line 464 (CODEC_RSTz) hogged as output/high
[    0.958001] omap_i2c 2030000.i2c: bus 6 rev0.12 at 400 kHz
[    0.963871] omap_i2c 2040000.i2c: bus 7 rev0.12 at 100 kHz
[    0.969722] omap_i2c 2050000.i2c: bus 8 rev0.12 at 100 kHz
[    0.975621] pca953x 9-0020: 9-0020 supply vcc not found, using dummy regulator
[    0.983021] pca953x 9-0020: Linked as a consumer to regulator.0
[    1.011856] omap_i2c 2060000.i2c: bus 9 rev0.12 at 400 kHz
[    1.026783] cdns-torrent-phy 5050000.serdes: 4 lanes, max bit rate 5.400 Gbps
[    1.035421] cdns-pcie-host d000000.pcie: missing "mem"
[    1.041006] cdns-pcie-host d000000.pcie: Linked as a consumer to phy-5000000.serdes.0
[    2.050382] cdns-pcie-host d000000.pcie: Phy link never came up
[    2.056436] cdns-pcie-host d000000.pcie: host bridge /interconnect@100000/pcie@2900000/pcie@d000000 ranges:
[    2.066408] cdns-pcie-host d000000.pcie:    IO 0x10001000..0x10010fff -> 0x10001000
[    2.074239] cdns-pcie-host d000000.pcie:   MEM 0x4000000000..0x407fffffff -> 0x00000000
[    2.082480] cdns-pcie-host d000000.pcie: PCI host bridge to bus 0000:00
[    2.089243] pci_bus 0000:00: root bus resource [bus 00-0f]
[    2.094848] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus address [0x10001000-0x10010fff])
[    2.104539] pci_bus 0000:00: root bus resource [mem 0x4000000000-0x407fffffff] (bus address [0x00000000-0x7fffffff])
[    2.115321] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x4 may corrupt adjacent RW1C bits
[    2.125192] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x4 may corrupt adjacent RW1C bits
[    2.135084] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x92 may corrupt adjacent RW1C bits
[    2.145045] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0xb2 may corrupt adjacent RW1C bits
[    2.155033] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x84 may corrupt adjacent RW1C bits
[    2.166723] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.174911] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x3e may corrupt adjacent RW1C bits
[    2.184870] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x3e may corrupt adjacent RW1C bits
[    2.194832] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x3e may corrupt adjacent RW1C bits
[    2.204791] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x6 may corrupt adjacent RW1C bits
[    2.216261] pci_bus 0000:00: 1-byte config write to 0000:00:00.0 offset 0x1a may corrupt adjacent RW1C bits
[    2.226228] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.231683] cdns-pcie-host d800000.pcie: missing "mem"
[    2.237339] cdns-pcie-host d800000.pcie: Linked as a consumer to phy-5010000.serdes.1
[    2.346671] cdns-pcie-host d800000.pcie: Link up
[    2.351392] cdns-pcie-host d800000.pcie: host bridge /interconnect@100000/pcie@2910000/pcie@d800000 ranges:
[    2.361362] cdns-pcie-host d800000.pcie:    IO 0x18001000..0x18010fff -> 0x18001000
[    2.369193] cdns-pcie-host d800000.pcie:   MEM 0x4100000000..0x417fffffff -> 0x00000000
[    2.377425] cdns-pcie-host d800000.pcie: PCI host bridge to bus 0001:00
[    2.384186] pci_bus 0001:00: root bus resource [bus 00-0f]
[    2.389791] pci_bus 0001:00: root bus resource [io  0x10000-0x1ffff] (bus address [0x18001000-0x18010fff])
[    2.399659] pci_bus 0001:00: root bus resource [mem 0x4100000000-0x417fffffff] (bus address [0x00000000-0x7fffffff])
[    2.412141] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.420789] pci 0001:01:00.0: 15.752 Gb/s available PCIe bandwidth, limited by 8 GT/s x2 link at 0001:00:00.0 (capable of 126.016 Gb/s with 8 GT/s x16 link)
[    2.436751] pci 0001:00:00.0: BAR 14: assigned [mem 0x4100000000-0x41001fffff]
[    2.444135] pci 0001:01:00.0: BAR 0: assigned [mem 0x4100000000-0x41000fffff]
[    2.451466] pci 0001:01:00.0: BAR 1: assigned [mem 0x4100100000-0x410010ffff]
[    2.458763] pci 0001:00:00.0: PCI bridge to [bus 01]
[    2.463836] pci 0001:00:00.0:   bridge window [mem 0x4100000000-0x41001fffff]
[    2.493861] pci 0001:00:00.0: of_irq_parse_pci: failed with rc=-22
[    2.500220] pci 0001:00:00.0: enabling device (0000 -> 0002)
[    2.506011] serial 0001:01:00.0: enabling device (0000 -> 0002)
[    2.512580] cdns-pcie-host e000000.pcie: missing "mem"
[    2.518167] cdns-pcie-host e000000.pcie: Linked as a consumer to phy-5020000.serdes.2
[    3.527541] cdns-pcie-host e000000.pcie: Phy link never came up
[    3.533595] cdns-pcie-host e000000.pcie: host bridge /interconnect@100000/pcie@2920000/pcie@e000000 ranges:
[    3.543564] cdns-pcie-host e000000.pcie:    IO 0x4400001000..0x4400010fff -> 0x00001000
[    3.551749] cdns-pcie-host e000000.pcie:   MEM 0x4400011000..0x4407ffffff -> 0x00011000
[    3.559983] cdns-pcie-host e000000.pcie: PCI host bridge to bus 0002:00
[    3.566744] pci_bus 0002:00: root bus resource [bus 00-0f]
[    3.572349] pci_bus 0002:00: root bus resource [io  0x20000-0x2ffff] (bus address [0x1000-0x10fff])
[    3.581596] pci_bus 0002:00: root bus resource [mem 0x4400011000-0x4407ffffff] (bus address [0x00011000-0x07ffffff])
[    3.594061] pci 0002:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    3.603853] pci 0002:00:00.0: PCI bridge to [bus 01]
[    3.609313] k3-ringacc 2b800000.ringacc: Ring Accelerator probed rings:286, gp-rings[96,20] sci-dev-id:235
[    3.619186] k3-ringacc 2b800000.ringacc: dma-ring-reset-quirk: disabled
[    3.625946] k3-ringacc 2b800000.ringacc: RA Proxy rev. 66346100, num_proxies:64
[    3.633620] k3-ringacc 3c000000.ringacc: Ring Accelerator probed rings:1024, gp-rings[440,150] sci-dev-id:211
[    3.643758] k3-ringacc 3c000000.ringacc: dma-ring-reset-quirk: disabled
[    3.650517] k3-ringacc 3c000000.ringacc: RA Proxy rev. 66346100, num_proxies:64
[    3.658128] omap8250 40a00000.serial: PM domain pd:149 will not be powered off
[    3.665644] 40a00000.serial: ttyS1 at MMIO 0x40a00000 (irq = 7, base_baud = 6000000) is a 8250
[    3.674747] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 19, base_baud = 3000000) is a 8250
[    3.683482] console [ttyS2] enabled
[    3.683482] console [ttyS2] enabled
[    3.690514] bootconsole [ns16550a0] disabled
[    3.690514] bootconsole [ns16550a0] disabled
[    3.699399] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 20, base_baud = 3000000) is a 8250
[    3.708186] 2840000.serial: ttyS6 at MMIO 0x2840000 (irq = 21, base_baud = 3000000) is a 8250
[    3.716904] arm-smmu-v3 36600000.smmu: ias 48-bit, oas 48-bit (features 0x00001faf)
[    3.725615] arm-smmu-v3 36600000.smmu: msi_domain absent - falling back to wired irqs
[    3.735247] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vdd-hba-supply regulator, assuming enabled
[    3.745756] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vcc-supply regulator, assuming enabled
[    3.755910] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vccq-supply regulator, assuming enabled
[    3.766151] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vccq2-supply regulator, assuming enabled
[    3.776960] scsi host0: ufshcd
[    3.793971] cadence-qspi 47040000.spi: mt35xu512aba (65536 Kbytes)
[    3.800149] 7 cmdlinepart partitions found on MTD device 47040000.spi.0
[    3.806748] Creating 7 MTD partitions on "47040000.spi.0":
[    3.812225] 0x000000000000-0x000000080000 : "ospi.tiboot3"
[    3.812228] cdns-ufshcd 4e84000.ufs: ufshcd_print_pwr_info:[RX, TX]: gear=[1, 1], lane[1, 1], pwr[SLOWAUTO_MODE, SLOWAUTO_MODE], rate = 0
[    3.830317] 0x000000080000-0x000000280000 : "ospi.tispl"
[    3.835827] 0x000000280000-0x000000680000 : "ospi.u-boot"
[    3.841405] 0x000000680000-0x0000006a0000 : "ospi.env"
[    3.846733] 0x0000006a0000-0x0000006c0000 : "ospi.env.backup"
[    3.852660] 0x0000006c0000-0x0000007c0000 : "ospi.sysfw"
[    3.858142] 0x000000800000-0x000004000000 : "ospi.rootfs"
[    3.876508] cdns-ufshcd 4e84000.ufs: ufshcd_print_pwr_info:[RX, TX]: gear=[3, 3], lane[2, 2], pwr[FAST MODE, FAST MODE], rate = 2
[    3.888186] cdns-ufshcd 4e84000.ufs: ufshcd_find_max_sup_active_icc_level: Regulator capability was not set, actvIccLevel=0
[    3.899415] scsi 0:0:0:49488: Well-known LUN    TOSHIBA  THGAF8G8T23BAILB 0300 PQ: 0 ANSI: 6
[    3.908123] scsi 0:0:0:49476: Well-known LUN    TOSHIBA  THGAF8G8T23BAILB 0300 PQ: 0 ANSI: 6
[    3.916812] cdns-ufshcd 4e84000.ufs: ufshcd_scsi_add_wlus: BOOT WLUN not found
[    3.999519] cadence-qspi 47040000.spi: Cadence QSPI NOR probe failed -517
[    4.007022] cadence-qspi 47050000.spi: n25q512a (65536 Kbytes)
[    4.027527] cadence-qspi 47050000.spi: Cadence QSPI NOR probe failed -517
[    4.034781] am65-cpsw-nuss 46000000.ethernet: rx-flow-id-base is not set -22
[    4.041830] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA00101, cpsw version 0x6BA80100 Ports: 2
[    4.053265] UDMA has not been proped
[    4.056840] am65-cpsw-nuss 46000000.ethernet: Failed to request tx dma channel -517
[    4.065246] am65-cpts 310d0000.cpts: CPTS ver 0x4e8a010a, freq:200000000, add_val:4 pps:0
[    4.073732] mmc0: Unknown controller version (4). You may experience problems.
[    4.080978] mmc0: CQHCI version 5.10
[    4.115259] mmc0: SDHCI controller on 4f80000.sdhci [4f80000.sdhci] using ADMA 64-bit
[    4.129316] vdd_mmc1: supplied by vsys_3v3
[    4.133872] pca953x 4-0020: 4-0020 supply vcc not found, using dummy regulator
[    4.141157] pca953x 4-0020: Linked as a consumer to regulator.0
[    4.168097] GPIO line 448 (DP0_PWR_SW_EN) hogged as output/high
[    4.174646] omap-mailbox 31f80000.mailbox: omap mailbox rev 0x66fc7100
[    4.181542] omap-mailbox 31f81000.mailbox: omap mailbox rev 0x66fc7100
[    4.188429] omap-mailbox 31f82000.mailbox: omap mailbox rev 0x66fc7100
[    4.195344] omap-mailbox 31f83000.mailbox: omap mailbox rev 0x66fc7100
[    4.202242] omap-mailbox 31f84000.mailbox: omap mailbox rev 0x66fc7100
[    4.212394] mmc0: Command Queue Engine enabled
[    4.216835] mmc0: new HS400 MMC card at address 0001
[    4.222149] mmcblk0: mmc0:0001 S0J56X 14.8 GiB 
[    4.226915] mmcblk0boot0: mmc0:0001 S0J56X partition 1 31.5 MiB
[    4.233065] mmcblk0boot1: mmc0:0001 S0J56X partition 2 31.5 MiB
[    4.239050] mmcblk0rpmb: mmc0:0001 S0J56X partition 3 4.00 MiB, chardev (242:0)
[    4.533145] ti-udma 285c0000.udmap: Channels: 24 (tchan: 48, echan: 0, rchan: 48, rflow: 96)
[    4.542719] ti-udma 31150000.udmap: Channels: 84 (tchan: 140, echan: 160, rchan: 140, rflow: 300)
[    4.555535] cadence-qspi 47040000.spi: mt35xu512aba (65536 Kbytes)
[    4.561705] 7 cmdlinepart partitions found on MTD device 47040000.spi.0
[    4.568307] Creating 7 MTD partitions on "47040000.spi.0":
[    4.573783] 0x000000000000-0x000000080000 : "ospi.tiboot3"
[    4.579501] 0x000000080000-0x000000280000 : "ospi.tispl"
[    4.584985] 0x000000280000-0x000000680000 : "ospi.u-boot"
[    4.590561] 0x000000680000-0x0000006a0000 : "ospi.env"
[    4.595924] 0x0000006a0000-0x0000006c0000 : "ospi.env.backup"
[    4.601836] 0x0000006c0000-0x0000007c0000 : "ospi.sysfw"
[    4.607323] 0x000000800000-0x000004000000 : "ospi.rootfs"
[    4.614883] cadence-qspi 47050000.spi: n25q512a (65536 Kbytes)
[    4.622637] am65-cpsw-nuss 46000000.ethernet: rx-flow-id-base is not set -22
[    4.629688] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA00101, cpsw version 0x6BA80100 Ports: 2
[    4.647397] am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
[    4.657891] pps pps0: new PPS source ptp1
[    4.662010] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010a, freq:500000000, add_val:1 pps:1
[    4.670954] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 0.4
[    4.678159] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
[    4.723442] am65-cpsw-nuss 46000000.ethernet: davinci mdio revision 9.7, bus freq 1000000
[    4.731602] libphy: 46000000.ethernet: probed
[    4.737199] sdhci-am654 4fb0000.sdhci: Linked as a consumer to regulator.4
[    4.744082] sdhci-am654 4fb0000.sdhci: Linked as a consumer to regulator.5
[    4.750970] mmc1: Unknown controller version (4). You may experience problems.
[    4.758216] mmc1: CQHCI version 5.10
[    4.791996] mmc1: SDHCI controller on 4fb0000.sdhci [4fb0000.sdhci] using ADMA 64-bit
[    4.809492] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[    4.816403] hctosys: unable to open rtc device (rtc0)
[    4.843177] ALSA device list:
[    4.846139]   No soundcards found.
[    4.849741] Waiting for root device PARTUUID=41a1b097-02...
[    6.191299] mmc1: new ultra high speed DDR50 SDHC card at address e624
[    6.198327] mmcblk1: mmc1:e624 SL16G 14.8 GiB 
[    6.208864]  mmcblk1: p1 p2
[    6.238503] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[    6.246600] VFS: Mounted root (ext4 filesystem) on device 179:98.
[    6.259730] devtmpfs: mounted
[    6.262876] Freeing unused kernel memory: 576K
[    6.267326] Run /sbin/init as init process
[    6.428205] systemd[1]: System time before build time, advancing clock.
[    6.493430] NET: Registered protocol family 10
[    6.498222] Segment Routing with IPv6
[    6.523474] systemd[1]: systemd 239 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
[    6.544894] systemd[1]: Detected architecture arm64.

Welcome to Arago 2019.11!

[    6.578902] systemd[1]: Set hostname to <j7-evm>.
[    6.688948] systemd[1]: File /lib/systemd/system/systemd-journald.service:36 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
[    6.705967] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
[    6.819077] random: systemd: uninitialized urandom read (16 bytes read)
[    6.825852] systemd[1]: Listening on udev Control Socket.
[  OK  ] Listening on udev Control Socket.
[    6.843487] random: systemd: uninitialized urandom read (16 bytes read)
[    6.850218] systemd[1]: Listening on Journal Socket (/dev/log).
[  OK  ] Listening on Journal Socket (/dev/log).
[    6.867483] random: systemd: uninitialized urandom read (16 bytes read)
[    6.874203] systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Journal Socket.
[    6.893774] systemd[1]: Started Hardware RNG Entropy Gatherer Daemon.
[  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
[    6.913225] systemd[1]: Mounting Huge Pages File System...
         Mounting Huge Pages File System...
[  OK  ] Listening on Network Service Netlink Socket.
[  OK  ] Reached target Swap.
[  OK  ] Reached target Remote File Systems.
[  OK  ] Started Forward Password Requests to Wall Directory Watch.
         Mounting POSIX Message Queue File System...
         Mounting Kernel Debug File System...
         Mounting Temporary Directory (/tmp)...
[  OK  ] Created slice system-getty.slice.
[  OK  ] Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Reached target Paths.
         Starting Journal Service...
[  OK  ] Created slice system-serial\x2dgetty.slice.
         Starting Remount Root and Kernel File Systems...
[    7.103861] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
         Starting Load Kernel Modules...
[  OK  ] Created slice User and Session Slice.
[  OK  ] Reached target Slices.
[  OK  ] Listening on udev Kernel Socket.
         Starting udev Coldplug all Devices...
         Starting Create list of required st…ce nodes for the current kernel...
[  OK  ] Listening on Process Core Dump Socket.
[  OK  ] Listening on initctl Compatibility Named Pipe.
[  OK  ] Started Journal Service.
[  OK  ] Mounted Huge Pages File System.
[  OK  ] Mounted POSIX Message Queue File System.
[  OK  ] Mounted Kernel Debug File System.
[  OK  ] Mounted Temporary Directory (/tmp).
[  OK  ] Started Remount Root and Kernel File Systems.
[FAILED] Failed to start Load Kernel Modules.
See 'systemctl status systemd-modules-load.service' for details.
[  OK  ] Started Create list of required sta…vice nodes for the current kernel.
         Mounting Kernel Configuration File System...
         Starting Apply Kernel Variables...
         Starting Create Static Device Nodes in /dev...
         Starting Flush Journal to Persistent Storage...
[  OK  ] Mounted Kernel Configuration File System.
[  OK  ] Started Apply Kernel Variables.
[  OK  ] Started Create Static Device Nodes in /dev.
[  OK  ] Started udev Coldplug all Devices.
[  OK  ] Reached target Local File Systems (Pre).
         Mounting /var/volatile...
         Mounting /media/ram...
[  OK  ] Reached target Containers.
         Starting udev Kernel Device Manager...
[  OK  ] Mounted /var/volatile.
[  OK  ] Mounted /media/ram.
[    7.575933] systemd-journald[150]: Received request to flush runtime journal from PID 1
         Starting Load/Save Random Seed...
[  OK  ] Reached target Local File Systems.
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Started Flush Journal to Persistent Storage.
[  OK  ] Started Load/Save Random Seed.
         Starting Create Volatile Files and Directories...
[  OK  ] Started Create Volatile Files and Directories.
         Starting Network Service...
         Starting Update UTMP about System Boot/Shutdown...
         Starting Network Time Synchronization...
[    7.717084] rti-wdt 2200000.rti: heartbeat 60 sec
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started Network Service.
[    7.759703] rti-wdt 2210000.rti: heartbeat 60 sec
         Starting Wait for Network to be Configured...
         [    7.783099] pcm3168a 6-0044: Linked as a consumer to regulator.2
Starting Network Name Resolution...
[    7.792384] pcm3168a 6-0044: Linked as a consumer to regulator.3
[  OK  ] Found device /dev/ttyS2.
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Initialization.
[    7.867328] k3-dsp-rproc 4d80800000.dsp: assigned reserved memory node c66-dma-memory@a7000000
         Starting Reboot and dump vmcore via kexec...
[    7.895992] k3-dsp-rproc 4d80800000.dsp: configured DSP for remoteproc mode
[    7.907828] k3-dsp-rproc 4d80800000.dsp: local reset is deasserted for device
[  OK  ] Listening on D-Bus System Message Bus Socket.[    7.934090] remoteproc remoteproc0: 4d80800000.dsp is available

[  OK  ] Started Daily Cleanup of Temporary Directorie[    7.947358] k3-dsp-rproc 4d81800000.dsp: assigned reserved memory node c66-dma-memory@a6000000
s.
[    7.964559] k3-dsp-rproc 4d81800000.dsp: configured DSP for remoteproc mode
[  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activati[    7.976930] k3-dsp-rproc 4d81800000.dsp: local reset is deasserted for device
on Socket.
[    7.986867] remoteproc remoteproc1: 4d81800000.dsp is available
[    7.996447] k3-dsp-rproc 64800000.dsp: assigned reserved memory node c71-dma-memory@a8000000
[    8.008056] k3-dsp-rproc 64800000.dsp: configured DSP for remoteproc mode
[    8.027054] remoteproc remoteproc2: 64800000.dsp is available
[  OK  ] Listening on dropbear.socket.
[  OK  ] Listening on RPCbind Server Activation Socket.
[    8.058843] remoteproc remoteproc0: powering up 4d80800000.dsp
[  OK  ] Reached target Sockets.
[    8.065482] remoteproc remoteproc0: Booting fw image j7-c66_0-fw, size 1448016
[  OK  ] Reached target Basic System.
[    8.081913] k3-dsp-rproc 4d80800000.dsp: booting DSP core using boot addr = 0xa6200000
[    8.090833] remoteproc remoteproc1: powering up 4d81800000.dsp
[    8.105346] remoteproc remoteproc1: Booting fw image j7-c66_1-fw, size 1448016
[    8.118286] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    8.133548] virtio_rpmsg_bus virtio0: rpmsg host is online
[  OK  ] Started Periodic Command Scheduler.
[    8.145585] k3-dsp-rproc 4d81800000.dsp: booting DSP core using boot addr = 0xa7200000
[[    8.159576] [drm] No driver support for vblank timestamp query.
  OK  ] Started Job spooling tools.
[    8.166742] remoteproc remoteproc0: registered virtio0 (type 7)
         Starting Print notice about GPLv3 packages...
[    8.180101] remoteproc remoteproc0: remote processor 4d80800000.dsp is now up
[    8.192945] remoteproc remoteproc2: powering up 64800000.dsp
[  OK  ] Started TEE Supplicant.
[    8.206948] virtio_rpmsg_bus virtio1: rpmsg host is online
         Starting rc.pvr.service...
[    8.227472] remoteproc remoteproc2: Booting fw image j7-c71_0-fw, size 6954352
         Starting Login Service...
[    8.236193] remoteproc remoteproc1: registered virtio1 (type 7)
[    8.245548] [drm] Initialized tidss 1.0.0 20180215 for 4a00000.dss on minor 0
[    8.254653] k3-dsp-rproc 64800000.dsp: booting DSP core using boot addr = 0xa8200000
[    8.254697] remoteproc remoteproc1: remote processor 4d81800000.dsp is now up
[    8.255103] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xd
[    8.256431] [drm] Cannot find any crtc or sizes
[  OK  ] Started irqbalance daemon.[    8.283860] virtio_rpmsg_bus virtio2: rpmsg host is online

[    8.294072] remoteproc remoteproc2: registered virtio2 (type 7)
[  OK  ] Started D-Bus System Message Bus.[    8.302207] remoteproc remoteproc2: remote processor 64800000.dsp is now up

[    8.312204] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xd
[    8.321642] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xd
[    8.330734] [drm] Cannot find any crtc or sizes
         Starting RPC Bind Service...
[    8.344181] k3_r5_rproc interconnect@100000:interconnect@28380000:r5fss@41000000: creating child devices for R5F cores
[  OK  ] Reached target System Time Synchronized.
[  OK  ] Started Daily rotation of log files.
[  OK  ] Reached target Timers.
[  OK  ] Started Network Name Resolution.
[  OK  ] Started Reboot and dump vmcore via kexec.
[  OK  ] Found device /dev/ttyS1.
[  OK  ] Reached target Network.
         Starting Permit User Sessions...
         Starting Avahi mDNS/DNS-SD Stack...
[[[    8.393722] platform 41000000.r5f: configured R5F for remoteproc mode
0;32m  OK  ] Reached target Host and Network Name Lookups.
[    8.406162] platform 41000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
[    8.424468] remoteproc remoteproc3: 41000000.r5f is available
[    8.431117] remoteproc remoteproc3: Direct firmware load for j7-mcu-r5f0_0-fw failed with error -2
[    8.442676] remoteproc remoteproc3: powering up 41000000.r5f
[    8.449297] remoteproc remoteproc3: Direct firmware load for j7-mcu-r5f0_0-fw failed with error -2
[    8.459200] k3_r5_rproc interconnect@100000:r5fss@5c00000: creating child devices for R5F cores
[    8.468015] remoteproc remoteproc3: request_firmware failed: -2
[    8.476319] platform 5c00000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
[    8.515918] TI DP83867 k3-cpsw-mdio:00: attached PHY driver [TI DP83867] (mii_bus:phy_addr=k3-cpsw-mdio:00, irq=POLL)
[    8.526655] platform 5c00000.r5f: configured R5F for IPC-only mode
[    8.533912] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    8.534994] platform 5c00000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
[    8.553716] remoteproc remoteproc4: 5c00000.r5f is available
[    8.563069] platform 5d00000.r5f: configured R5F for remoteproc mode
[    8.573603] platform 5d00000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
[    8.585556] remoteproc remoteproc4: powering up 5c00000.r5f
[    8.591205] remoteproc remoteproc4: Booting fw image j7-main-r5f0_0-fw, size 128832
[    8.601286] remoteproc remoteproc5: 5d00000.r5f is available
[    8.607148] platform 5c00000.r5f: R5F core initialized in IPC-only mode
[    8.614287] virtio_rpmsg_bus virtio3: rpmsg host is online
[    8.619017] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xd
[    8.622463] remoteproc remoteproc4: registered virtio3 (type 7)
[    8.636603] remoteproc remoteproc4: remote processor 5c00000.r5f is now up
[    8.647204] k3_r5_rproc interconnect@100000:r5fss@5e00000: creating child devices for R5F cores
[    8.661708] platform 5e00000.r5f: configured R5F for remoteproc mode
[    8.672094] platform 5e00000.r5f: assigned reserved memory node r5f-dma-memory@a4000000
[    8.690755] remoteproc remoteproc6: 5e00000.r5f is available
[    8.700898] remoteproc remoteproc6: Direct firmware load for j7-main-r5f1_0-fw failed with error -2
[    8.712718] remoteproc remoteproc6: powering up 5e00000.r5f
[    8.722153] remoteproc remoteproc6: Direct firmware load for j7-main-r5f1_0-fw failed with error -2
[    8.733674] remoteproc remoteproc6: request_firmware failed: -2
[    8.782303] j721e-audio sound@0: pcm3168a-dac <-> 2ba0000.mcasp mapping ok
[    8.799925] j721e-audio sound@0: pcm3168a-adc <-> 2ba0000.mcasp mapping ok
[    8.833517] remoteproc remoteproc5: powering up 5d00000.r5f
[    8.839622] remoteproc remoteproc5: Booting fw image j7-main-r5f0_1-fw, size 3811288
[    8.857013] remoteproc remoteproc5: bad phdr da 0xadfe0000 mem 0x1a8
[    8.867533] remoteproc remoteproc5: Failed to load program segments: -22
[  OK  ] Started Login Service.
[  OK  ] Started rc.pvr.service.
[  OK  ] Started RPC Bind Service.
[  OK  ] Started Permit User Sessions.
[  OK  ] Started Avahi mDNS/DNS-SD Stack.
[  OK  ] Started Getty on tty1.
[  OK  ] Started Serial Getty on ttyS2.
[  OK  ] Started Serial Getty on ttyS1.
[  OK  ] Reached target Login Prompts.
         Starting Synchronize System and HW clocks...
[  OK  ] Started NFS status monitor for NFSv2/3 locking..
         Starting weston.service...
[FAILED] Failed to start Synchronize System and HW clocks.
See 'systemctl status sync-clocks.service' for details.
[  OK  ] Started weston.service.
         Starting DEMO...
         Starting telnetd.service...
[  OK  ] Started DEMO.
[  OK  ] Started telnetd.service.
         Starting thttpd.service...
[  OK  ] Started thttpd.service.
[    9.437357] cdns-usb3 6000000.usb: DRD version v1 (ID: 0004024e, rev: 00000200)
[    9.453112] omap_rng 4e10000.trng: Random Number Generator ver. 241b34c
[    9.460674] random: crng init done
[    9.464313] random: 7 urandom warning(s) missed due to ratelimiting
[    9.520057] cdns-usb3 6400000.usb: DRD version v1 (ID: 0004024e, rev: 00000200)
         Starting Save/Restore Sound Card State...
[    9.556922] am65-cpsw-nuss 46000000.ethernet eth0: Link is Down
[    9.558035] remoteproc remoteproc7: b034000.pru is available
[    9.570983] pru-rproc b034000.pru: PRU rproc node pru@b034000 probed successfully
[    9.579163] remoteproc remoteproc8: b004000.rtu is available
[    9.584899] pru-rproc b004000.rtu: PRU rproc node rtu@b004000 probed successfully
[    9.592714] remoteproc remoteproc9: b00a000.txpru is available
[    9.598709] pru-rproc b00a000.txpru: PRU rproc node txpru@b00a000 probed successfully
[    9.607688] remoteproc remoteproc10: b038000.pru is available
[    9.613521] pru-rproc b038000.pru: PRU rproc node pru@b038000 probed successfully
[    9.621670] remoteproc remoteproc11: b006000.rtu is available
[    9.627466] pru-rproc b006000.rtu: PRU rproc node rtu@b006000 probed successfully
[    9.635249] remoteproc remoteproc12: b00c000.txpru is available
[    9.641205] pru-rproc b00c000.txpru: PRU rproc node txpru@b00c000 probed successfully
[    9.649345] remoteproc remoteproc13: b134000.pru is available
[    9.655115] pru-rproc b134000.pru: PRU rproc node pru@b134000 probed successfully
[    9.662906] remoteproc remoteproc14: b104000.rtu is available
[    9.668692] pru-rproc b104000.rtu: PRU rproc node rtu@b104000 probed successfully
[    9.676538] remoteproc remoteproc15: b10a000.txpru is available
[    9.682500] pru-rproc b10a000.txpru: PRU rproc node txpru@b10a000 probed successfully
[    9.690671] remoteproc remoteproc16: b138000.pru is available
[    9.696666] pru-rproc b138000.pru: PRU rproc node pru@b138000 probed successfully
[  OK  ] Started Save/Restore Sound Card State.
[    9.704633] remoteproc remoteproc17: b106000.rtu is available
[    9.704664] pru-rproc b106000.rtu: PRU rproc node rtu@b106000 probed successfully
[    9.704901] remoteproc remoteproc18: b10c000.txpru is available
[    9.704959] pru-rproc b10c000.txpru: PRU rproc node txpru@b10c000 probed successfully
[  OK  ] Reached target Sound Card.
[  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
[    9.780796] usbcore: registered new interface driver usbfs
[    9.786383] usbcore: registered new interface driver hub
[    9.791751] usbcore: registered new device driver usb
[    9.818126] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[    9.824070] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 1
[    9.833154] xhci-hcd xhci-hcd.2.auto: hcc params 0x200073c9 hci version 0x100 quirks 0x0000000000010010
[    9.842811] xhci-hcd xhci-hcd.2.auto: irq 324, io mem 0x06410000
[    9.848994] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
[    9.857264] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    9.864510] usb usb1: Product: xHCI Host Controller
[    9.869389] usb usb1: Manufacturer: Linux 4.19.94 xhci-hcd
[    9.874877] usb usb1: SerialNumber: xhci-hcd.2.auto
[    9.880029] hub 1-0:1.0: USB hub found
[    9.883825] hub 1-0:1.0: 1 port detected
[    9.888258] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[    9.893771] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 2
[    9.901465] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[    9.908063] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    9.916234] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 4.19
[    9.924508] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    9.931750] usb usb2: Product: xHCI Host Controller
[    9.936631] usb usb2: Manufacturer: Linux 4.19.94 xhci-hcd
[    9.942175] usb usb2: SerialNumber: xhci-hcd.2.auto
[  OK  ] [    9.947560] hub 2-0:1.0: USB hub found
Created slice system-systemd\x2dfsck.slice.[    9.952958] hub 2-0:1.0: 1 port detected

[  OK  ] Found device /dev/mmcblk1p1.
         Starting File System Check on /dev/mmcblk1p1...
[   10.223473] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[  OK  ] Started File System Check on /dev/mmcblk1p1.
         Mounting /run/media/mmcblk1p1...
[   10.375742] usb 1-1: New USB device found, idVendor=0451, idProduct=8142, bcdDevice= 1.00
[   10.383933] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[   10.391086] usb 1-1: SerialNumber: 30000879DE36
[   10.398156] hub 1-1:1.0: USB hub found
[   10.402631] hub 1-1:1.0: 4 ports detected
[  OK  ] Mounted /run/media/mmcblk1p1.
***************************************************************
***************************************************************
NOTICE: This file system contains the following GPLv3 packages:
	autoconf
	bash-dev
	bash
	bc
	binutils
	cifs-utils
	cpio
	cpp-symlinks
	cpp
	dosfstools
	elfutils
	g++-symlinks
	g++
	gawk
	gcc-symlinks
	gcc
	gdb
	gdbserver
	gettext
	glmark2
	gstreamer1.0-libav
	gzip
	libbfd
	libcairo-perf-utils
	libdw1
	libelf1
	libgdbm-compat4
	libgdbm-dev
	libgdbm6
	libgettextlib
	libgettextsrc
	libgmp10
	libidn2-0
	libmpc3
	libmpfr6
	libreadline-dev
	libreadline7
	libunistring2
	m4-dev
	m4
	make
	nettle
	parted
	which

If you do not wish to distribute GPLv3 components please remove
the above packages prior to distribution.  This can be done using
the opkg remove command.  i.e.:
    opkg remove <package>
Where <package> is the name printed in the list above

NOTE: If the package is a dependency of another package you
      will be notified of the dependent packages.  You should
      use the --force-removal-of-dependent-packages option to
      also remove the dependent packages as well
***************************************************************
***************************************************************
[  OK  ] Started Print notice about GPLv3 packages.

 _____                    _____           _         _   
|  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
|     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
|__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
              |___|                    |___|            

Arago Project http://arago-project.org j7-evm ttyS2

Arago 2019.11 j7-evm ttyS2

j7-evm login: 

0000:00:00.0 PCI bridge: Texas Instruments Device b00d (prog-if 00 [Normal decode])
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 255
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [empty]
	Memory behind bridge: fff00000-000fffff [empty]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [empty]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
		Vector table: BAR=0 offset=00000000
		PBA: BAR=0 offset=00000008
	Capabilities: [c0] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x1, ASPM L1, Exit Latency L1 <8us
			ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x2 (strange)
			TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Off, PwrInd Off, Power+ Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
		RootCmd: CERptEn- NFERptEn- FERptEn-
		RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd-
			 FirstFatal- NonFatalMsg- FatalMsg- IntMsg 0
		ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000
	Capabilities: [150 v1] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [300 v1] Secondary PCI Express <?>
	Capabilities: [4c0 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-
		VC1:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=1 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
		VC2:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=2 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
		VC3:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=3 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
	Capabilities: [5c0 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 01
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [640 v1] Page Request Interface (PRI)
		PRICtl: Enable- Reset-
		PRISta: RF- UPRGI- Stopped+
		Page Request Capacity: 00000001, Page Request Allocation: 00000000
	Capabilities: [900 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=255us PortTPowerOnTime=26us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us

0001:00:00.0 PCI bridge: Texas Instruments Device b00d (prog-if 00 [Normal decode])
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 255
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [empty]
	Memory behind bridge: 00000000-001fffff [size=2M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [empty]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
		Vector table: BAR=0 offset=00000000
		PBA: BAR=0 offset=00000008
	Capabilities: [c0] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x2, ASPM L1, Exit Latency L1 <8us
			ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s (ok), Width x2 (ok)
			TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt+
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Off, PwrInd Off, Power+ Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+
			 EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout+ AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
		RootCmd: CERptEn- NFERptEn- FERptEn-
		RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd-
			 FirstFatal- NonFatalMsg- FatalMsg- IntMsg 0
		ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000
	Capabilities: [150 v1] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [300 v1] Secondary PCI Express <?>
	Capabilities: [4c0 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-
		VC1:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=1 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
		VC2:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=2 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
		VC3:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=3 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
	Capabilities: [5c0 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 01
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [640 v1] Page Request Interface (PRI)
		PRICtl: Enable- Reset-
		PRISta: RF- UPRGI- Stopped+
		Page Request Capacity: 00000001, Page Request Allocation: 00000000
	Capabilities: [900 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=255us PortTPowerOnTime=26us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us

0001:01:00.0 Serial controller: Xilinx Corporation Device 903f (prog-if 01 [16450])
	Subsystem: Xilinx Corporation Device 0007
	Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 0
	Region 0: [virtual] Memory at 4100000000 (32-bit, non-prefetchable) [size=1M]
	Region 1: Memory at 4100100000 (32-bit, non-prefetchable) [size=64K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 1024 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0.000W
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x16, ASPM not supported
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s (ok), Width x2 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range BC, TimeoutDis+, LTR-, OBFF Not Supported
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
			 AtomicOpsCtl: ReqEn-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+
			 EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr+ BadTLP+ BadDLLP+ Rollover- Timeout+ AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [1c0 v1] Secondary PCI Express <?>
	Capabilities: [1f0 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		Port Arbitration Table [500] <?>
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-

0002:00:00.0 PCI bridge: Texas Instruments Device b00d (prog-if 00 [Normal decode])
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 255
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [empty]
	Memory behind bridge: fff00000-000fffff [empty]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [empty]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
		Vector table: BAR=0 offset=00000000
		PBA: BAR=0 offset=00000008
	Capabilities: [c0] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x2, ASPM L1, Exit Latency L1 <8us
			ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x2 (ok)
			TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Off, PwrInd Off, Power+ Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
		RootCmd: CERptEn- NFERptEn- FERptEn-
		RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd-
			 FirstFatal- NonFatalMsg- FatalMsg- IntMsg 0
		ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000
	Capabilities: [150 v1] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [300 v1] Secondary PCI Express <?>
	Capabilities: [4c0 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-
		VC1:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=1 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
		VC2:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=2 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
		VC3:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable- ID=3 ArbSelect=Fixed TC/VC=00
			Status:	NegoPending- InProgress-
	Capabilities: [5c0 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 01
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [640 v1] Page Request Interface (PRI)
		PRICtl: Enable- Reset-
		PRISta: RF- UPRGI- Stopped+
		Page Request Capacity: 00000001, Page Request Allocation: 00000000
	Capabilities: [900 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=255us PortTPowerOnTime=26us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us

 

  • Uros, 

    which version of the SDK you are using? could you share your device tree file. It seems driver probing failed due to DMA events.  I will need to review the log files with the the driver team. 

    Thanks

    jian

  • Hi Jian,

    We are using latest SDK V06.02.00.07. as well as TI J721E EVM Board.

    The device tree, and rest of the system should be the same as it was shipped with SDK.

    In the attachment you can find the archive with device tree files.

    Regards,

    Uros

    8117.dtb.zip

  • Hi Uros,

    4.19 kernel doesn't support legacy interrupts. Does  Xilinx VCU128 support only legacy interrupts?

    Regards

    Kishon

  • Uros, 

    please let us know you feedback from Kishon's response. 

    thanks

    jian

  • Hi Kishon and Jian,

    The Xilinx driver supports three interrupts: legacy, MSI and MSI-X.

    Driver can accept parameter to set which interrupt type to use.
    We tried all three and it fails in exactly the same way.

    Regards.

    Uros

  • Hi Uros,

    TI J721E supports MSI and MSI-X.

    pci 0001:00:00.0: of_irq_parse_pci: failed with rc=-22 is because of unable to get legacy interrupts.

    Would you be able to tell where exactly in xdma driver, the failure is returned i.e if you try to use MSI or MSI-X. Some call in xdma driver should return failure, would you be able add prints to see where it fails?

    Thanks

    Kishon

  • Hi Kishon,

    The failure happens inside following function in file xdma_mod.c:

    {
    	int rv;
    
    	pr_info("%s", version);
    
    	if (desc_blen_max > XDMA_DESC_BLEN_MAX)
    		desc_blen_max = XDMA_DESC_BLEN_MAX;
    	pr_info("desc_blen_max: 0x%x/%u, sgdma_timeout: %u sec.\n",
    		desc_blen_max, desc_blen_max, sgdma_timeout);
    
    	rv = xdma_cdev_init();
    	if (rv < 0)
    		return rv;
    
    	return pci_register_driver(&pci_driver);
    }

    The function pci_register_driver(&pci_driver) returns -22 error code.

    The pci_driver structure looks as follows:

    static struct pci_driver pci_driver = {
    	.name = DRV_MODULE_NAME,
    	.id_table = pci_ids,
    	.probe = probe_one,
    	.remove = remove_one,
    	.err_handler = &xdma_err_handler,
    };

    The driver 'probe' function (probe_one) returns the -22 error.

    After enabling debug output in the Xilinx XDMA driver we got following message:

    [ 24.905054] xdma:enable_msi_msix: MSI/MSI-X not detected - using legacy interrupts
    [ 24.913650] xdma:irq_legacy_setup: Legacy Interrupt register value = 1
    [ 24.920175] xdma:irq_legacy_setup: Couldn't use IRQ#0, -22

    The functions enable_msi_msix and irq_legacy_setup are written by Xilinx and they are located in libxdma.c file and they are called from probe_one function.

    The enable_msi_msix function looks like following:

    static int enable_msi_msix(struct xdma_dev *xdev, struct pci_dev *pdev)
    {
    	int rv = 0;
    
    	if (!xdev) {
    		pr_err("Invalid xdev\n");
    		return -EINVAL;
    	}
    
    	if (!pdev) {
    		pr_err("Invalid pdev\n");
    		return -EINVAL;
    	}
    
    	if (!interrupt_mode && msi_msix_capable(pdev, PCI_CAP_ID_MSIX)) {
    		int req_nvec = xdev->c2h_channel_max + xdev->h2c_channel_max +
    			       xdev->user_max;
    
    #if KERNEL_VERSION(4, 12, 0) <= LINUX_VERSION_CODE
    		dbg_init("Enabling MSI-X\n");
    		rv = pci_alloc_irq_vectors(pdev, req_nvec, req_nvec,
    					   PCI_IRQ_MSIX);
    #else
    		int i;
    
    		dbg_init("Enabling MSI-X\n");
    		for (i = 0; i < req_nvec; i++)
    			xdev->entry[i].entry = i;
    
    		rv = pci_enable_msix(pdev, xdev->entry, req_nvec);
    #endif
    		if (rv < 0)
    			dbg_init("Couldn't enable MSI-X mode: %d\n", rv);
    
    		xdev->msix_enabled = 1;
    
    	} else if (interrupt_mode == 1 &&
    		   msi_msix_capable(pdev, PCI_CAP_ID_MSI)) {
    		/* enable message signalled interrupts */
    		dbg_init("pci_enable_msi()\n");
    		rv = pci_enable_msi(pdev);
    		if (rv < 0)
    			dbg_init("Couldn't enable MSI mode: %d\n", rv);
    		xdev->msi_enabled = 1;
    
    	} else {
    		dbg_init("MSI/MSI-X not detected - using legacy interrupts\n");
    	}
    
    	return rv;
    }

    The irq_legacy_setup looks as following:

    static int irq_legacy_setup(struct xdma_dev *xdev, struct pci_dev *pdev)
    {
    	u32 w;
    	u8 val;
    	void *reg;
    	int rv;
    
    	pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &val);
    	dbg_init("Legacy Interrupt register value = %d\n", val);
    	if (val > 1) {
    		val--;
    		w = (val << 24) | (val << 16) | (val << 8) | val;
    		/* Program IRQ Block Channel vactor and IRQ Block User vector
    		 * with Legacy interrupt value
    		 */
    		reg = xdev->bar[xdev->config_bar_idx] + 0x2080; // IRQ user
    		write_register(w, reg, 0x2080);
    		write_register(w, reg + 0x4, 0x2084);
    		write_register(w, reg + 0x8, 0x2088);
    		write_register(w, reg + 0xC, 0x208C);
    		reg = xdev->bar[xdev->config_bar_idx] + 0x20A0; // IRQ Block
    		write_register(w, reg, 0x20A0);
    		write_register(w, reg + 0x4, 0x20A4);
    	}
    
    	xdev->irq_line = (int)pdev->irq;
    	rv = request_irq(pdev->irq, xdma_isr, IRQF_SHARED, xdev->mod_name,
    			 xdev);
    	if (rv)
    		dbg_init("Couldn't use IRQ#%d, %d\n", pdev->irq, rv);
    	else
    		dbg_init("Using IRQ#%d with 0x%p\n", pdev->irq, xdev);
    
    	return rv;
    }

    I hope these information will help.

    Regards.

    Uros

  • Hi Uros,

    Looking at enable_msi_msix() function both

         if (!interrupt_mode && msi_msix_capable(pdev, PCI_CAP_ID_MSIX))

    and 

        } else if (interrupt_mode == 1 &&
               msi_msix_capable(pdev, PCI_CAP_ID_MSI)) {
    conditional check has failed.
    That's why you get "MSI/MSI-X not detected - using legacy interrupts" print.
    The Xilinx device might not support MSI or MSI-X capability (though the driver supports).
    Thanks
    Kishon
  • Hi Uros,

    We haven't enabled legacy interrupt in SDK because most of the PCIe devices should support MSI/MSI-X interrupts and also we have an errata with j721e w.r.t legacy interrupts.

    I'd prefer if you can get a xilinx which can support MSI or MSI-X interrupts.

    Can you try using the following diff to enable legacy interrupts in j721e, to see if that helps.

    From 82e3ec64fd16127ab078662ea7e07ec38f6b4d8a Mon Sep 17 00:00:00 2001
    From: Kishon Vijay Abraham I <kishon@ti.com>
    Date: Fri, 8 May 2020 19:25:00 +0530
    Subject: [PATCH] customer legacy interrupt
    
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    ---
     arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 43 +++++++++-
     drivers/pci/controller/pci-j721e.c        | 95 ++++++++++++++++++++++-
     2 files changed, 136 insertions(+), 2 deletions(-)
    
    diff --git a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
    index 4e04d5b14521..a2a233dc84d2 100644
    --- a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
    +++ b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
    @@ -1000,11 +1000,17 @@
     			cdns,no-bar-match-nbits = <64>;
     			vendor-id = /bits/ 16 <0x104c>;
     			device-id = /bits/ 16 <0xb00d>;
    -			msi-map = <0x0 &gic_its 0x0 0x10000>;
     			iommu-map = <0x0 &smmu0 0x0 0x1000>;
     			dma-coherent;
    +			msi-map = <0x0 &gic_its 0x0 0x10000>
     			ranges = <0x01000000 0x0 0x10001000  0x00 0x10001000  0x0 0x0010000>,
     				 <0x02000000 0x0 0x10011000  0x00 0x10011000  0x0 0x7fef000>;
    +			#interrupt-cells = <1>;
    +	                interrupt-map-mask = <0 0 0 7>;
    +        	        interrupt-map = <0 0 0 1 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT A */
    +                	                <0 0 0 2 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT B */
    +                        	        <0 0 0 3 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT C */
    +                                	<0 0 0 4 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>; /* INT D */
     		};
     
     		pcie0_ep: pcie-ep@d000000 {
    @@ -1017,6 +1023,13 @@
     			max-virtual-functions = /bits/ 8 <0x4 0x4 0x4 0x4 0x0 0x0>;
     			dma-coherent;
     		};
    +
    +                pcie0_intc: legacy-interrupt-controller {
    +                        interrupt-controller;
    +                        #interrupt-cells = <2>;
    +                        interrupt-parent = <&gic500>;
    +                        interrupts = <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>;
    +                };
     	};
     
     	pcie1: pcie@2910000 {
    @@ -1034,6 +1047,7 @@
     		power-domains = <&k3_pds 240 TI_SCI_PD_EXCLUSIVE>;
     		clocks = <&k3_clks 240 1>;
     		clock-names = "fck";
    +		status = "disabled";
     
     		pcie1_rc: pcie@d800000 {
     			compatible = "ti,j721e-cdns-pcie-host";
    @@ -1053,6 +1067,12 @@
     			dma-coherent;
     			ranges = <0x01000000 0x0 0x18001000  0x00 0x18001000  0x0 0x0010000>,
     				 <0x02000000 0x0 0x18011000  0x00 0x18011000  0x0 0x7fef000>;
    +			#interrupt-cells = <1>;
    +	                interrupt-map-mask = <0 0 0 7>;
    +        	        interrupt-map = <0 0 0 1 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT A */
    +                	                <0 0 0 2 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT B */
    +                        	        <0 0 0 3 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT C */
    +                                	<0 0 0 4 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>; /* INT D */
     		};
     
     		pcie1_ep: pcie-ep@d800000 {
    @@ -1065,6 +1085,13 @@
     			max-virtual-functions = /bits/ 8 <0x4 0x4 0x4 0x4 0x0 0x0>;
     			dma-coherent;
     		};
    +
    +                pcie1_intc: legacy-interrupt-controller {
    +                        interrupt-controller;
    +                        #interrupt-cells = <2>;
    +                        interrupt-parent = <&gic500>;
    +                        interrupts = <GIC_SPI 324 IRQ_TYPE_EDGE_RISING>;
    +                };
     	};
     
     	pcie2: pcie@2920000 {
    @@ -1082,6 +1109,7 @@
     		power-domains = <&k3_pds 241 TI_SCI_PD_EXCLUSIVE>;
     		clocks = <&k3_clks 241 1>;
     		clock-names = "fck";
    +		status = "disabled";
     
     		pcie2_rc: pcie@e000000 {
     			compatible = "ti,j721e-cdns-pcie-host";
    @@ -1101,6 +1129,12 @@
     			dma-coherent;
     			ranges = <0x01000000 0x00 0x00001000  0x44 0x00001000  0x0 0x0010000>,
     				 <0x02000000 0x00 0x00011000  0x44 0x00011000  0x0 0x7fef000>;
    +			#interrupt-cells = <1>;
    +	                interrupt-map-mask = <0 0 0 7>;
    +        	        interrupt-map = <0 0 0 1 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT A */
    +                	                <0 0 0 2 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT B */
    +                        	        <0 0 0 3 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT C */
    +                                	<0 0 0 4 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>; /* INT D */
     		};
     
     		pcie2_ep: pcie-ep@e000000 {
    @@ -1113,6 +1147,13 @@
     			max-virtual-functions = /bits/ 8 <0x4 0x4 0x4 0x4 0x0 0x0>;
     			dma-coherent;
     		};
    +
    +                pcie2_intc: legacy-interrupt-controller {
    +                        interrupt-controller;
    +                        #interrupt-cells = <2>;
    +                        interrupt-parent = <&gic500>;
    +                        interrupts = <GIC_SPI 336 IRQ_TYPE_EDGE_RISING>;
    +                };
     	};
     
     	main_uart0: serial@2800000 {
    diff --git a/drivers/pci/controller/pci-j721e.c b/drivers/pci/controller/pci-j721e.c
    index a84a4fb5bf65..adf83eef8d01 100644
    --- a/drivers/pci/controller/pci-j721e.c
    +++ b/drivers/pci/controller/pci-j721e.c
    @@ -33,6 +33,13 @@ enum link_status {
     	LINK_UP_DL_COMPLETED,
     };
     
    +#define EOI_REG			0x10
    +
    +#define ENABLE_REG_SYS_0	0x100
    +#define STATUS_REG_SYS_0	0x500
    +#define STATUS_CLR_REG_SYS_0	0x700
    +#define INTx_EN(num)		(1 << (num))
    +
     #define J721E_TRANS_CTRL(a)		((a) * 0xc)
     #define J721E_TRANS_REQ_ID(a)		(((a) * 0xc) + 0x4)
     #define J721E_TRANS_VIRT_ID(a)		(((a) * 0xc) + 0x8)
    @@ -70,6 +77,7 @@ struct j721e_pcie {
     	void __iomem		*user_cfg_base;
     	void __iomem		*vmap_lp_base;
     	u8			vmap_lp_index;
    +	struct irq_domain	*legacy_irq_domain;
     	bool			enable_smmu;
     };
     
    @@ -117,7 +125,7 @@ static void j721e_pcie_quirk(struct pci_dev *pci_dev)
     	u32 val;
     
     	static const struct pci_device_id rc_pci_devids[] = {
    -		{ PCI_DEVICE(0x104c, 0xb00d),
    +		{ PCI_DEVICE(PCI_VENDOR_ID_TI, 0xb00d),
     		.class = PCI_CLASS_BRIDGE_PCI << 8, .class_mask = ~0, },
     		{ 0, },
     	};
    @@ -161,6 +169,87 @@ static void j721e_pcie_quirk(struct pci_dev *pci_dev)
     }
     DECLARE_PCI_FIXUP_ENABLE(PCI_ANY_ID, PCI_ANY_ID, j721e_pcie_quirk);
     
    +static void j721e_pcie_legacy_irq_handler(struct irq_desc *desc)
    +{
    +	int i;
    +	u32 reg;
    +	int virq;
    +	struct j721e_pcie *pcie = irq_desc_get_handler_data(desc);
    +	struct irq_chip *chip = irq_desc_get_chip(desc);
    +
    +	chained_irq_enter(chip, desc);
    +
    +	for (i = 0; i < PCI_NUM_INTX; i++) {
    +		reg = j721e_pcie_intd_readl(pcie, STATUS_REG_SYS_0);
    +		printk("%s %d %x\n", __func__, __LINE__, reg);
    +		if (!(reg & INTx_EN(i)))
    +			continue;
    +
    +	virq = irq_find_mapping(pcie->legacy_irq_domain, 3 - i);
    +		generic_handle_irq(virq);
    +		j721e_pcie_intd_writel(pcie, STATUS_CLR_REG_SYS_0, INTx_EN(i));
    +		j721e_pcie_intd_writel(pcie, EOI_REG, 3 - i);
    +	}
    +
    +	chained_irq_exit(chip, desc);
    +}
    +
    +static int j721e_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
    +			       irq_hw_number_t hwirq)
    +{
    +	irq_set_chip_and_handler(irq, &dummy_irq_chip, handle_simple_irq);
    +	irq_set_chip_data(irq, domain->host_data);
    +
    +	return 0;
    +}
    +
    +static const struct irq_domain_ops j721e_pcie_intx_domain_ops = {
    +	.map = j721e_pcie_intx_map,
    +};
    +
    +static int j721e_pcie_config_legacy_irq(struct j721e_pcie *pcie)
    +{
    +	struct device *dev = pcie->dev;
    +	struct irq_domain *legacy_irq_domain;
    +	struct device_node *node = pcie->node;
    +	struct device_node *intc_node;
    +	int irq;
    +	int virq;
    +	u32 reg;
    +	int i;
    +
    +	intc_node = of_get_child_by_name(node, "legacy-interrupt-controller");
    +	if (!intc_node) {
    +		dev_WARN(dev, "legacy-interrupt-controller node is absent\n");
    +		return -EINVAL;
    +	}
    +
    +	irq = irq_of_parse_and_map(intc_node, 0);
    +	if (!irq) {
    +		dev_err(dev, "Failed to parse and map legacy irq\n");
    +		return -EINVAL;
    +	}
    +	irq_set_chained_handler_and_data(irq, j721e_pcie_legacy_irq_handler,
    +					 pcie);
    +
    +	legacy_irq_domain = irq_domain_add_linear(intc_node, PCI_NUM_INTX,
    +						  &j721e_pcie_intx_domain_ops,
    +						  NULL);
    +	if (!legacy_irq_domain) {
    +		dev_err(dev, "Failed to add irq domain for legacy irqs\n");
    +		return -EINVAL;
    +	}
    +	pcie->legacy_irq_domain = legacy_irq_domain;
    +
    +	for (i = 0; i < PCI_NUM_INTX; i++) {
    +		reg = j721e_pcie_intd_readl(pcie, ENABLE_REG_SYS_0);
    +		reg |= INTx_EN(i);
    +		j721e_pcie_intd_writel(pcie, ENABLE_REG_SYS_0, reg);
    +	}
    +
    +	return 0;
    +}
    +
     static int j721e_pcie_start_link(struct cdns_pcie_plat_data *data, bool start)
     {
     	struct j721e_pcie *pcie = to_j721e_pcie(data);
    @@ -362,6 +451,10 @@ static int j721e_pcie_probe(struct platform_device *pdev)
     			goto err_get_sync;
     		pcie->vmap_lp_base = base;
     
    +		ret = j721e_pcie_config_legacy_irq(pcie);
    +		if (ret < 0)
    +			goto err_get_sync;
    +
     		child_node = of_get_child_by_name(node, "pcie");
     		if (!child_node) {
     			dev_WARN(dev, "pcie-rc node is absent\n");
    -- 
    2.17.1
    

    Thanks

    Kishon

  • Modified the patch (previous patch had some PCIe instances disabled)

    From 4efdc7691e426fbf3ae157f1cc7834e935417eb6 Mon Sep 17 00:00:00 2001
    From: Kishon Vijay Abraham I <kishon@ti.com>
    Date: Fri, 8 May 2020 19:25:00 +0530
    Subject: [PATCH] customer legacy interrupt
    
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    ---
     arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 41 +++++++++-
     drivers/pci/controller/pci-j721e.c        | 95 ++++++++++++++++++++++-
     2 files changed, 134 insertions(+), 2 deletions(-)
    
    diff --git a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
    index 4e04d5b14521..68c80f344e2f 100644
    --- a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
    +++ b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
    @@ -1000,11 +1000,17 @@
     			cdns,no-bar-match-nbits = <64>;
     			vendor-id = /bits/ 16 <0x104c>;
     			device-id = /bits/ 16 <0xb00d>;
    -			msi-map = <0x0 &gic_its 0x0 0x10000>;
     			iommu-map = <0x0 &smmu0 0x0 0x1000>;
     			dma-coherent;
    +			msi-map = <0x0 &gic_its 0x0 0x10000>
     			ranges = <0x01000000 0x0 0x10001000  0x00 0x10001000  0x0 0x0010000>,
     				 <0x02000000 0x0 0x10011000  0x00 0x10011000  0x0 0x7fef000>;
    +			#interrupt-cells = <1>;
    +	                interrupt-map-mask = <0 0 0 7>;
    +        	        interrupt-map = <0 0 0 1 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT A */
    +                	                <0 0 0 2 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT B */
    +                        	        <0 0 0 3 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT C */
    +                                	<0 0 0 4 &pcie0_intc 0 IRQ_TYPE_EDGE_RISING>; /* INT D */
     		};
     
     		pcie0_ep: pcie-ep@d000000 {
    @@ -1017,6 +1023,13 @@
     			max-virtual-functions = /bits/ 8 <0x4 0x4 0x4 0x4 0x0 0x0>;
     			dma-coherent;
     		};
    +
    +                pcie0_intc: legacy-interrupt-controller {
    +                        interrupt-controller;
    +                        #interrupt-cells = <2>;
    +                        interrupt-parent = <&gic500>;
    +                        interrupts = <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>;
    +                };
     	};
     
     	pcie1: pcie@2910000 {
    @@ -1053,6 +1066,12 @@
     			dma-coherent;
     			ranges = <0x01000000 0x0 0x18001000  0x00 0x18001000  0x0 0x0010000>,
     				 <0x02000000 0x0 0x18011000  0x00 0x18011000  0x0 0x7fef000>;
    +			#interrupt-cells = <1>;
    +	                interrupt-map-mask = <0 0 0 7>;
    +        	        interrupt-map = <0 0 0 1 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT A */
    +                	                <0 0 0 2 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT B */
    +                        	        <0 0 0 3 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT C */
    +                                	<0 0 0 4 &pcie1_intc 0 IRQ_TYPE_EDGE_RISING>; /* INT D */
     		};
     
     		pcie1_ep: pcie-ep@d800000 {
    @@ -1065,6 +1084,13 @@
     			max-virtual-functions = /bits/ 8 <0x4 0x4 0x4 0x4 0x0 0x0>;
     			dma-coherent;
     		};
    +
    +                pcie1_intc: legacy-interrupt-controller {
    +                        interrupt-controller;
    +                        #interrupt-cells = <2>;
    +                        interrupt-parent = <&gic500>;
    +                        interrupts = <GIC_SPI 324 IRQ_TYPE_EDGE_RISING>;
    +                };
     	};
     
     	pcie2: pcie@2920000 {
    @@ -1101,6 +1127,12 @@
     			dma-coherent;
     			ranges = <0x01000000 0x00 0x00001000  0x44 0x00001000  0x0 0x0010000>,
     				 <0x02000000 0x00 0x00011000  0x44 0x00011000  0x0 0x7fef000>;
    +			#interrupt-cells = <1>;
    +	                interrupt-map-mask = <0 0 0 7>;
    +        	        interrupt-map = <0 0 0 1 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT A */
    +                	                <0 0 0 2 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT B */
    +                        	        <0 0 0 3 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>, /* INT C */
    +                                	<0 0 0 4 &pcie2_intc 0 IRQ_TYPE_EDGE_RISING>; /* INT D */
     		};
     
     		pcie2_ep: pcie-ep@e000000 {
    @@ -1113,6 +1145,13 @@
     			max-virtual-functions = /bits/ 8 <0x4 0x4 0x4 0x4 0x0 0x0>;
     			dma-coherent;
     		};
    +
    +                pcie2_intc: legacy-interrupt-controller {
    +                        interrupt-controller;
    +                        #interrupt-cells = <2>;
    +                        interrupt-parent = <&gic500>;
    +                        interrupts = <GIC_SPI 336 IRQ_TYPE_EDGE_RISING>;
    +                };
     	};
     
     	main_uart0: serial@2800000 {
    diff --git a/drivers/pci/controller/pci-j721e.c b/drivers/pci/controller/pci-j721e.c
    index a84a4fb5bf65..adf83eef8d01 100644
    --- a/drivers/pci/controller/pci-j721e.c
    +++ b/drivers/pci/controller/pci-j721e.c
    @@ -33,6 +33,13 @@ enum link_status {
     	LINK_UP_DL_COMPLETED,
     };
     
    +#define EOI_REG			0x10
    +
    +#define ENABLE_REG_SYS_0	0x100
    +#define STATUS_REG_SYS_0	0x500
    +#define STATUS_CLR_REG_SYS_0	0x700
    +#define INTx_EN(num)		(1 << (num))
    +
     #define J721E_TRANS_CTRL(a)		((a) * 0xc)
     #define J721E_TRANS_REQ_ID(a)		(((a) * 0xc) + 0x4)
     #define J721E_TRANS_VIRT_ID(a)		(((a) * 0xc) + 0x8)
    @@ -70,6 +77,7 @@ struct j721e_pcie {
     	void __iomem		*user_cfg_base;
     	void __iomem		*vmap_lp_base;
     	u8			vmap_lp_index;
    +	struct irq_domain	*legacy_irq_domain;
     	bool			enable_smmu;
     };
     
    @@ -117,7 +125,7 @@ static void j721e_pcie_quirk(struct pci_dev *pci_dev)
     	u32 val;
     
     	static const struct pci_device_id rc_pci_devids[] = {
    -		{ PCI_DEVICE(0x104c, 0xb00d),
    +		{ PCI_DEVICE(PCI_VENDOR_ID_TI, 0xb00d),
     		.class = PCI_CLASS_BRIDGE_PCI << 8, .class_mask = ~0, },
     		{ 0, },
     	};
    @@ -161,6 +169,87 @@ static void j721e_pcie_quirk(struct pci_dev *pci_dev)
     }
     DECLARE_PCI_FIXUP_ENABLE(PCI_ANY_ID, PCI_ANY_ID, j721e_pcie_quirk);
     
    +static void j721e_pcie_legacy_irq_handler(struct irq_desc *desc)
    +{
    +	int i;
    +	u32 reg;
    +	int virq;
    +	struct j721e_pcie *pcie = irq_desc_get_handler_data(desc);
    +	struct irq_chip *chip = irq_desc_get_chip(desc);
    +
    +	chained_irq_enter(chip, desc);
    +
    +	for (i = 0; i < PCI_NUM_INTX; i++) {
    +		reg = j721e_pcie_intd_readl(pcie, STATUS_REG_SYS_0);
    +		printk("%s %d %x\n", __func__, __LINE__, reg);
    +		if (!(reg & INTx_EN(i)))
    +			continue;
    +
    +	virq = irq_find_mapping(pcie->legacy_irq_domain, 3 - i);
    +		generic_handle_irq(virq);
    +		j721e_pcie_intd_writel(pcie, STATUS_CLR_REG_SYS_0, INTx_EN(i));
    +		j721e_pcie_intd_writel(pcie, EOI_REG, 3 - i);
    +	}
    +
    +	chained_irq_exit(chip, desc);
    +}
    +
    +static int j721e_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
    +			       irq_hw_number_t hwirq)
    +{
    +	irq_set_chip_and_handler(irq, &dummy_irq_chip, handle_simple_irq);
    +	irq_set_chip_data(irq, domain->host_data);
    +
    +	return 0;
    +}
    +
    +static const struct irq_domain_ops j721e_pcie_intx_domain_ops = {
    +	.map = j721e_pcie_intx_map,
    +};
    +
    +static int j721e_pcie_config_legacy_irq(struct j721e_pcie *pcie)
    +{
    +	struct device *dev = pcie->dev;
    +	struct irq_domain *legacy_irq_domain;
    +	struct device_node *node = pcie->node;
    +	struct device_node *intc_node;
    +	int irq;
    +	int virq;
    +	u32 reg;
    +	int i;
    +
    +	intc_node = of_get_child_by_name(node, "legacy-interrupt-controller");
    +	if (!intc_node) {
    +		dev_WARN(dev, "legacy-interrupt-controller node is absent\n");
    +		return -EINVAL;
    +	}
    +
    +	irq = irq_of_parse_and_map(intc_node, 0);
    +	if (!irq) {
    +		dev_err(dev, "Failed to parse and map legacy irq\n");
    +		return -EINVAL;
    +	}
    +	irq_set_chained_handler_and_data(irq, j721e_pcie_legacy_irq_handler,
    +					 pcie);
    +
    +	legacy_irq_domain = irq_domain_add_linear(intc_node, PCI_NUM_INTX,
    +						  &j721e_pcie_intx_domain_ops,
    +						  NULL);
    +	if (!legacy_irq_domain) {
    +		dev_err(dev, "Failed to add irq domain for legacy irqs\n");
    +		return -EINVAL;
    +	}
    +	pcie->legacy_irq_domain = legacy_irq_domain;
    +
    +	for (i = 0; i < PCI_NUM_INTX; i++) {
    +		reg = j721e_pcie_intd_readl(pcie, ENABLE_REG_SYS_0);
    +		reg |= INTx_EN(i);
    +		j721e_pcie_intd_writel(pcie, ENABLE_REG_SYS_0, reg);
    +	}
    +
    +	return 0;
    +}
    +
     static int j721e_pcie_start_link(struct cdns_pcie_plat_data *data, bool start)
     {
     	struct j721e_pcie *pcie = to_j721e_pcie(data);
    @@ -362,6 +451,10 @@ static int j721e_pcie_probe(struct platform_device *pdev)
     			goto err_get_sync;
     		pcie->vmap_lp_base = base;
     
    +		ret = j721e_pcie_config_legacy_irq(pcie);
    +		if (ret < 0)
    +			goto err_get_sync;
    +
     		child_node = of_get_child_by_name(node, "pcie");
     		if (!child_node) {
     			dev_WARN(dev, "pcie-rc node is absent\n");
    -- 
    2.17.1
    

  • Hi Kishon,

    We tested the driver earlier, as mentioned, on Ubuntu 18.04.4 LTS PC with Kernel: 5.3.0-51-generic, driver worked as expected and we did not look further in to it.

    Now we checked on PC to see which interrupt mod driver is using in the end, because it tries MSI-X, MSI, Legacy respectively:

    [ 60.269996] xdma:enable_msi_msix: MSI/MSI-X not detected - using legacy interrupts
    [ 60.270001] xdma:irq_legacy_setup: Legacy Interrupt register value = 1

    You were right, we also checked with FPGA developers and MSI, MSI-X support is excluded from the Xilinx FPGA platform.

    In the course of next week we will flash new FPGA design with enabled MSI support and see if it works.

    We will try this before enabling  legacy interrupts on TDA4 to avoid possible issues you mentioned.

    I will let you know if it works or not.

    Thank you for your assistance.

    Uros

  • Hi Kishon,

    We flashed FPGA design with enabled MSI and now driver is working as intended.

    Thank you for your help.

    Regards,
    Uros

  • Thanks Kishon for the help. Thanks Uros for the update. 

    I will close the issue. 

    Jian