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.

AM6421: Kernel panic on custom AM6421B board - NULL pointer dereference during R5F remoteproc boot

Part Number: AM6421
Other Parts Discussed in Thread: AM6422

Hardware : 

  • Target board: Custom AM6421B board

  • Base image source: AM6422 EVM Buildroot image (used as base for our custom board)

  • TI reference board: AM642 EVM

Tool Chain :

Buildroot: 2026.02

We are using a Buildroot image that was originally built for the AM6422 EVM (with DDR4 2GB) as our base. We are adapting it to run on our custom AM6421B board (with LPDDR4 512MB).

We created and are using a custom LPDDR4 dtsi for our board

  1. CPU1 fails to start (PSCI error -22) - system runs on single CPU

  2. M4F remoteproc (5000000.m4fss) boots successfully

  3. R5F remoteproc crashes during ti_sci_cmd_proc_set_config

  4. Kernel detects 524288 KB total memory (512MB) correctly

[    0.097707] psci: failed to boot CPU1 (-22)
[    0.102024] CPU1: failed to boot: -22
[    0.105884] smp: Brought up 1 node, 1 CPU

[    5.728007] remoteproc remoteproc1: powering up 78000000.r5f
[    5.740395] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 94056
[    5.773117] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000078
[    5.782189] pc : wq_worker_tick+0x14/0x100
[    5.782813] k3_r5_rproc_start+0x44/0x190 [ti_k3_r5_remoteproc]
[    5.783734] Kernel panic - not syncing: Oops: Fatal exception in interrupt

Attached the dts & patch files

files.zip

Boot logs :

U-Boot SPL 2026.01 (Jun 15 2026 - 15:34:48 +0530)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.5--v11.01.05 (Fancy Rat)')
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
Set clock rates for '/a53@0', CPU: 1000MHz at Speed Grade 'S'
SPL initial stack usage: 13552 bytes
Trying to boot from SPI
Authentication passed
Authentication passed
Loading Environment from nowhere... OK
Authentication passed
Authentication passed
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.14.0(release):76500ceaeefcda967d8a1f4e30bb04f9fe0425a2
NOTICE:  BL31: Built : 14:26:48, Jun 13 2026

U-Boot SPL 2026.01 (Jun 15 2026 - 14:58:57 +0530)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.5--v11.01.05 (Fancy Rat)')
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
Trying to boot from SPI
Authentication passed
Authentication passed


U-Boot 2026.01 (Jun 15 2026 - 14:58:57 +0530)

SoC:   AM64X SR2.0 HS-FS
Reset reason: RST
Model: Texas Instruments AM642 EVM
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
DRAM:  475 MiB (total 512 MiB)
Timed out in wait_for_bb: status=1000
Timed out in wait_for_bb: status=1000
Timed out in wait_for_bb: status=1000
pca953x gpio@22: Error reading output register
Core:  111 devices, 37 uclasses, devicetree: separate
MMC:   mmc@fa10000: 0, mmc@fa00000: 1
Loading Environment from nowhere... OK
In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
Net:   Could not get PHY for mdio@f00: addr 0
am65_cpsw_nuss_port ethernet@8000000port@1: phy_connect() failed

Warning: icssg1-eth-port@0 (eth2) using random MAC address - 9e:a9:85:bd:d4:28
eth2: icssg1-eth-port@0
Hit any key to stop autoboot:  0 
=> 
=> 
=> 
=> setenv bootargs 'console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mtdblock7 ro rootfstype=squashfs rootwait'
=> sf probe
SF: Detected w25q512jvfim with page size 256 Bytes, erase size 64 KiB, total 64 MiB
=> sf read ${loadaddr} 0x780000 0xA00000
device 0 offset 0x780000, size 0xa00000
SF: 10485760 bytes @ 0x780000 Read: OK
=> sf read ${fdtaddr} 0x1180000 0x40000
device 0 offset 0x1180000, size 0x40000
SF: 262144 bytes @ 0x1180000 Read: OK
=> unzip ${loadaddr} 0x90000000
Uncompressed size: 19065344 = 0x122EA00
=> booti 0x90000000 - ${fdtaddr} 
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
Working FDT set to 88000000
   Loading Device Tree to 000000009a949000, end 000000009a95c11c ... OK
