Mainline U-Boot and Kernel restarts during boot

First of all, I’ve managed to install Gentoo on Radxa ZERO 3E. It was a rather simple install: separate boot and rootfs partitions, both with ext4, no initramfs, mainline kernel and u-boot, it was compiled using systemd-nspawn and qemu-aarch64 on another machine. While installing I was making notes about what, why and how, which gave me few pages of description how to build a system for this SBC, which should be more than less correct, unless something changed in one year.

Now, I’m trying to install Gentoo on a Radxa ROCK 5 ITX using my notes from ZERO, with some changes:

  • rootfs is on ZRAID1 ZFS on SATA SSDs,

  • initramfs (darcut),

  • GRUB,

  • build on the SBC, using Armbian.

Kernel is gentoo-sources-6.19.12 with defconfig, defconfig worked with ZERO, so I think it should allow to at least to boot. Grub-2.14 was successfully installed, but grub-mkconfig doesn’t work. Dracut-108, ZFS-2.4.1.

Building U-Boot:

cd /usr/src
git clone GitHub - u-boot/u-boot: "Das U-Boot" Source Tree · GitHub -b v2026.04 --depth=1
git clone GitHub - rockchip-linux/rkbin: Firmware and Tool Binarys · GitHub --depth=1
git clone GitHub - ARM-software/arm-trusted-firmware: Read-only mirror of Trusted Firmware-A · GitHub --depth=1
make -j8 -C arm-trusted-firmware CROSS_COMPILE=aarch64-none-elf- PLAT=rk3588
make -j8 -C u-boot rock-5-itx-rk3588_defconfig
make -j8 -C u-boot ROCKCHIP_TPL=/usr/src/rkbin/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.19.bin BL31=/usr/src/arm-trusted-firmware/build/rk3588/release/bl31/bl31.elf

Partition table on a SD card:

Model: Generic STORAGE DEVICE (scsi)
Disk /dev/sda: 121241600s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 64s 7167s 7104s idbloader.img
2 16384s 24575s 8192s u-boot.itb
3 32768s 2032768s 2000001s fat32 efi boot, esp
4 2033664s 3905535s 1871872s ext4 boot

I plug SD card in and start the machine, then I run Grub with:

load mmc 1:3 $kernel_addr_r /EFI/gentoo/grubaa64.efi ; load mmc 1:3 $fdt_addr_r u-boot.dtb ; bootefi $kernel_addr_r $fdt_addr_r

Device tree is from the u-boot. Then I load and run the kernel:

linux /kernel-6.19.12-gentoo
initrd /initramfs-6.19.12-gentoo.img
devicetree /rk3588-rock-5-itx-6.19.12.dtb
boot

Device tree is from the kernel. Then it boots for a few seconds and whole SBC restarts:

