I am trying to boot a Linux kernel on an A53 cpu (inside a ZU5 from xilinx). I have two hard. The first is a custom PCB with a ZU5. The second is the ZCU102 SDK with the zu9eg.
Here the boot log :
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 5.15.19 (build_station) (aarch64-buildroot-linux-gnu-gcc.br_real (B3 [ 0.000000] Machine model: ZynqMP [ 0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8') [ 0.000000] printk: bootconsole [cdns0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] OF: fdt: Invalid device tree blob header [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000000000000-0x00000000ffffffff] [ 0.000000] Normal [mem 0x0000000100000000-0x000000087fffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x000000007fefffff] [ 0.000000] node 0: [mem 0x0000000800000000-0x000000087fffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff] [ 0.000000] On node 0, zone Normal: 256 pages in unavailable ranges [ 0.000000] cma: Reserved 256 MiB at 0x000000006fc00000 [ 0.000000] Failed to find device node for boot cpu [ 0.000000] missing boot CPU MPIDR, not enabling secondaries [ 0.000000] percpu: Embedded 17 pages/cpu s32600 r8192 d28840 u69632 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: detected: ARM erratum 845719 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 1033987 [ 0.000000] Kernel command line: earlycon clk_ignore_unused [ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear) [ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] software IO TLB: mapped [mem 0x000000006bc00000-0x000000006fc00000] (64MB) [ 0.000000] Memory: 3779764K/4193280K available (8448K kernel code, 692K rwdata, 2232K rodata, 1472K) [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1. [ 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=1 [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] random: get_random_bytes called from start_kernel+0x3f0/0x5fc with crng_init=0 [ 0.000000] timer_probe: no matching timers found [ 0.000000] Kernel panic - not syncing: Unable to initialise architected timer. [ 0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.15.19 #7 [ 0.000000] Hardware name: ZynqMP SL300 (DT) [ 0.000000] Call trace: [ 0.000000] dump_backtrace+0x0/0x190 [ 0.000000] show_stack+0x18/0x30 [ 0.000000] dump_stack_lvl+0x7c/0xa0 [ 0.000000] dump_stack+0x18/0x34 [ 0.000000] panic+0x14c/0x2f8 [ 0.000000] time_init+0x30/0x4c [ 0.000000] start_kernel+0x4fc/0x5fc [ 0.000000] __primary_switched+0xa4/0xac [ 0.000000] ---[ end Kernel panic - not syncing: Unable to initialise architected timer. ]--- The second hard :
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 5.15.19 (build_station) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2022.11-rc3-13-g43899226b2) 11.3.0, GNU ld (GNU Binutils) 2.38) #2 SMP Fri Dec 2 12:32:23 2 [ 0.000000] Machine model: ZynqMP [ 0.000000] efi: UEFI not found. [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000000000000-0x00000000ffffffff] [ 0.000000] Normal [mem 0x0000000100000000-0x000000087fffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x000000007fefffff] [ 0.000000] node 0: [mem 0x0000000800000000-0x000000087fffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff] [ 0.000000] On node 0, zone Normal: 256 pages in unavailable ranges [ 0.000000] cma: Reserved 256 MiB at 0x000000006b800000 [ 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: MIGRATE_INFO_TYPE not supported. [ 0.000000] psci: SMC Calling Convention v1.2 [ 0.000000] percpu: Embedded 18 pages/cpu s34456 r8192 d31080 u73728 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: detected: ARM erratum 845719 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 1033987 [ 0.000000] Kernel command line: console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait [ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear) [ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] software IO TLB: mapped [mem 0x000000007bf00000-0x000000007ff00000] (64MB) [ 0.000000] Memory: 3771452K/4193280K available (13952K kernel code, 912K rwdata, 3908K rodata, 2048K init, 336K bss, 159684K reserved, 262144K cma-reserved) [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. [ 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] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000 On the second hard the Linux boots and I managed to use the same device tree. I can see a difference : there is no psci detection with the first hard.
I need to know if it can be an hardware issue.
Kernel command line: earlycon clk_ignore_unused and Machine model: ZynqMP are from the device tree. So the device tree seems to be read ?
Thanks for help
EDIT : More log about the Invalid device tree blob header :
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 5.15.19 (test@build-station) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2022.11-rc3-13-g43899226b2) 11.3.0, GNU ld (GNU Binutils) 2.38) #12 SMP Mon Sep 11 12:45:03 [ 0.000000] OF: fdt: dt_root_size_cells = 2 [ 0.000000] OF: fdt: dt_root_addr_cells = 2 [ 0.000000] OF: fdt: search "chosen", depth: 0, uname: [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: cpus [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: cpu@0 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: cpu@1 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: idle-states [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: cpu-sleep-0 [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: cpu-opp-table [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: opp00 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: opp01 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: opp02 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: opp03 [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: zynqmp_ipi [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: mailbox@ff990400 [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: dcc [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: pmu [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: psci [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: firmware [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: zynqmp-firmware [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: pcap [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: zynqmp-power [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: reset-controller [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: pinctrl [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: clock-controller ... [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: aux_ref_clk [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: dp_aclk [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: amba_pl@0 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: axi_bram_ctrl@a0000000 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: dma@80000000 [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: dma-channel@80000000 [ 0.000000] OF: fdt: search "chosen", depth: 3, uname: dma-channel@80000030 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: puls4ic_sl300@80010000 [ 0.000000] OF: fdt: search "chosen", depth: 2, uname: system_management_wiz@80020000 [ 0.000000] OF: fdt: search "chosen", depth: 1, uname: chosen [ 0.000000] OF: fdt: Command line is: earlycon clk_ignore_unused loglevel=8 [ 0.000000] OF: fdt: memory scan node memory, reg size 32, [ 0.000000] OF: fdt: - 0, 7ff00000 [ 0.000000] OF: fdt: - 800000000, 80000000 [ 0.000000] OF: fdt: Looking for usable-memory-range property... [ 0.000000] Machine model: ZynqMP SL300 [ 0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8') [ 0.000000] printk: bootconsole [cdns0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] OF: fdt: -> unflatten_device_tree() [ 0.000000] OF: fdt: Unflattening device tree: [ 0.000000] OF: fdt: magic: 07074021 [ 0.000000] OF: fdt: size: 00006800 [ 0.000000] OF: fdt: version: 00006800 [ 0.000000] OF: fdt: Invalid device tree blob header : -9 The magic number should be 0xD00DFEED but I have 0x07074021 ? My boot commands from uboot :
fatload mmc 0:1 $kernel_addr_r Image.gz fatload mmc 0:1 $fdt_addr_r system.dtb booti $kernel_addr_r - $fdt_addr_r