Working FDT set to 9a949000

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 6.18.13 (sqm@2sqmx4q2) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2026.02) 14.3.0, GNU ld (GNU Binutils) 2.44) #4 SMP PREEMPT Mon Jun 15 12:46:33 IST 2026
[    0.000000] KASLR enabled
[    0.000000] Machine model: Texas Instruments AM642 EVM
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] printk: legacy bootconsole [ns16550a0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node memory@a0000000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a0000000..0x00000000a00fffff (1024 KiB) nomap non-reusable memory@a0000000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node memory@a0100000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a0100000..0x00000000a0ffffff (15360 KiB) nomap non-reusable memory@a0100000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node memory@a1000000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a1000000..0x00000000a10fffff (1024 KiB) nomap non-reusable memory@a1000000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node memory@a1100000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a1100000..0x00000000a1ffffff (15360 KiB) nomap non-reusable memory@a1100000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node memory@a2000000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a2000000..0x00000000a20fffff (1024 KiB) nomap non-reusable memory@a2000000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node memory@a2100000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a2100000..0x00000000a2ffffff (15360 KiB) nomap non-reusable memory@a2100000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node memory@a3000000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a3000000..0x00000000a30fffff (1024 KiB) nomap non-reusable memory@a3000000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node memory@a3100000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a3100000..0x00000000a3ffffff (15360 KiB) nomap non-reusable memory@a3100000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node memory@a4000000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a4000000..0x00000000a40fffff (1024 KiB) nomap non-reusable memory@a4000000
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node memory@a4100000, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a4100000..0x00000000a4ffffff (15360 KiB) nomap non-reusable memory@a4100000
[    0.000000] OF: reserved mem: 0x00000000a5000000..0x00000000a57fffff (8192 KiB) nomap non-reusable memory@a5000000
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x000000009fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
[    0.000000]   node   0: [mem 0x000000009e800000-0x000000009fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff]
[    0.000000] cma: Reserved 32 MiB at 0x000000009be00000
[    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.5
[    0.000000] percpu: Embedded 22 pages/cpu s51160 r8192 d30760 u90112
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: GICv3 CPU interface
[    0.000000] CPU features: kernel page table isolation forced ON by KASLR
[    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mtdblock7 ro rootfstype=squashfs rootwait
[    0.000000] printk: log buffer data + meta data: 131072 + 458752 = 589824 bytes
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 0MB
[    0.000000] software IO TLB: area num 2.
[    0.000000] software IO TLB: mapped [mem 0x000000009bd00000-0x000000009bd80000] (0MB)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 131072
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    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 event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=2.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] RCU Tasks: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[    0.000000] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_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: 256 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: GICv3 features: 16 PPIs
[    0.000000] GICv3: GICD_CTLR.DS=0, SCR_EL3.FIQ=1
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000080040000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080050000
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008855] Console: colour dummy device 80x25
[    0.013502] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
[    0.024184] pid_max: default: 32768 minimum: 301
[    0.029041] LSM: initializing lsm=capability,selinux
[    0.034193] SELinux:  Initializing.
[    0.038379] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.045860] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.056811] rcu: Hierarchical SRCU implementation.
[    0.061805] rcu: 	Max phase no-delay instances is 1000.
[    0.067456] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.076436] EFI services will not be available.
[    0.081448] smp: Bringing up secondary CPUs ...
ERROR:   Failed to get response (-19)
ERROR:   Transfer send failed (-19)
ERROR:   Request to start core failed: -19
[    0.097707] psci: failed to boot CPU1 (-22)
[    0.102024] CPU1: failed to boot: -22
[    0.105884] smp: Brought up 1 node, 1 CPU
[    0.110001] SMP: Total of 1 processors activated.
[    0.114828] CPU: All CPU(s) started at EL2
[    0.119033] CPU features: detected: 32-bit EL0 Support
[    0.124296] CPU features: detected: CRC32 instructions
[    0.129563] CPU features: detected: PMUv3
[    0.133714] alternatives: applying system-wide alternatives
[    0.140268] Memory: 430312K/524288K available (11840K kernel code, 1210K rwdata, 4080K rodata, 1344K init, 558K bss, 54924K reserved, 32768K cma-reserved)
[    0.155332] devtmpfs: initialized
[    0.170712] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.180788] posixtimers hash table entries: 1024 (order: 2, 16384 bytes, linear)
[    0.188404] futex hash table entries: 512 (32768 bytes on 1 NUMA nodes, total 32 KiB, linear).
[    0.198146] 2G module region forced by RANDOMIZE_MODULE_REGION_FULL
[    0.204701] 0 pages in range for non-PLT usage
[    0.204709] 519472 pages in range for PLT usage
[    0.209676] pinctrl core: initialized pinctrl subsystem
[    0.220468] DMI not present or invalid.
[    0.227207] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.234725] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.242520] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.251028] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.259228] audit: initializing netlink subsys (disabled)
[    0.265130] audit: type=2000 audit(0.156:1): state=initialized audit_enabled=0 res=1
[    0.273660] thermal_sys: Registered thermal governor 'step_wise'
[    0.273670] thermal_sys: Registered thermal governor 'power_allocator'
[    0.279903] cpuidle: using governor menu
[    0.290813] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.297806] ASID allocator initialised with 32768 entries
[    0.312115] /bus@f4000/interrupt-controller@1800000: Fixed dependency cycle(s) with /bus@f4000/interrupt-controller@1800000
[    0.337234] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.344261] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
[    0.350673] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
[    0.357611] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
[    0.364020] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.370958] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
[    0.377366] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
[    0.384303] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
[    0.392972] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
[    0.404736] iommu: Default domain type: Translated
[    0.409773] iommu: DMA domain TLB invalidation policy: strict mode
[    0.416570] SCSI subsystem initialized
[    0.420719] usbcore: registered new interface driver usbfs
[    0.426376] usbcore: registered new interface driver hub
[    0.431850] usbcore: registered new device driver usb
[    0.437706] pps_core: LinuxPPS API ver. 1 registered
[    0.442800] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.452152] PTP clock support registered
[    0.456203] EDAC MC: Ver: 3.0.0
[    0.460017] scmi_core: SCMI protocol bus registered
[    0.465556] FPGA manager framework
[    0.470822] clocksource: Switched to clocksource arch_sys_counter
[    0.486415] NET: Registered PF_INET protocol family
[    0.491774] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.500503] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.509141] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.517080] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.525037] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, linear)
[    0.532581] TCP: Hash tables configured (established 4096 bind 4096)
[    0.539233] UDP hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.546030] UDP-Lite hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.553469] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.561104] Initialise system trusted keyrings
[    0.566207] workingset: timestamp_bits=46 max_order=17 bucket_order=0
[    0.573327] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.649083] Key type asymmetric registered
[    0.653313] Asymmetric key parser 'x509' registered
[    0.658434] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[    0.666340] io scheduler mq-deadline registered
[    0.671021] io scheduler kyber registered
[    0.675176] io scheduler bfq registered
[    0.682416] pinctrl-single 4084000.pinctrl: 33 pins, size 132
[    0.689061] pinctrl-single f4000.pinctrl: 180 pins, size 720
[    0.697169] ledtrig-cpu: registered to indicate activity on CPUs
[    0.710226] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled
[    0.732608] loop: module loaded
[    0.742597] tun: Universal TUN/TAP device driver, 1.6
[    0.749368] VFIO - User Level meta-driver version: 0.3
[    0.756138] usbcore: registered new interface driver usb-storage
[    0.763171] i2c_dev: i2c /dev entries driver
[    0.768679] sdhci: Secure Digital Host Controller Interface driver
[    0.775106] sdhci: Copyright(c) Pierre Ossman
[    0.779963] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.786580] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    0.795314] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 (0,8000003f) counters available
[    0.805960] optee: probing for conduit method.
[    0.810631] optee: revision 4.9
[    0.811204] optee: dynamic shared memory is enabled
[    0.820570] random: crng init done
[    0.824348] optee: initialized driver
[    0.830111] Initializing XFRM netlink socket
[    0.834714] NET: Registered PF_PACKET protocol family
[    0.839959] Key type dns_resolver registered
[    0.853079] registered taskstats version 1
[    0.858090] Loading compiled-in X.509 certificates
[    0.879450] ti-sci 44043000.system-controller: ABI: 4.0 (firmware rev 0x000b '11.1.5--v11.01.05 (Fancy Rat)')
[    1.022027] pca953x 0-0038: supply vcc not found, using dummy regulator
[    1.029139] pca953x 0-0038: using no AI
[    1.046894] pca953x 0-0038: failed writing register: -121
[    1.052987] pca953x 0-0038: probe with driver pca953x failed with error -121
[    1.060728] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
[    1.068951] pca953x 1-0022: supply vcc not found, using dummy regulator
[    1.076058] pca953x 1-0022: using AI
[    2.086983] pca953x 1-0022: failed writing register: -16
[    2.092687] pca953x 1-0022: probe with driver pca953x failed with error -16
[    2.100571] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
[    2.106964] ti-sci-intr bus@f4000:interrupt-controller@a00000: Interrupt Router 3 domain created
[    2.116482] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
[    2.126142] ti-udma 485c0100.dma-controller: Number of rings: 68
[    2.134314] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
[    2.144978] ti-udma 485c0000.dma-controller: Number of rings: 288
[    2.164027] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
[    2.176022] printk: legacy console [ttyS2] disabled
[    2.181733] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 310, base_baud = 3000000) is a 8250
[    2.190702] printk: legacy console [ttyS2] enabled
[    2.190702] printk: legacy console [ttyS2] enabled
[    2.200479] printk: legacy bootconsole [ns16550a0] disabled
[    2.200479] printk: legacy bootconsole [ns16550a0] disabled
[    2.226322] spi-nor spi0.0: supply vcc not found, using dummy regulator
[    2.244472] 9 fixed-partitions partitions found on MTD device fc40000.spi.0
[    2.251549] Creating 9 MTD partitions on "fc40000.spi.0":
[    2.256979] 0x000000000000-0x000000100000 : "ospi.tiboot3"
[    2.264689] 0x000000100000-0x000000300000 : "ospi.tispl"
[    2.283242] 0x000000300000-0x000000700000 : "ospi.u-boot"
[    2.303252] 0x000000700000-0x000000740000 : "ospi.env"
[    2.311282] 0x000000740000-0x000000780000 : "ospi.env.backup"
[    2.331336] 0x000000780000-0x000001180000 : "ospi.kernel"
[    2.338688] 0x000001180000-0x0000011c0000 : "ospi.dtb"
[    2.359261] 0x0000011c0000-0x000003fc0000 : "ospi.rootfs"
[    2.366563] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
[    2.388675] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
[    2.401673] am65-cpsw-nuss 8000000.ethernet: RGMII mode without internal TX delay unsupported; please fix your Device Tree
[    2.412961] am65-cpsw-nuss 8000000.ethernet: RGMII mode without internal TX delay unsupported; please fix your Device Tree
[    2.424061] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
[    2.431103] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    2.470815] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    2.478726] mdio_bus 8000f00.mdio: MDIO device at address 0 is missing.
[    2.485582] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
[    2.492742] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512, Policers 32
[    2.501391] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
[    2.524821] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
[    2.539783] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
[    2.550475] mmc0: CQHCI version 5.10
[    2.571558] clk: Disabling unused clocks
[    2.598019] PM: genpd: Disabling unused power domains
[    2.603865] check access for rdinit=/init failed: -2, ignoring
[    2.609835] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
[    2.622033] VFS: Mounted root (squashfs filesystem) readonly on device 31:7.
[    2.632251] devtmpfs: mounted
[    2.636648] Freeing unused kernel memory: 1344K
[    2.641587] Run /sbin/init as init process
seedrng: can't create directory '/var/lib/seedrng': Read-only file system
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting udevd: OK
[    2.812352] mmc0: Failed to initialize a non-removable card
[    3.621389] udevd[93]: starting version 3.2.14
[    3.894135] udevd[93]: starting eudev-3.2.14
[    4.552577] at24 0-0050: supply vcc not found, using dummy regulator
[    4.640645] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
[    4.707156] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
[    4.750518] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
[    4.785022] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
[    4.886693] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
[    5.078050] k3-m4-rproc 5000000.m4fss: assigned reserved memory node memory@a4000000
[    5.112313] k3-m4-rproc 5000000.m4fss: configured M4F for remoteproc mode
[    5.141869] remoteproc remoteproc0: 5000000.m4fss is available
[    5.399238] remoteproc remoteproc0: powering up 5000000.m4fss
[    5.412245] remoteproc remoteproc0: Booting fw image am64-mcu-m4f0_0-fw, size 88248
[    5.435227] rproc-virtio rproc-virtio.0.auto: assigned reserved memory node memory@a4000000
[    5.455727] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
[    5.463481] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
[    5.474902] virtio_rpmsg_bus virtio0: rpmsg host is online
[    5.495063] rproc-virtio rproc-virtio.0.auto: registered virtio0 (type 7)
[    5.510010] davinci_mdio 300b2400.mdio: phy[15]: device 300b2400.mdio:0f, driver unknown
[    5.519444] remoteproc remoteproc0: remote processor 5000000.m4fss is now up
[    5.537760] platform 78000000.r5f: configured R5F for remoteproc mode
[    5.564923] k3_r5_rproc bus@f4000:r5fss@78000000: split-mode not permitted, force configuring for single-cpu mode
[    5.628651] platform 78000000.r5f: assigned reserved memory node memory@a0000000
[    5.664742] remoteproc remoteproc1: 78000000.r5f is available
[    5.728007] remoteproc remoteproc1: powering up 78000000.r5f
[    5.740395] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 94056
[    5.773117] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000078
[    5.781999] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
[    5.782008] Mem abort info:
[    5.782011]   ESR = 0x0000000096000004
[    5.782016]   EC = 0x25: DABT (current EL), IL = 32 bits
[    5.782021]   SET = 0, FnV = 0
[    5.782026]   EA = 0, S1PTW = 0
[    5.782030]   FSC = 0x04: level 0 translation fault
[    5.782035] Data abort info:
[    5.782038]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
[    5.782043]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[    5.782048]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[    5.782055] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000819db000
[    5.782062] [0000000000000020] pgd=0000000000000000, p4d=0000000000000000
[    5.782080] Internal error: Oops: 0000000096000004 [#1]  SMP
[    5.782088] Modules linked in: cdns3_ti phy_can_transceiver phy_j721e_wiz ti_k3_r5_remoteproc(+) rti_wdt ti_k3_m4_remoteproc ti_k3_common k3_j72xx_bandgap mux_ti_k3_event sa2ul sha1 omap_hwspinlock pruss omap_mailbox at24 spi_omap2_mcspi
[    5.782153] CPU: 0 UID: 0 PID: 9 Comm: kworker/0:0 Not tainted 6.18.13 #4 PREEMPT 
[    5.782165] Hardware name: Texas Instruments AM642 EVM (DT)
[    5.782180] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    5.782189] pc : wq_worker_tick+0x14/0x100
[    5.782214] lr : wq_worker_tick+0x14/0x100
[    5.782223] sp : ffff800080003de0
[    5.782227] x29: ffff800080003de0 x28: 000000014d7f5735 x27: ffff00001e685360
[    5.782241] x26: ffffa4007a51e810 x25: 0000000000000001 x24: 0000000000000000
[    5.782254] x23: ffff80008009b460 x22: ffff000000181100 x21: 0000000000000000
[    5.782267] x20: 0000000000000000 x19: ffff00001e68b040 x18: 0000000000000006
[    5.782280] x17: ffff5bffa3216000 x16: ffff800080000000 x15: 0000000000000000
[    5.782293] x14: 06312086019f1b7b x13: 0000000000000380 x12: 0000000006312086
[    5.782306] x11: 0000000000000001 x10: 0000000000000009 x9 : 000000001abbfefb
[    5.782318] x8 : 00000000d2a81d91 x7 : 000000000000b92f x6 : 00000000000024f5
[    5.782331] x5 : 0000000000000000 x4 : ffff5bffa3216000 x3 : ffff5bffa3216000
[    5.782343] x2 : ffffa4007b470f20 x1 : 0000000004208060 x0 : 0000000000000000
[    5.782358] Call trace:
[    5.782363]  wq_worker_tick+0x14/0x100 (P)
[    5.782378]  sched_tick+0x200/0x220
[    5.782394]  update_process_times+0xac/0xe0
[    5.782410]  tick_nohz_handler+0xbc/0x150
[    5.782424]  __hrtimer_run_queues+0x130/0x190
[    5.782437]  hrtimer_interrupt+0xec/0x260
[    5.782451]  arch_timer_handler_phys+0x34/0x50
[    5.782469]  handle_percpu_devid_irq+0x7c/0x120
[    5.782485]  handle_irq_desc+0x34/0x60
[    5.782496]  generic_handle_domain_irq+0x1c/0x30
[    5.782507]  gic_handle_irq+0x54/0xd0
[    5.782517]  call_on_irq_stack+0x30/0x48
[    5.782531]  do_interrupt_handler+0x80/0x8c
[    5.782544]  el1_interrupt+0x3c/0x60
[    5.782562]  el1h_64_irq_handler+0x18/0x30
[    5.782572]  el1h_64_irq+0x6c/0x70
[    5.782582]  console_flush_all+0x33c/0x400 (P)
[    5.782598]  console_unlock+0x7c/0x140
[    5.782611]  vprintk_emit+0x180/0x2c0
[    5.782624]  vprintk_default+0x38/0x50
[    5.782637]  vprintk+0x28/0x40
[    5.782645]  _printk+0x60/0x8c
[    5.782657]  die_kernel_fault+0x4c/0x4d8
[    5.782667]  __do_kernel_fault+0x188/0x190
[    5.782682]  do_page_fault+0x18c/0x740
[    5.782694]  do_translation_fault+0x5c/0x70
[    5.782706]  do_mem_abort+0x40/0x90
[    5.782717]  el1_abort+0x44/0x70
[    5.782730]  el1h_64_sync_handler+0x50/0xb0
[    5.782739]  el1h_64_sync+0x6c/0x70
[    5.782748]  wq_worker_sleeping+0x18/0xb0 (P)
[    5.782760]  schedule+0x104/0x110
[    5.782771]  schedule_timeout+0x8c/0x110
[    5.782786]  wait_for_completion_timeout+0x78/0x150
[    5.782797]  ti_sci_cmd_proc_set_config+0x18c/0x230
[    5.782813]  k3_r5_rproc_start+0x44/0x190 [ti_k3_r5_remoteproc]
[    5.782836]  rproc_start+0xc4/0x168
[    5.782846]  rproc_boot+0x514/0x530
[    5.782860]  rproc_auto_boot_callback+0x1c/0x40
[    5.782877] ------------[ cut here ]------------
[    5.782881] WARNING: CPU: 0 PID: 9 at arch/arm64/kernel/stacktrace.c:211 dump_backtrace.part.0+0x460/0x510
[    5.782896] Modules linked in: cdns3_ti phy_can_transceiver phy_j721e_wiz ti_k3_r5_remoteproc(+) rti_wdt ti_k3_m4_remoteproc ti_k3_common k3_j72xx_bandgap mux_ti_k3_event sa2ul sha1 omap_hwspinlock pruss omap_mailbox at24 spi_omap2_mcspi
[    5.782946] CPU: 0 UID: 0 PID: 9 Comm: kworker/0:0 Not tainted 6.18.13 #4 PREEMPT 
[    5.782955] Hardware name: Texas Instruments AM642 EVM (DT)
[    5.782964] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    5.782972] pc : dump_backtrace.part.0+0x460/0x510
[    5.782980] lr : dump_backtrace.part.0+0x43c/0x510
[    5.782988] sp : ffff8000800039c0
[    5.782992] x29: ffff800080003a80 x28: ffff000000181100 x27: ffff00001e685360
[    5.783006] x26: ffffa4007a51e810 x25: 0000000000000000 x24: ffffa4007a4839f4
[    5.783019] x23: ffffa4007b2680b0 x22: ffffa4007b2c19e8 x21: ffffa4007b297618
[    5.783032] x20: ffffa4007b297618 x19: ffff000000181100 x18: 00000000fffffffd
[    5.783045] x17: 72646461206c6175 x16: 0000000000000000 x15: ffff8000800032de
[    5.783058] x14: 0000000000000000 x13: ffff8001000032d5 x12: ffffa4007b521900
[    5.783071] x11: 0000000000000058 x10: 0000000000000018 x9 : ffffa4007b521900
[    5.783084] x8 : ffff000000181100 x7 : ffff80008009bd60 x6 : ffffa4007b579900
[    5.783097] x5 : ffff00001e6816c8 x4 : ffff80008009c000 x3 : ffff80008009bd78
[    5.783110] x2 : 0000000000000018 x1 : ffff80008009bd60 x0 : ffff000000181100
[    5.783123] Call trace:
[    5.783126]  dump_backtrace.part.0+0x460/0x510 (P)
[    5.783136]  dump_backtrace+0x24/0x30
[    5.783145]  show_regs+0x2c/0x40
[    5.783157]  die+0xa4/0x144
[    5.783166]  die_kernel_fault+0x4bc/0x4d8
[    5.783176]  __do_kernel_fault+0x188/0x190
[    5.783188]  do_page_fault+0x18c/0x740
[    5.783200]  do_translation_fault+0x5c/0x70
[    5.783212]  do_mem_abort+0x40/0x90
[    5.783223]  el1_abort+0x44/0x70
[    5.783236]  el1h_64_sync_handler+0x50/0xb0
[    5.783246]  el1h_64_sync+0x6c/0x70
[    5.783255]  wq_worker_tick+0x14/0x100 (P)
[    5.783266]  sched_tick+0x200/0x220
[    5.783278]  update_process_times+0xac/0xe0
[    5.783291]  tick_nohz_handler+0xbc/0x150
[    5.783302]  __hrtimer_run_queues+0x130/0x190
[    5.783315]  hrtimer_interrupt+0xec/0x260
[    5.783328]  arch_timer_handler_phys+0x34/0x50
[    5.783343]  handle_percpu_devid_irq+0x7c/0x120
[    5.783356]  handle_irq_desc+0x34/0x60
[    5.783366]  generic_handle_domain_irq+0x1c/0x30
[    5.783377]  gic_handle_irq+0x54/0xd0
[    5.783386]  call_on_irq_stack+0x30/0x48
[    5.783397]  do_interrupt_handler+0x80/0x8c
[    5.783410]  el1_interrupt+0x3c/0x60
[    5.783423]  el1h_64_irq_handler+0x18/0x30
[    5.783432]  el1h_64_irq+0x6c/0x70
[    5.783441]  console_flush_all+0x33c/0x400 (P)
[    5.783454]  console_unlock+0x7c/0x140
[    5.783467]  vprintk_emit+0x180/0x2c0
[    5.783480]  vprintk_default+0x38/0x50
[    5.783493]  vprintk+0x28/0x40
[    5.783501]  _printk+0x60/0x8c
[    5.783510]  die_kernel_fault+0x4c/0x4d8
[    5.783520]  __do_kernel_fault+0x188/0x190
[    5.783532]  do_page_fault+0x18c/0x740
[    5.783544]  do_translation_fault+0x5c/0x70
[    5.783556]  do_mem_abort+0x40/0x90
[    5.783567]  el1_abort+0x44/0x70
[    5.783580]  el1h_64_sync_handler+0x50/0xb0
[    5.783589]  el1h_64_sync+0x6c/0x70
[    5.783598]  wq_worker_sleeping+0x18/0xb0 (P)
[    5.783609]  schedule+0x104/0x110
[    5.783620]  schedule_timeout+0x8c/0x110
[    5.783633]  wait_for_completion_timeout+0x78/0x150
[    5.783644]  ti_sci_cmd_proc_set_config+0x18c/0x230
[    5.783657]  k3_r5_rproc_start+0x44/0x190 [ti_k3_r5_remoteproc]
[    5.783671]  rproc_start+0xc4/0x168
[    5.783681]  rproc_boot+0x514/0x530
[    5.783693]  rproc_auto_boot_callback+0x1c/0x40
[    5.783708] ---[ end trace 0000000000000000 ]---
[    5.783720] Code: a9bd7bfd 910003fd a90153f3 940020b4 (f9401014) 
[    5.783726] ---[ end trace 0000000000000000 ]---
[    5.783734] Kernel panic - not syncing: Oops: Fatal exception in interrupt
[    5.783744] Kernel Offset: 0x23fffa400000 from 0xffff800080000000
[    5.783750] PHYS_OFFSET: 0xfff1000080000000
[    5.783754] CPU features: 0x000000,00120000,40004001,0400420b
[    5.783761] Memory Limit: none
[    6.515332] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---

 Regard,