[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[ 0.000000] Linux version 6.19.12-gentoo (root@gentoo) (gcc (Gentoo 15.2.1_p20260214 p5) 15.2.1 20260214, GNU ld (Gentoo 2.46.0 p1) 2.46.0)
#1 SMP PREEMPT Sun Apr 12 17:15:32 CEST 2026
[ 0.000000] KASLR enabled
[ 0.000000] Machine model: Radxa ROCK 5 ITX
[ 0.000000] efi: EFI v2.11 by Das U-Boot
[ 0.000000] efi: RTPROP=0xecb92040 SMBIOS 3.0=0xedf5b000 INITRD=0xecb21040 RNG=0xecb20040 MEMRESERVE=0xecb1f040
[ 0.000000] random: crng init done
[ 0.000000] earlycon: uart0 at MMIO32 0x00000000feb50000 (options ‘1500000n8’)
[ 0.000000] printk: legacy bootconsole [uart0] enabled
[ 0.000000] OF: reserved mem: 0x000000000010f000..0x000000000010f0ff (0 KiB) nomap non-reusable shmem@10f000
[ 0.000000] NUMA: Faking a node at [mem 0x000000000010f000-0x00000007ffffffff]
[ 0.000000] NODE_DATA(0) allocated [mem 0x7fbfcb000-0x7fbfcd67f]
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x000000000010f000-0x00000000ffffffff]
[ 0.000000] DMA32 empty
[ 0.000000] Normal [mem 0x0000000100000000-0x00000007ffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x000000000010f000-0x000000000010ffff]
[ 0.000000] node 0: [mem 0x0000000000200000-0x00000000ec7fffff]
[ 0.000000] node 0: [mem 0x00000000ec800000-0x00000000ec800fff]
[ 0.000000] node 0: [mem 0x00000000ec801000-0x00000000ecb91fff]
[ 0.000000] node 0: [mem 0x00000000ecb92000-0x00000000ecb92fff]
[ 0.000000] node 0: [mem 0x00000000ecb93000-0x00000000ecb93fff]
[ 0.000000] node 0: [mem 0x00000000ecb94000-0x00000000ecbb5fff]
[ 0.000000] node 0: [mem 0x00000000ecbb6000-0x00000000edf5afff]
[ 0.000000] node 0: [mem 0x00000000edf5b000-0x00000000edf5bfff]
[ 0.000000] node 0: [mem 0x00000000edf5c000-0x00000000efeeffff]
[ 0.000000] node 0: [mem 0x00000000efef0000-0x00000000efefffff]
[ 0.000000] node 0: [mem 0x00000000eff00000-0x00000000efffffff]
[ 0.000000] node 0: [mem 0x0000000100000000-0x00000003fbffffff]
[ 0.000000] node 0: [mem 0x00000003fc500000-0x00000003ffefffff]
[ 0.000000] node 0: [mem 0x0000000400000000-0x00000007ffffffff]
[ 0.000000] Initmem setup node 0 [mem 0x000000000010f000-0x00000007ffffffff]
[ 0.000000] On node 0, zone DMA: 271 pages in unavailable ranges
[ 0.000000] On node 0, zone DMA: 240 pages in unavailable ranges
[ 0.000000] On node 0, zone Normal: 1280 pages in unavailable ranges
[ 0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[ 0.000000] cma: Reserved 32 MiB at 0x00000000ea800000
[ 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.5
[ 0.000000] percpu: Embedded 25 pages/cpu s63192 r8192 d31016 u102400
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: detected: GICv3 CPU interface
[ 0.000000] CPU features: detected: Virtualization Host Extensions
[ 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 errata 1165522, 1319367, or 1530923
[ 0.000000] alternatives: applying boot alternatives
[ 0.000000] Kernel command line: BOOT_IMAGE=/kernel-6.19.12-gentoo earlycon
[ 0.000000] printk: log buffer data + meta data: 131072 + 458752 = 589824 bytes
[ 0.000000] Dentry cache hash table entries: 4194304 (order: 13, 33554432 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[ 0.000000] software IO TLB: area num 8.
[ 0.000000] software IO TLB: mapped [mem 0x00000000e6800000-0x00000000ea800000] (64MB)
[ 0.000000] Fallback order for Node 0: 0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8321025
[ 0.000000] Policy zone: Normal
[ 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=8, 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=8.
[ 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=8
[ 0.000000] RCU Tasks: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[ 0.000000] RCU Tasks Trace: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] GIC: enabling workaround for GICv3: non-coherent attribute
[ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[ 0.000000] GICv3: 480 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] GICv3: MBI range [424:479]
[ 0.000000] GICv3: Using MBI frame 0x00000000fe610000
[ 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=0
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x00000000fe680000
[ 0.000000] ITS [mem 0xfe640000-0xfe65ffff]
[ 0.000000] GIC: enabling workaround for ITS: Rockchip erratum RK3588001
[ 0.000000] GIC: enabling workaround for ITS: non-coherent attribute
[ 0.000000] ITS@0x00000000fe640000: allocated 8192 Devices@3fc570000@3fc570000 (indirect, esz 8, psz 64K, shr 0)
[ 0.000000] ITS@0x00000000fe640000: allocated 32768 Interrupt Collections@3fc580000@3fc580000 (flat, esz 2, psz 64K, shr 0)
[ 0.000000] ITS: using cache flushing for cmd queue
[ 0.000000] ITS [mem 0xfe660000-0xfe67ffff]
[ 0.000000] GIC: enabling workaround for ITS: Rockchip erratum RK3588001
[ 0.000000] GIC: enabling workaround for ITS: non-coherent attribute
[ 0.000000] ITS@0x00000000fe660000: allocated 8192 Devices@3fc5b0000@3fc5b0000 (indirect, esz 8, psz 64K, shr 0)
[ 0.000000] ITS@0x00000000fe660000: allocated 32768 Interrupt Collections@3fc5c0000@3fc5c0000 (flat, esz 2, psz 64K, shr 0)
[ 0.000000] ITS: using cache flushing for cmd queue
[ 0.000000] GICv3: using LPI property table@0x00000003fc5d0000@0x00000003fc5d0000
[ 0.000000] GIC: using cache flushing for LPI property table
[ 0.000000] GICv3: CPU0: using allocated LPI pending table@0x00000003fc5e0000@0x00000003fc5e0000
[ 0.000000] GICv3: GIC: PPI partition interrupt-partition-0[0] { /cpus/cpu@0[0] /cpus/cpu@100[1] /cpus/cpu@200[2] /cpus/cpu@300[3] }
[ 0.000000] GICv3: GIC: PPI partition interrupt-partition-1[1] { /cpus/cpu@400[4] /cpus/cpu@500[5] /cpus/cpu@600[6] /cpus/cpu@700[7] }
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] arch_timer: cp15 timer running at 24.00MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[ 0.000001] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[ 0.005330] Console: colour dummy device 80x25
[ 0.005758] printk: legacy console [tty0] enabled
[ 0.006208] printk: legacy bootconsole [uart0] disabled
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[ 0.000000] Linux version 6.19.12-gentoo (root@gentoo) (gcc (Gentoo 15.2.1_p20260214 p5) 15.2.1 20260214, GNU ld (Gentoo 2.46.0 p1) 2.46.0)
#1 SMP PREEMPT Sun Apr 12 17:15:32 CEST 2026
[ 0.000000] KASLR enabled
[ 0.000000] Machine model: Radxa ROCK 5 ITX
[ 0.000000] efi: EFI v2.11 by Das U-Boot
[ 0.000000] efi: RTPROP=0xecb92040 SMBIOS 3.0=0xedf5b000 INITRD=0xecb21040 RNG=0xecb20040 MEMRESERVE=0xecb1f040
[ 0.000000] random: crng init done
[ 0.000000] earlycon: uart0 at MMIO32 0x00000000feb50000 (options ‘1500000n8’)
[ 0.000000] printk: legacy bootconsole [uart0] enabled
[ 0.000000] OF: reserved mem: 0x000000000010f000..0x000000000010f0ff (0 KiB) nomap non-reusable shmem@10f000
[ 0.000000] NUMA: Faking a node at [mem 0x000000000010f000-0x00000007ffffffff]
[ 0.000000] NODE_DATA(0) allocated [mem 0x7fbfcb000-0x7fbfcd67f]
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x000000000010f000-0x00000000ffffffff]
[ 0.000000] DMA32 empty
[ 0.000000] Normal [mem 0x0000000100000000-0x00000007ffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x000000000010f000-0x000000000010ffff]
[ 0.000000] node 0: [mem 0x0000000000200000-0x00000000ec7fffff]
[ 0.000000] node 0: [mem 0x00000000ec800000-0x00000000ec800fff]
[ 0.000000] node 0: [mem 0x00000000ec801000-0x00000000ecb91fff]
[ 0.000000] node 0: [mem 0x00000000ecb92000-0x00000000ecb92fff]
[ 0.000000] node 0: [mem 0x00000000ecb93000-0x00000000ecb93fff]
[ 0.000000] node 0: [mem 0x00000000ecb94000-0x00000000ecbb5fff]
[ 0.000000] node 0: [mem 0x00000000ecbb6000-0x00000000edf5afff]
[ 0.000000] node 0: [mem 0x00000000edf5b000-0x00000000edf5bfff]
[ 0.000000] node 0: [mem 0x00000000edf5c000-0x00000000efeeffff]
[ 0.000000] node 0: [mem 0x00000000efef0000-0x00000000efefffff]
[ 0.000000] node 0: [mem 0x00000000eff00000-0x00000000efffffff]
[ 0.000000] node 0: [mem 0x0000000100000000-0x00000003fbffffff]
[ 0.000000] node 0: [mem 0x00000003fc500000-0x00000003ffefffff]
[ 0.000000] node 0: [mem 0x0000000400000000-0x00000007ffffffff]
[ 0.000000] Initmem setup node 0 [mem 0x000000000010f000-0x00000007ffffffff]
[ 0.000000] On node 0, zone DMA: 271 pages in unavailable ranges
[ 0.000000] On node 0, zone DMA: 240 pages in unavailable ranges
[ 0.000000] On node 0, zone Normal: 1280 pages in unavailable ranges
[ 0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[ 0.000000] cma: Reserved 32 MiB at 0x00000000ea800000
[ 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.5
[ 0.000000] percpu: Embedded 25 pages/cpu s63192 r8192 d31016 u102400
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: detected: GICv3 CPU interface
[ 0.000000] CPU features: detected: Virtualization Host Extensions
[ 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 errata 1165522, 1319367, or 1530923
[ 0.000000] alternatives: applying boot alternatives
[ 0.000000] Kernel command line: BOOT_IMAGE=/kernel-6.19.12-gentoo earlycon
[ 0.000000] printk: log buffer data + meta data: 131072 + 458752 = 589824 bytes
[ 0.000000] Dentry cache hash table entries: 4194304 (order: 13, 33554432 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[ 0.000000] software IO TLB: area num 8.
[ 0.000000] software IO TLB: mapped [mem 0x00000000e6800000-0x00000000ea800000] (64MB)
[ 0.000000] Fallback order for Node 0: 0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8321025
[ 0.000000] Policy zone: Normal
[ 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=8, 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=8.
[ 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=8
[ 0.000000] RCU Tasks: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[ 0.000000] RCU Tasks Trace: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] GIC: enabling workaround for GICv3: non-coherent attribute
[ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[ 0.000000] GICv3: 480 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] GICv3: MBI range [424:479]
[ 0.000000] GICv3: Using MBI frame 0x00000000fe610000
[ 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=0
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x00000000fe680000
[ 0.000000] ITS [mem 0xfe640000-0xfe65ffff]
[ 0.000000] GIC: enabling workaround for ITS: Rockchip erratum RK3588001
[ 0.000000] GIC: enabling workaround for ITS: non-coherent attribute
[ 0.000000] ITS@0x00000000fe640000: allocated 8192 Device@3fc570000 @3fc570000 (indirect, esz 8, psz 64K, shr 0)
[ 0.000000] ITS@0x00000000fe640000: allocated 32768 Interrupt Collection@3fc580000 @3fc580000 (flat, esz 2, psz 64K, shr 0)
[ 0.000000] ITS: using cache flushing for cmd queue
[ 0.000000] ITS [mem 0xfe660000-0xfe67ffff]
[ 0.000000] GIC: enabling workaround for ITS: Rockchip erratum RK3588001
[ 0.000000] GIC: enabling workaround for ITS: non-coherent attribute
[ 0.000000] ITS@0x00000000fe660000: allocated 8192 Device@3fc5b0000 @3fc5b0000 (indirect, esz 8, psz 64K, shr 0)
[ 0.000000] ITS@0x00000000fe660000: allocated 32768 Interrupt Collection@3fc5c0000 @3fc5c0000 (flat, esz 2, psz 64K, shr 0)
[ 0.000000] ITS: using cache flushing for cmd queue
[ 0.000000] GICv3: using LPI property tabl@0x00000003fc5d0000 @0x00000003fc5d0000
[ 0.000000] GIC: using cache flushing for LPI property table
[ 0.000000] GICv3: CPU0: using allocated LPI pending tabl@0x00000003fc5e0000 @0x00000003fc5e0000
[ 0.000000] GICv3: GIC: PPI partition interrupt-partition-0[0] { /cpus/cpu@0[0] /cpus/cpu@100[1] /cpus/cpu@200[2] /cpus/cpu@300[3] }
[ 0.000000] GICv3: GIC: PPI partition interrupt-partition-1[1] { /cpus/cpu@400[4] /cpus/cpu@500[5] /cpus/cpu@600[6] /cpus/cpu@700[7] }
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.0
[ 1.529215] msm_serial: driver initialized
[ 1.530101] SuperH (H)SCI(F) driver initialized
[ 1.530820] STM32 USART driver initialized
[ 1.534389] arm-smmu-v3 fc900000.iommu: ias 48-bit, oas 48-bit (features 0x001c1eaf)
[ 1.535677] arm-smmu-v3 fc900000.iommu: allocated 65536 entries for cmdq
[ 1.536595] arm-smmu-v3 fc900000.iommu: allocated 32768 entries for evtq
[ 1.537609] arm-smmu-v3 fc900000.iommu: msi_domain absent - falling back to wired irqs
[ 1.539851] platform fdb50000.video-codec: Adding to iommu group 0
[ 1.541181] platform fdba0000.video-codec: Adding to iommu group 1
[ 1.542452] platform fdba4000.video-codec: Adding to iommu group 2
[ 1.543749] platform fdba8000.video-codec: Adding to iommu group 3
[ 1.545012] platform fdbac000.video-codec: Adding to iommu group 4
[ 1.546196] platform fdd90000.vop: Adding to iommu group 5
[ 1.551243] loop: module loaded
[ 1.552529] megasas: 07.734.00.00-rc1
[ 1.557614] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/regulators/dcdc-reg7
[ 1.558501] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/dvs3-null-pins
[ 1.559305] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/dvs2-null-pins
[ 1.560120] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/dvs1-null-pins
[ 1.563582] tun: Universal TUN/TAP device driver, 1.6
[ 1.565311] thunder_xcv, ver 1.0
[ 1.565623] thunder_bgx, ver 1.0
[ 1.565924] nicpf, ver 1.0
[ 1.567630] e1000: Intel(R) PRO/1000 Network Driver
[ 1.568074] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 1.568600] e1000e: Intel(R) PRO/1000 Network Driver
[ 1.569036] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 1.569572] igb: Intel(R) Gigabit Ethernet Network Driver
[ 1.570046] igb: Copyright (c) 2007-2014 Intel Corporation.
[ 1.570552] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[ 1.571102] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[ 1.572012] sky2: driver version 1.30
[ 1.573949] VFIO - User Level meta-driver version: 0.3
[ 1.579041] usbcore: registered new interface driver usb-storage
[ 1.583260] i2c_dev: i2c /dev entries driver
[ 1.587099] /i2s@fe470000: Fixed dependency cycle(s) with /i2c@fec90000/audio-codec@11
[ 1.587844] /i2c@fec90000/audio-codec@11: Fixed dependency cycle(s) with /i2s@fe470000
[ 1.589041] /i2c@feca0000/usb-typec@22/connector: Fixed dependency cycle(s) with /usb@fc000000
[ 1.589825] /i2c@feca0000/usb-typec@22/connector: Fixed dependency cycle(s) with /phy@fed80000
[ 1.598966] sdhci: Secure Digital Host Controller Interface driver
[ 1.599514] sdhci: Copyright(c) Pierre Ossman
[ 1.600985] Synopsys Designware Multimedia Card Interface Driver
[ 1.602850] sdhci-pltfm: SDHCI platform and OF driver helper
DDR 9fffbe1e78 cym 24/02/04-10:09:20,fwver: v1.16
LPDDR5, 2400MHz
channel[0] BW=16 Col=10 Bk=16 CS0 Row=17 CS1 Row=17 CS=2 Die BW=8 Size=8192MB
channel[1] BW=16 Col=10 Bk=16 CS0 Row=17 CS1 Row=17 CS=2 Die BW=8 Size=8192MB
channel[2] BW=16 Col=10 Bk=16 CS0 Row=17 CS1 Row=17 CS=2 Die BW=8 Size=8192MB
channel[3] BW=16 Col=10 Bk=16 CS0 Row=17 CS1 Row=17 CS=2 Die BW=8 Size=8192MB

I’ve tried specifying root= and rd.break hoping for Dracut rescue shell or at least kernel panic, but it is always restarts. Booting kernel straight from U-boot using bootefi gives same result. When I tried to boot kernel configured with make allyesconfig I got EFI stub: ERROR: Failed to locate PCI I/O handles. and board hangs instead of restarts.

You mention mainline config and ZFS. That contradicts. ZFS is not Linux. Also nothing is shown w.r.t. ZFS in the kernel log. I think this is a typical ZFS-Linux integrattion issue, is going on for a decade or so. You need to dig deeper if you want this.

I have used ZFS long time ago full custom kernel and patching, was SuSE Linux. Also just native FreeBSD, that is a lot easier as it works out-of-the-box. But is 10 years ago, I do not use RAID anymore, certainly not on a rootfs. All Btrfs now, works fine on RK3588, even standard Debian sid 16k pages kernel (6.19.11+deb14-arm64-16k).

.

1 Like

ZFS was build as a module into a initramfs. I also tried to boot without the initramfs and initramfs but without ZFS and same result.

I mentioned gentoo-sources kernel, this is kernel with few patches, but I also tried kernels from kernel.org, and again same result.

Only new idea/comments is that the ITX has extra SATA chip and there was a very nasty issue with power or signalling w.r.t. that. Is a year ago or so, should be fixed in recent kernel sources, see Armbian forum I think.

I use only 1 SATA and is the on-SoC mutli-PHY 1-lane that is normally for WiFi E-key cards. And EDK2 UEFI v1.1 firmware/bootloader where I put that as setting (persistent in SPI-flash). Is for ROCK5B by the way, using standard 4k pages (6.19.11+deb14-arm64).

Also means there is no latest U-Boot for me and no extra .dtb loaded. It just relies on the DT provided by the v1.1 firmware, which is about 1 year old now.

I was thinking about EDK2, but since Grub works I thought this might not be it. I’m thinking about trying it, but AFAIK Armbian doesn’t support UEFI. Wouldn’t installing EDK2 prevent me from booting Armbian from SD card?

If you have more than 1 bootloader for the system, then which one is used at power on and loading the OS? That is the question and I am not sure if it is all the same for the hundreds of SBC’s. I have 3 RK35xx based boards and all different. Look in the docs. Usually SD-card has priority I think.

Or make sure you have just 1 bootloader, then you are sure which one.

So in the phase you are now and knowing that this an ‘Intel PC’ like board, I would boot from SD-card, then write teh EDK2 UEFIv1.1 into SPI-flash, power-off, remove SD-card, power-on and hit ESC button. I works via HDMI+keyboard and also when only serial console cable is attached. Then in the menu select boot from file and browse to grubaa64.efi or bootaa64.efi. It assumed you have a standard EFI bootable setup on some storage, might be USB ISO OS installer.

Also learn yourself how to wipe just the U-Boot from an SD-card and also wipe SPI-flash. You now have multiple partitions for U-Boot, that is complex w.r.t. so why doe you doe this. U-Boot sits on a fixed sector offset between primary partition table and first partition. Use dd to write of wipe. Is also in the docs here on Radxa site for various boards. If you want Gentoo, ZFS, fist make sire you also understand the bootloader basics. Then the rest is all trivial.

1 Like

FWIW, mainline is working for me as expected:

dmesg, tuncated to 32000 char by forum constrains
********************************************************************************
ssd-006
Radxa ROCK 5 ITX
CPU 0-3: schedutil 1008 MHz - 1800 MHz
CPU 4-5: schedutil 1200 MHz - 2400 MHz
CPU 6-7: schedutil 1200 MHz - 2400 MHz
GPU: simple_ondemand 300 MHz - 1000 MHz
7.0.0-0.rc1.15.fc45.aarch64 #1 SMP PREEMPT_DYNAMIC Sat Feb 28 11:24:25 CET 2026
********************************************************************************
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[    0.000000] Linux version 7.0.0-0.rc1.15.fc45.aarch64 (root@ssd-006) (gcc (GCC) 16.0.1 20260209 (Red Hat 16.0.1-0), GNU ld version 2.46-1.fc45) #1 SMP PREEMPT_DYNAMIC Sat Feb 28 11:24:25 CET 2026
[    0.000000] KASLR enabled
[    0.000000] Machine model: Radxa ROCK 5 ITX
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000e2b80000, size 160 MiB
[    0.000000] OF: reserved mem: initialized node hdmi-receiver-cma, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000e2b80000..0x00000000ecb7ffff (163840 KiB) nomap non-reusable hdmi-receiver-cma
[    0.000000] OF: reserved mem: 0x000000000010f000..0x000000000010f0ff (0 KiB) nomap non-reusable shmem@10f000
[    0.000000] NUMA: Faking a node at [mem 0x0000000000200000-0x00000005ffffffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x5fce0e200-0x5fce24f7f]
[    0.000000] cma: Reserved 64 MiB at 0x00000000dea00000
[    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.5
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000200000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000100000000-0x00000005ffffffff]
[    0.000000]   Device   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000200000-0x00000000e2b7ffff]
[    0.000000]   node   0: [mem 0x00000000e2b80000-0x00000000ecb7ffff]
[    0.000000]   node   0: [mem 0x00000000ecb80000-0x00000000efffffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x00000003fbffffff]
[    0.000000]   node   0: [mem 0x00000003fc500000-0x00000003ffefffff]
[    0.000000]   node   0: [mem 0x0000000400000000-0x00000005ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000200000-0x00000005ffffffff]
[    0.000000] On node 0, zone DMA: 512 pages in unavailable ranges
[    0.000000] On node 0, zone Normal: 1280 pages in unavailable ranges
[    0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[    0.000000] percpu: Embedded 57 pages/cpu s107864 r8192 d117416 u233472
[    0.000000] pcpu-alloc: s107864 r8192 d117416 u233472 alloc=57*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 [0] 6 [0] 7 
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: GICv3 CPU interface
[    0.000000] CPU features: detected: Virtualization Host Extensions
[    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: Qualcomm erratum 1009, or ARM erratum 1286807, 2441009
[    0.000000] CPU features: detected: ARM errata 1165522, 1319367, or 1530923
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line: loglevel=4 root=PARTUUID=50000006-01 coherent_pool=2M selinux=0 audit=0 console=ttyS02,1500000 console=tty0 fbcon=nodefer rootwait rootfstype=ext4 raid=noautodetect
[    0.000000] audit: disabled (until reboot)
[    0.000000] printk: log buffer data + meta data: 262144 + 1114112 = 1376256 bytes
[    0.000000] Dentry cache hash table entries: 4194304 (order: 13, 33554432 bytes, linear)
[    0.000000] Inode-cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[    0.000000] software IO TLB: area num 8.
[    0.000000] software IO TLB: mapped [mem 0x00000000daa00000-0x00000000dea00000] (64MB)
[    0.000000] Fallback order for Node 0: 0 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 6223872
[    0.000000] Policy zone: Normal
[    0.000000] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] ftrace: allocating 78507 entries in 308 pages
[    0.000000] ftrace: allocated 308 pages with 4 groups
[    0.000000] Dynamic Preempt: full
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=4096 to nr_cpu_ids=8.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.000000] RCU Tasks: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[    0.000000] RCU Tasks Rude: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: enabling workaround for GICv3: non-coherent attribute
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 480 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: MBI range [424:479]
[    0.000000] GICv3: Using MBI frame 0x00000000fe610000
[    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=0
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x00000000fe680000
[    0.000000] ITS [mem 0xfe640000-0xfe65ffff]
[    0.000000] GIC: enabling workaround for ITS: Rockchip erratum RK3588001
[    0.000000] GIC: enabling workaround for ITS: non-coherent attribute
[    0.000000] ITS@0x00000000fe640000: allocated 8192 Devices @1002d0000 (indirect, esz 8, psz 64K, shr 0)
[    0.000000] ITS@0x00000000fe640000: allocated 32768 Interrupt Collections @1002e0000 (flat, esz 2, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] ITS [mem 0xfe660000-0xfe67ffff]
[    0.000000] GIC: enabling workaround for ITS: Rockchip erratum RK3588001
[    0.000000] GIC: enabling workaround for ITS: non-coherent attribute
[    0.000000] ITS@0x00000000fe660000: allocated 8192 Devices @100300000 (indirect, esz 8, psz 64K, shr 0)
[    0.000000] ITS@0x00000000fe660000: allocated 32768 Interrupt Collections @100310000 (flat, esz 2, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000100320000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000100330000
[    0.000000] GICv3: GIC: PPI partition interrupt-partition-0[0] { /cpus/cpu@0[0] /cpus/cpu@100[1] /cpus/cpu@200[2] /cpus/cpu@300[3] }
[    0.000000] GICv3: GIC: PPI partition interrupt-partition-1[1] { /cpus/cpu@400[4] /cpus/cpu@500[5] /cpus/cpu@600[6] /cpus/cpu@700[7] }
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[    0.000001] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.005891] kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[    0.006788] Console: colour dummy device 80x25
[    0.006808] printk: legacy console [tty0] enabled
[    0.008341] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=24000)
[    0.008366] pid_max: default: 32768 minimum: 301
[    0.016356] Yama: becoming mindful.
[    0.017060] LSM support for eBPF active
[    0.017172] landlock: Up and running.
[    0.019593] Mount-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.019689] Mountpoint-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.021823] VFS: Finished mounting rootfs on nullfs
[    0.033905] rcu: Hierarchical SRCU implementation.
[    0.033938] rcu: 	Max phase no-delay instances is 400.
[    0.034497] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.036635] fsl-mc MSI: msi-controller@fe640000 domain created
[    0.036668] fsl-mc MSI: msi-controller@fe660000 domain created
[    0.041185] EFI services will not be available.
[    0.042027] smp: Bringing up secondary CPUs ...
[    0.043045] Detected VIPT I-cache on CPU1
[    0.043369] GICv3: CPU1: found redistributor 100 region 0:0x00000000fe6a0000
[    0.043390] GICv3: CPU1: using allocated LPI pending table @0x0000000100340000
[    0.043453] CPU1: Booted secondary processor 0x0000000100 [0x412fd050]
[    0.044706] Detected VIPT I-cache on CPU2
[    0.045014] GICv3: CPU2: found redistributor 200 region 0:0x00000000fe6c0000
[    0.045032] GICv3: CPU2: using allocated LPI pending table @0x0000000100350000
[    0.045083] CPU2: Booted secondary processor 0x0000000200 [0x412fd050]
[    0.046197] Detected VIPT I-cache on CPU3
[    0.046501] GICv3: CPU3: found redistributor 300 region 0:0x00000000fe6e0000
[    0.046518] GICv3: CPU3: using allocated LPI pending table @0x0000000100360000
[    0.046568] CPU3: Booted secondary processor 0x0000000300 [0x412fd050]
[    0.047716] CPU features: detected: Spectre-v4
[    0.047725] CPU features: detected: Spectre-BHB
[    0.047731] CPU features: detected: SSBS not fully self-synchronizing
[    0.047734] Detected PIPT I-cache on CPU4
[    0.047869] GICv3: CPU4: found redistributor 400 region 0:0x00000000fe700000
[    0.047879] GICv3: CPU4: using allocated LPI pending table @0x0000000100370000
[    0.047908] CPU4: Booted secondary processor 0x0000000400 [0x414fd0b0]
[    0.049032] Detected PIPT I-cache on CPU5
[    0.049178] GICv3: CPU5: found redistributor 500 region 0:0x00000000fe720000
[    0.049189] GICv3: CPU5: using allocated LPI pending table @0x0000000100380000
[    0.049220] CPU5: Booted secondary processor 0x0000000500 [0x414fd0b0]
[    0.050403] Detected PIPT I-cache on CPU6
[    0.050546] GICv3: CPU6: found redistributor 600 region 0:0x00000000fe740000
[    0.050556] GICv3: CPU6: using allocated LPI pending table @0x0000000100390000
[    0.050587] CPU6: Booted secondary processor 0x0000000600 [0x414fd0b0]
[    0.051808] Detected PIPT I-cache on CPU7
[    0.051952] GICv3: CPU7: found redistributor 700 region 0:0x00000000fe760000
[    0.051962] GICv3: CPU7: using allocated LPI pending table @0x00000001003a0000
[    0.051993] CPU7: Booted secondary processor 0x0000000700 [0x414fd0b0]
[    0.052118] smp: Brought up 1 node, 8 CPUs
[    0.052172] SMP: Total of 8 processors activated.
[    0.052180] CPU: All CPU(s) started at EL2
[    0.052189] CPU features: detected: 32-bit EL0 Support
[    0.052198] CPU features: detected: Data cache clean to the PoU not required for I/D coherence
[    0.052208] CPU features: detected: Common not Private translations
[    0.052215] CPU features: detected: CRC32 instructions
[    0.052223] CPU features: detected: Data cache clean to Point of Persistence
[    0.052238] CPU features: detected: RCpc load-acquire (LDAPR)
[    0.052247] CPU features: detected: LSE atomic instructions
[    0.052255] CPU features: detected: Privileged Access Never
[    0.052262] CPU features: detected: PMUv3
[    0.052270] CPU features: detected: RAS Extension Support
[    0.052280] CPU features: detected: XNX
[    0.052291] CPU features: detected: Speculative Store Bypassing Safe (SSBS)
[    0.052394] alternatives: applying system-wide alternatives
[    0.058967] CPU features: detected: ICV_DIR_EL1 trapping
[    0.058984] CPU features: detected: Hardware dirty bit management on CPU4-7
[    0.059922] Memory: 24020964K/24895488K available (26368K kernel code, 6622K rwdata, 14256K rodata, 16640K init, 10330K bss, 796456K reserved, 65536K cma-reserved)
[    0.065750] devtmpfs: initialized
[    0.083288] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.083417] posixtimers hash table entries: 4096 (order: 4, 65536 bytes, linear)
[    0.083471] futex hash table entries: 2048 (131072 bytes on 1 NUMA nodes, total 128 KiB, linear).
[    0.083966] 2G module region forced by RANDOMIZE_MODULE_REGION_FULL
[    0.083975] 0 pages in range for non-PLT usage
[    0.083978] 505664 pages in range for PLT usage
[    0.088911] DMI not present or invalid.
[    0.092486] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.093627] DMA: preallocated 2048 KiB GFP_KERNEL pool for atomic allocations
[    0.094032] DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.096923] thermal_sys: Registered thermal governor 'fair_share'
[    0.096929] thermal_sys: Registered thermal governor 'step_wise'
[    0.096933] thermal_sys: Registered thermal governor 'user_space'
[    0.097010] cpuidle: using governor menu
[    0.097273] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.097439] ASID allocator initialised with 32768 entries
[    0.098523] Serial: AMBA PL011 UART driver
[    0.121443] /pcie@fe180000: Fixed dependency cycle(s) with /pcie@fe180000/legacy-interrupt-controller
[    0.121789] /pcie@fe190000: Fixed dependency cycle(s) with /pcie@fe190000/legacy-interrupt-controller
[    0.126528] /i2c@fec90000/audio-codec@11: Fixed dependency cycle(s) with /i2s@fe470000
[    0.126898] /i2c@feca0000/usb-typec@22/connector: Fixed dependency cycle(s) with /usb@fc000000
[    0.127483] /i2c@feca0000/usb-typec@22/connector: Fixed dependency cycle(s) with /phy@fed80000
[    0.127521] /usb@fc000000: Fixed dependency cycle(s) with /phy@fed80000
[    0.127550] /phy@fed80000: Fixed dependency cycle(s) with /i2c@feca0000/usb-typec@22/connector
[    0.131158] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.131877] rockchip-gpio fd8a0000.gpio: probed /pinctrl/gpio@fd8a0000
[    0.132493] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.132759] rockchip-gpio fec20000.gpio: probed /pinctrl/gpio@fec20000
[    0.132991] gpio gpiochip2: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.133138] rockchip-gpio fec30000.gpio: probed /pinctrl/gpio@fec30000
[    0.133405] gpio gpiochip3: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.133545] rockchip-gpio fec40000.gpio: probed /pinctrl/gpio@fec40000
[    0.133801] gpio gpiochip4: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.133953] rockchip-gpio fec50000.gpio: probed /pinctrl/gpio@fec50000
[    0.136540] /vop@fdd90000: Fixed dependency cycle(s) with /dp@fde60000
[    0.136577] /dp@fde60000: Fixed dependency cycle(s) with /vop@fdd90000
[    0.136984] /vop@fdd90000: Fixed dependency cycle(s) with /hdmi@fdea0000
[    0.137035] /hdmi@fdea0000: Fixed dependency cycle(s) with /vop@fdd90000
[    0.138066] /pcie@fe150000: Fixed dependency cycle(s) with /pcie@fe150000/legacy-interrupt-controller
[    0.138567] /pcie@fe160000: Fixed dependency cycle(s) with /pcie@fe160000/legacy-interrupt-controller
[    0.139036] /pcie@fe170000: Fixed dependency cycle(s) with /pcie@fe170000/legacy-interrupt-controller
[    0.140512] /dp@fde60000: Fixed dependency cycle(s) with /bridge
[    0.140550] /bridge: Fixed dependency cycle(s) with /dp@fde60000
[    0.140886] /bridge: Fixed dependency cycle(s) with /hdmi0-con
[    0.140937] /hdmi0-con: Fixed dependency cycle(s) with /bridge
[    0.141100] /hdmi@fdea0000: Fixed dependency cycle(s) with /hdmi1-con
[    0.141135] /hdmi1-con: Fixed dependency cycle(s) with /hdmi@fdea0000
[    0.150841] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.150848] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
[    0.150854] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
[    0.150857] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
[    0.150861] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.150865] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
[    0.150869] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
[    0.150872] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
[    0.161846] raid6: skipped pq benchmark and selected neonx8
[    0.161853] raid6: using neon recovery algorithm
[    0.163118] ACPI: Interpreter disabled.
[    0.165792] iommu: Default domain type: Translated
[    0.165799] iommu: DMA domain TLB invalidation policy: lazy mode
[    0.168022] SCSI subsystem initialized
[    0.168201] libata version 3.00 loaded.
[    0.168352] usbcore: registered new interface driver usbfs
[    0.168391] usbcore: registered new interface driver hub
[    0.168411] usbcore: registered new device driver usb
[    0.168818] pps_core: LinuxPPS API ver. 1 registered
[    0.168822] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[    0.168830] PTP clock support registered
[    0.169125] EDAC MC: Ver: 3.0.0
[    0.169381] scmi_core: SCMI protocol bus registered
[    0.171070] NetLabel: Initializing
[    0.171075] NetLabel:  domain hash size = 128
[    0.171079] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.171150] NetLabel:  unlabeled traffic allowed by default
[    0.171162] mctp: management component transport protocol core
[    0.171166] NET: Registered PF_MCTP protocol family
[    0.171488] vgaarb: loaded
[    0.171889] clocksource: Switched to clocksource arch_sys_counter
[    0.174563] VFS: Disk quotas dquot_6.6.0
[    0.174727] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.175198] pnp: PnP ACPI: disabled
[    0.184271] NET: Registered PF_INET protocol family
[    0.184662] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.195385] tcp_listen_portaddr_hash hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    0.195659] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.196211] TCP established hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.198398] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[    0.200295] TCP: Hash tables configured (established 262144 bind 65536)
[    0.200738] MPTCP token hash table entries: 32768 (order: 8, 786432 bytes, linear)
[    0.201180] UDP hash table entries: 16384 (order: 8, 1048576 bytes, linear)
[    0.202504] UDP-Lite hash table entries: 16384 (order: 8, 1048576 bytes, linear)
[    0.204419] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.204459] NET: Registered PF_XDP protocol family
[    0.204579] PCI: CLS 0 bytes, default 64
[    0.204606] ARM FF-A: FFA_VERSION returned not supported
[    0.208821] kvm [1]: nv: 570 coarse grained trap handlers
[    0.208969] kvm [1]: nv: 664 fine grained trap handlers
[    0.209248] kvm [1]: IPA Size Limit: 40 bits
[    0.209282] kvm [1]: GICv3: no GICV resource entry
[    0.209287] kvm [1]: disabling GICv2 emulation
[    0.209317] kvm [1]: GIC system register CPU interface enabled
[    0.209333] kvm [1]: vgic interrupt IRQ9
[    0.209365] kvm [1]: VHE mode initialized successfully
[    0.211640] Initialise system trusted keyrings
[    0.211707] Key type blacklist registered
[    0.211941] workingset: timestamp_bits=37 max_order=23 bucket_order=0
[    0.225076] integrity: Platform Keyring initialized
[    0.225094] integrity: Machine keyring initialized
[    0.225428] cryptd: max_cpu_qlen set to 1000
[    0.267477] NET: Registered PF_ALG protocol family
[    0.267551] xor: measuring software checksum speed
[    0.268075]    8regs           :  6298 MB/sec
[    0.268626]    32regs          :  6012 MB/sec
[    0.269083]    arm64_neon      :  7238 MB/sec
[    0.269087] xor: using function: arm64_neon (7238 MB/sec)
[    0.269095] Key type asymmetric registered
[    0.269098] Asymmetric key parser 'x509' registered
[    0.270810] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 240)
[    0.271042] io scheduler mq-deadline registered
[    0.271048] io scheduler kyber registered
[    0.271324] io scheduler bfq registered
[    0.272798] atomic64_test: passed
[    0.292642] ledtrig-cpu: registered to indicate activity on CPUs
[    0.306621] dma-pl330 fea10000.dma-controller: Loaded driver for PL330 DMAC-241330
[    0.306631] dma-pl330 fea10000.dma-controller: 	DBUFF-128x8bytes Num_Chans-8 Num_Peri-32 Num_Events-16
[    0.307632] dma-pl330 fea30000.dma-controller: Loaded driver for PL330 DMAC-241330
[    0.307639] dma-pl330 fea30000.dma-controller: 	DBUFF-128x8bytes Num_Chans-8 Num_Peri-32 Num_Events-16
[    0.308613] dma-pl330 fed10000.dma-controller: Loaded driver for PL330 DMAC-241330
[    0.308620] dma-pl330 fed10000.dma-controller: 	DBUFF-128x8bytes Num_Chans-8 Num_Peri-32 Num_Events-16
[    0.316432] Serial: 8250/16550 driver, 6 ports, IRQ sharing enabled
[    0.318761] printk: legacy console [ttyS2] disabled
[    0.318987] feb50000.serial: ttyS2 at MMIO 0xfeb50000 (irq = 31, base_baud = 1500000) is a 16550A
[    0.319035] printk: legacy console [ttyS2] enabled
[    0.319990] feb90000.serial: ttyS0 at MMIO 0xfeb90000 (irq = 32, base_baud = 1500000) is a 16550A
[    0.322153] msm_serial: driver initialized
[    0.322629] SuperH (H)SCI(F) driver initialized
[    0.325492] arm-smmu-v3 fc900000.iommu: oas 48-bit (features 0x001c1ebf)
[    0.326208] arm-smmu-v3 fc900000.iommu: allocated 65536 entries for cmdq
[    0.326713] arm-smmu-v3 fc900000.iommu: allocated 32768 entries for evtq
[    0.327329] arm-smmu-v3 fc900000.iommu: allocated 65536 entries for priq
[    0.327807] arm-smmu-v3 fc900000.iommu: msi_domain absent - falling back to wired irqs
[    0.329767] platform fdb50000.video-codec: Adding to iommu group 0
[    0.330693] platform fdba0000.video-codec: Adding to iommu group 1
[    0.331547] platform fdba4000.video-codec: Adding to iommu group 2
[    0.332413] platform fdba8000.video-codec: Adding to iommu group 3
[    0.333265] platform fdbac000.video-codec: Adding to iommu group 4
[    0.334133] platform fdbb0000.iep: Adding to iommu group 5
[    0.335017] platform fdc38100.video-codec: Adding to iommu group 6
[    0.335775] platform fdc40100.video-codec: Adding to iommu group 7
[    0.336490] platform fdd90000.vop: Adding to iommu group 8
[    0.337696] platform fdc70000.video-codec: Adding to iommu group 9
[    0.348391] Key type psk registered
[    0.351307] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/regulators/dcdc-reg7
[    0.351352] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/dvs3-null-pins
[    0.351362] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/dvs2-null-pins
[    0.351371] /spi@feb20000/pmic@0: Fixed dependency cycle(s) with /spi@feb20000/pmic@0/dvs1-null-pins
[    0.352469] CAN device driver interface
[    0.370468] usbcore: registered new interface driver uas
[    0.370496] usbcore: registered new interface driver usb-storage
[    0.370592] usbcore: registered new interface driver usbserial_generic
[    0.370628] usbserial: USB Serial support registered for generic
[    0.370657] usbcore: registered new device driver onboard-usb-dev
[    0.371564] mousedev: PS/2 mouse device common for all mice
[    0.373925] rockchip-pm-domain fd8d8000.power-management:power-controller: Failed to create device link (0x180) with supplier 1-0042 for /power-management@fd8d8000/power-controller/power-domain@8
[    0.383391] rtc-hym8563 6-0051: registered as rtc0
[    0.384418] rtc-hym8563 6-0051: setting system clock to 2026-03-14T17:26:43 UTC (1773509203)
[    0.384739] /i2s@fe470000: Fixed dependency cycle(s) with /i2c@fec90000/audio-codec@11
[    0.384795] /i2c@fec90000/audio-codec@11: Fixed dependency cycle(s) with /i2s@fe470000
[    0.391397] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[    0.391468] device-mapper: uevent: version 1.0.3
[    0.392015] device-mapper: ioctl: 4.50.0-ioctl (2025-04-28) initialised: [email protected]
[    0.394652] sdhci: Secure Digital Host Controller Interface driver
[    0.394659] sdhci: Copyright(c) Pierre Ossman
[    0.394663] Synopsys Designware Multimedia Card Interface Driver
[    0.395328] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.398382] mmc0: CQHCI version 5.10
[    0.431677] mmc0: SDHCI controller on fe2e0000.mmc [fe2e0000.mmc] using ADMA
[    0.432992] arm-scmi arm-scmi.1.auto: Using scmi_smc_transport
[    0.433003] arm-scmi arm-scmi.1.auto: SCMI max-rx-timeout: 30ms / max-msg-size: 104bytes / max-msg: 20
[    0.433121] scmi_protocol scmi_dev.1: Enabled polling mode TX channel - prot_id:16
[    0.433315] arm-scmi arm-scmi.1.auto: SCMI Notifications - Core Enabled.
[    0.433361] arm-scmi arm-scmi.1.auto: SCMI Protocol v2.0 'rockchip:' Firmware version 0x0
[    0.433410] arm-scmi arm-scmi.1.auto: Enabling SCMI Quirk [quirk_clock_rates_triplet_out_of_spec]
[    0.435156] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    0.436326] hid: raw HID events driver (C) Jiri Kosina
[    0.436446] usbcore: registered new interface driver usbhid
[    0.436451] usbhid: USB HID core driver
[    0.439581] hw perfevents: enabled with armv8_cortex_a55 PMU driver, 7 (0,8000003f) counters available
[    0.440696] hw perfevents: enabled with armv8_cortex_a76 PMU driver, 7 (0,8000003f) counters available
[    0.441653] watchdog: NMI not fully supported
[    0.441658] watchdog: Hard watchdog permanently disabled
[    0.445129] drop_monitor: Initializing network drop monitor service
[    0.445331] Initializing XFRM netlink socket
[    0.446142] NET: Registered PF_INET6 protocol family
[    0.448127] Segment Routing with IPv6
[    0.448133] RPL Segment Routing with IPv6
[    0.448162] In-situ OAM (IOAM) with IPv6
[    0.448207] mip6: Mobile IPv6
[    0.448215] NET: Registered PF_PACKET protocol family
[    0.448220] can: controller area network core
[    0.448472] NET: Registered PF_CAN protocol family
[    0.457223] registered taskstats version 1
[    0.459369] Loading compiled-in X.509 certificates
[    0.465893] Loaded X.509 cert 'Fedora kernel signing key: 17613657d288d5502f1be46aa5736352a7592db2'
[    0.483576] sdhci-dwcmshc fe2e0000.mmc: Can't reduce the clock below 52MHz in HS200/HS400 mode
[    0.485555] mmc0: Command Queue Engine enabled
[    0.485592] mmc0: new HS400 Enhanced strobe MMC card at address 0001
[    0.487155] mmcblk0: mmc0:0001 8GTF4R 7.28 GiB
[    0.493570] mmcblk0boot0: mmc0:0001 8GTF4R 4.00 MiB
[    0.496236] mmcblk0boot1: mmc0:0001 8GTF4R 4.00 MiB
[    0.498961] mmcblk0rpmb: mmc0:0001 8GTF4R 512 KiB, chardev (505:0)
[    0.545549] Loaded X.509 cert 'Fedora IMA CA: a8a00c31663f853f9c6ff2564872e378af026b28'
[    0.562775] Demotion targets for Node 0: null
[    0.562808] page_owner is disabled
[    0.563121] Key type .fscrypt registered
[    0.563127] Key type fscrypt-provisioning registered
[    0.568271] Btrfs loaded, zoned=yes, fsverity=yes
[    0.568362] Key type big_key registered
[    0.569552] Key type encrypted registered
[    0.569564] ima: No TPM chip found, activating TPM-bypass!
[    0.569581] Loading compiled-in module X.509 certificates
[    0.571441] Loaded X.509 cert 'Fedora kernel signing key: 17613657d288d5502f1be46aa5736352a7592db2'
[    0.572087] ima: Allocated hash algorithm: sha256
[    0.573023] ima: No architecture policies found
[    0.573082] evm: Initialising EVM extended attributes:
[    0.573086] evm: security.selinux
[    0.573090] evm: security.SMACK64 (disabled)
[    0.573094] evm: security.SMACK64EXEC (disabled)
[    0.573097] evm: security.SMACK64TRANSMUTE (disabled)
[    0.573101] evm: security.SMACK64MMAP (disabled)
[    0.573104] evm: security.apparmor (disabled)
[    0.573108] evm: security.ima
[    0.573111] evm: security.capability
[    0.573115] evm: HMAC attrs: 0x1
[    0.577861] alg: No test for 842 (842-scomp)
[    0.623995] random: crng init done
[    0.626322] rockchip-drm display-subsystem: bound fdd90000.vop (ops vop2_component_ops)
[    0.627090] rockchip-drm display-subsystem: bound fde60000.dp (ops dw_dp_rockchip_component_ops)
[    0.627468] dwhdmiqp-rockchip fdea0000.hdmi: registered DesignWare HDMI QP I2C bus driver
[    0.627991] Registered IR keymap rc-cec
[    0.628065] rc rc0: fdea0000.hdmi as /devices/platform/fdea0000.hdmi/rc/rc0
[    0.628164] input: fdea0000.hdmi as /devices/platform/fdea0000.hdmi/rc/rc0/input0
[    0.628609] rockchip-drm display-subsystem: bound fdea0000.hdmi (ops dw_hdmi_qp_rockchip_ops)
[    0.633445] [drm] Initialized rockchip 1.0.0 for display-subsystem on minor 0
[    0.855961] rockchip-drm display-subsystem: [drm] HDMI VSI not supported
[    0.924943] Console: switching to colour frame buffer device 480x135
[    0.970657] rockchip-drm display-subsystem: [drm] fb0: rockchipdrmfb frame buffer device
[    1.011971] rockchip-pm-domain fd8d8000.power-management:power-controller: Failed to create device link (0x180) with supplier spi2.0 for /power-management@fd8d8000/power-controller/power-domain@12
[    1.031318] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
[    1.031715] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 1
[    1.031896] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220fe64 hci version 0x110 quirks 0x0000808002000010
[    1.031934] xhci-hcd xhci-hcd.6.auto: irq 79, io mem 0xfc400000
[    1.032046] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
[    1.032325] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 2
[    1.032335] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
[    1.032475] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 7.00
[    1.032483] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.032489] usb usb1: Product: xHCI Host Controller
[    1.032493] usb usb1: Manufacturer: Linux 7.0.0-0.rc1.15.fc45.aarch64 xhci-hcd
[    1.032498] usb usb1: SerialNumber: xhci-hcd.6.auto
[    1.033151] hub 1-0:1.0: USB hub found
[    1.033202] hub 1-0:1.0: 1 port detected
[    1.035114] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    1.035194] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 7.00
[    1.035202] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.035208] usb usb2: Product: xHCI Host Controller



I’m running firmware with U-Boot as payload on all my various devices. This way I’m able to run the same OS of my choice on all my aarch64 devices.
I prefer SPI flash as firmware location, since that way I have just to flip my USB NVME enclosure around to use a different device. If no SPI flash is available, I use a microSD card as storage location because this is the most convenient way to manipulate the firmware setup.
The ROCK-5-ITX has unfortunately no way to enforce a different boot device (e.g. microSD card).
The only way to use firmware without first deleting the existing firmware on higher-priority boot devices is the MASK ROM mode and booting from RAM.
Unfortunately, this complicates a previous test of another firmware that might be used.

I flashed EDK2 into SPI and now it is working, I can use Grub over serial and it boots without an issue. I was afraid of bricking the system and unable to fix it without desoldering chips, but rkdeveloptools looks like something bullet proof. I can’t boot ROOBI any more, but I can boot Armbian when I swap SD card, which is nice, but I’m don’t know why.

According to 10th page of schematic, boot order is FSPI_M2-FSPI_M1-FSPI_M0-EMMC-SD Card-USB, which I believe means:

  • SPI flash (now with EDK2),
  • EMMC (with ROOBI),
  • SD Card (Gentoo/Armbian in my case),
  • USB (rkdeveloptools).

When I plug in SD card with Gentoo, it runs EDK2 from SPI and it runs Grub and then Gentoo, that makes sense to me. But when I plug in SD card with Armbian it skips EDK2 and boots Armbian, which I don’t understand.

Also, I can boot Gentoo without loading devicetree in Grub, is a devicetree embedded into EDK2?

That is the priority list of the MASK ROM code. Wherever a firmware signature is first found in this sequence, this boot device is selected. The firmware in the boot device is transferred into RAM and the execution control is handed over to it. How the boot process continues is entirely dependent on what the respective firmware implements.
As can be seen from the schematic, only the MASK ROM mode can be selected as an alternative. That is, if a boot device further back in the list is to be used, it must be ensured that there is no valid firmware in any other boot device earlier in the list.
So one cannot switch reversibly between alternative firmware on different boot devices. Hopefully one has a suitable backup ready when testing new firmware and it turns out to be unusable.

yes, if you have configured ‘DeviceTree‘ in the setup. See EDK2 docs/readme on github. Also ACPI is possible or a mix.