Manish.

  • Hi Manish,

    AM6422 is a dual A53 core variant. but AM6421B is a single core variant.

    CPU1 fails to start (PSCI error -22) - system runs on single CPU

    The ATF/PSCI firmware returned -19 (ENODEV) when trying to bring up CPU1.
    This almost certainly means the Device Tree still identifies the board as AM642 EVM rather than the custom AM6421B board.

    Try to remove the cpu@1 node (or the entire secondary CPU entry) so the kernel doesn't attempt to bring up a core that the AM6421B silicon doesn't have.

    --- a/arch/arm64/boot/dts/ti/k3-am642.dtsi
    +++ b/arch/arm64/boot/dts/ti/k3-am642.dtsi
    @@ -20,9 +20,6 @@ core0 {
                                            cpu = <&cpu0>;
                                    };
     
    -                               core1 {
    -                                       cpu = <&cpu1>;
    -                               };
                            };
                    };
     
    @@ -40,19 +37,6 @@ cpu0: cpu@0 {
                            next-level-cache = <&L2_0>;
                    };
     
    -               cpu1: cpu@1 {
    -                       compatible = "arm,cortex-a53";
    -                       reg = <0x001>;
    -                       device_type = "cpu";
    -                       enable-method = "psci";
    -                       i-cache-size = <0x8000>;
    -                       i-cache-line-size = <64>;
    -                       i-cache-sets = <256>;
    -                       d-cache-size = <0x8000>;
    -                       d-cache-line-size = <64>;
    -                       d-cache-sets = <128>;
    -                       next-level-cache = <&L2_0>;
    -               };
            };


    Regards,
    Vinu

  • Hi Vinu,

    We applied the patch you provided to remove CPU1 from the device tree, and the CPU1 boot error is now resolved. However, we are still facing issues while accessing the R5 core and M4 core during remoteproc initialization.

    Changes we have made:

    1. Reserved 37MB of RAM for U-Boot (CONFIG_SYS_MEM_TOP_HIDE=0x02500000) to avoid the U-Boot hang issue

    2. Tried to modify the reserved memory addresses in the device tree to fit within our 512MB RAM range

    Current status:

    • CPU1 error is gone

    • System partially boots but crashes when remoteproc tries to initialize

    • M4F core is still trying to use memory at 0xa4000000 (outside our 512MB RAM)

    • R5F core1 is still trying to use memory at 0xa2000000 (outside our 512MB RAM)

    Error logs

    [    4.990551] k3-m4-rproc 5000000.m4fss: assigned reserved memory node memory@a4000000
    [    5.341267] rproc-virtio rproc-virtio.0.auto: assigned reserved memory node memory@a4000000
    [    5.446642] platform 78400000.r5f: assigned reserved memory node memory@a2000000

    [    5.742818] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
    [    5.769222] Mem abort info:
    [    5.769222]   ESR = 0x0000000096000004
    [    5.769222]   EC = 0x25: DABT (current EL), IL = 32 bits
    [    5.769222]   SET = 0, FnV = 0
    [    5.769222]   EA = 0, S1PTW = 0
    [    5.769222]   FSC = 0x04: level 0 translation fault

    Please let us know:

    1. What is the correct way to update reserved memory addresses for all remoteproc devices (R5F, M4F, PRU) for 512MB LPDDR4?

    2. Are there any other device tree changes needed beyond updating memory addresses?

    3. Should we rebuild the R5F/M4F firmware for the new memory configuration?

    Boot logs :

    16062026.zip 

  • Hello,

    Yes, you need to make sure that the memory allocations in the MCU+ project linker.cmd file matches the memory allocation in your Linux devicetree file.

    Please refer to the AM64x multicore academy for more information about memory allocation:
    https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AfqqKhh3tdI5s3wpsXrWWw__AM64-ACADEMY__WI1KRXP__LATEST

    I would suggest reading through the multicore academy during your development - it will help you avoid a lot of potential issues that can arise when running multiple OSes on multiple cores.

    "Application Development on Remote Cores" is where a lot of customers like to start. It walks you through a lot of the concepts which are covered in depth elsewhere in the multicore academy:
    https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AfSHr0vWbFdGCnmoPeMXzg__AM64-ACADEMY__WI1KRXP__LATEST

    Regards,

    Nick

  • Hi, Nick

    Do we need to generate below files with our custom ddr  ??
    am64-main-r5f0_0-fw  am64-main-r5f1_1-fw  am64-main-r5f0_1-fw  am64-mcu-m4f0_0-fw am64-main-r5f1_0-fw

    Regards,
    Manish

  • Hello Manish,

    Are you even running firmware on these cores? If you are not using the core, then you should disable it in the Linux devicetree and free up the DDR allocation. For more information, refer to the multicore academy > Booting & disabling processor cores > methods to disable remote cores:
    https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__Af8fKrelrD3vCdWjTx7.ww__AM64-ACADEMY__WI1KRXP__LATEST

    If you are running code on the R5F & M4F cores, then yes, you need to regenerate your firmware binaries. Read through "Application Development on Remote Cores" in my previous response.

    Regards,

    Nick