u-boot=> fatload mmc 1:1 0x90000000 bootstrap.uimage 42293824 bytes read in 440 ms (91.7 MiB/s) u-boot=> fatload mmc 1:1 0x94000000 imx95-19x19-verdin.dtb 97421 bytes read in 1 ms (92.9 MiB/s) u-boot=> bootm 0x90000000 - 0x94000000 ## Booting kernel from Legacy Image at 90000000 ... Image Name: L4Re Image @ Tue Jan 13 09:06:1 Created: 2026-01-13 3:36:16 UTC Image Type: AArch64 Linux Kernel Image (uncompressed) Data Size: 42293760 Bytes = 40.3 MiB Load Address: 91200000 Entry Point: 91200000 Verifying Checksum ... OK ## Flattened Device Tree blob at 94000000 Booting using the fdt blob at 0x94000000 Working FDT set to 94000000 Loading Kernel Image to 91200000 Using Device Tree in place at 0000000094000000, end 000000009401ac8c Working FDT set to 94000000 Starting kernel ... L4 Bootstrapper Compiled with: GCC (12.2.1 20221205) Bootstrap build info: 2026-01-13 09:06:14 IST+0530 L4Image creation info: 2026-01-15 10:01:25 IST+0530 L4Image sequence info: #110 RAM: 0000000090000000 - 00000000ffffffff: 1.7 GiB RAM: 0000000100000000 - 000000047fffffff: 14.0 GiB Total RAM: 15.7 GiB Scanning fiasco -serial_esc Scanning sigma0 Scanning moe rom/yocto-vm.cfg Moving up to 13 modules behind 91300000 Using 'modaddr 0x1000000' in modules.list might prevent moving modules. moving module 12 { 9189e000-93a559ff } -> { 91985000-93b3c9ff } [33.7 MiB] moving module 11 { 9189d000-9189d8ef } -> { 91984000-919848ef } [2.2 KiB] moving module 10 { 9189c000-9189c08d } -> { 91983000-9198308d } [0.1 KiB] moving module 09 { 9189b000-9189bb30 } -> { 91982000-91982b30 } [2.7 KiB] moving module 08 { 91768000-9189a36f } -> { 9184f000-9198136f } [1.1 MiB] moving module 07 { 916db000-91767f77 } -> { 917c2000-9184ef77 } [563.8 KiB] moving module 06 { 91438000-916da7d7 } -> { 9151f000-917c17d7 } [2.6 MiB] moving module 05 { 913ee000-9143795f } -> { 914d5000-9151e95f } [294.3 KiB] moving module 04 { 91354000-913eda0f } -> { 9143b000-914d4a0f } [614.5 KiB] moving module 03 { 9132b000-9135346f } -> { 91412000-9143a46f } [161.1 KiB] moving module 02 { 912f3000-9132ae07 } -> { 913da000-91411e07 } [223.5 KiB] moving module 01 { 912ec000-912f2a77 } -> { 913d3000-913d9a77 } [26.6 KiB] moving module 00 { 91219000-912eb4c7 } -> { 91300000-913d24c7 } [841.1 KiB] Loading fiasco found node 0 kernel info page (via ELF) at 0x90204000 Loading sigma0 (offset +0x90000000) Loading moe (offset +0x9000b000) found node 0 kernel options (via ELF) at 0x90205000 Sigma0 config node: 0 ip:00000000900007e4 Roottask config node: 0 ip:00000000900114a4 Regions of list 'regions' [ 88000000, 88007fff] { 32.0 KiB} Arch vdev0vring0@88000000 [ 88008000, 8800ffff] { 32.0 KiB} Arch vdev0vring1@88008000 [ 88010000, 88017fff] { 32.0 KiB} Arch vdev1vring0@88010000 [ 88018000, 8801ffff] { 32.0 KiB} Arch vdev1vring1@88018000 [ 88020000, 8811ffff] {1024.0 KiB} Arch vdevbuffer@88020000 [ 88220000, 88220fff] { 4.0 KiB} Arch rsc-table@88220000 [ 8c000000, 8dbfffff] { 28.0 MiB} Arch optee_core@8c000000 [ 8dc00000, 8dffffff] { 4.0 MiB} Arch optee_shm@8dc00000 [ 90000000, 9000a47f] { 41.1 KiB} Sigma0 sigma0 [ 9000b000, 90049217] { 248.5 KiB} Root moe [ 90201000, 90206847] { 22.0 KiB} Kern fiasco [ 90400000, 9061dfff] { 2.1 MiB} Kern fiasco [ 91412000, 93b3c9ff] { 39.1 MiB} Root Module [ 93b3d000, 93b3dfff] { 4.0 KiB} Root mbi_rt [ 94000000, 94017fff] { 96.0 KiB} Root dtb [ a0000000, a00fffff] {1024.0 KiB} Arch vpu_boot@a0000000 Starting kernel fiasco at 902010c0 Welcome to the L4Re Microkernel! L4Re Microkernel on arm-64 Rev: 3680e19d compiled with gcc 12.2.1 20221205 for i.MX95 Build: #1 Thu Dec 4 14:28:53 IST 2025 Hello from Startup::stage2 Reserved 968 MiB as kernel memory. GIC: Number of IRQs available at this GIC: 416 Detecting PSCI ... Detected PSCI v1.1 PSCI: CPU_SUSPEND format original v0.2, does not support OS-initiated mode PSCI: TOS: Not present or not required. FPU: Initialize ARM generic timer: freq=24000000 interval=24000 cnt=702878460 IOMMU: Initialize IOMMU: IDR0 s2p=1 s1p=1 ttf=3 cohacc=0 btm=0 asid16=1 msi=1 sev=0 vmid16=1 stall_model=0 st_level=1 IOMMU: IDR1 sidsize=32 ssidsize=20 eventqs=19 cmdqs=19 ecmdq=0 IOMMU: IDR5 oas=1 gran4k=1 vax=1 KERNEL: Warning: IOMMU: Stream table covers only 24 of stream ID's 32 bits. IOMMU: 65536 ASIDs available. SERIAL ESC: allocated IRQ 51 for serial UART Cache config: ON CPU0: ID_PFR[01]: 11112222 00000010 ID_[DA]FR0: 10305408 00000000 ID_MMFR[04]: 00101122 10212122 00001011 00000000 CPU1 booted (same IDs as CPU0). CPU5 booted (same IDs as CPU0). Calibrating timer loop... CPU3 booted (same IDs as CPU0). Timer calibration done. CPU4 booted (same IDs as CPU0). CPU2 booted (same IDs as CPU0). MDB: use page size: 30 MDB: use page size: 21 MDB: use page size: 12 SIGMA0: Hello! KIP @ 90204000 allocated 4 KiB for maintenance structures SIGMA0: Dump of all resource maps RAM:------------------------ [4:RWX:9000b000;90049fff] [0:RWX:9004a000;90200fff] [0:RWX:90207000;903fffff] [0:RWX:9061e000;91411fff] [4:RWX:91412000;93b3dfff] [0:RWX:93b3e000;93ffffff] [4:---:94000000;94017fff] [0:RWX:94018000;9fffffff] [0:RWX:a0100000;4437fffff] IOMEM:---------------------- [0:RW-:0;8fffffff] [0:RW-:a0000000;a00fffff] [0:RW-:480000000;ffffffffffffffff] MOE: Hello world MOE: found 14.7 GiB RAM in the area 9004a000..443800000 MOE: allocated 14.8 MiB for the page array @0x94018000 MOE: virtual user address space [0-ffffffffff] MOE: cmdline: moe rom/yocto-vm.cfg MOE: rom name space cap -> [C:103000] MOE: rwfs name space cap -> [C:105000] ROMFS: [91412000-9143a470] [C:107000] l4re ROMFS: [9143b000-914d4a10] [C:109000] ned ROMFS: [914d5000-9151e960] [C:10b000] cons ROMFS: [9151f000-917c17d8] [C:10d000] io ROMFS: [917c2000-9184ef78] [C:10f000] emmc-drv ROMFS: [9184f000-91981370] [C:111000] uvmm ROMFS: [91982000-91982b31] [C:113000] yocto-vm.cfg ROMFS: [91983000-9198308e] [C:115000] io.cfg ROMFS: [91984000-919848f0] [C:117000] virt.dtb ROMFS: [91985000-93b3ca00] [C:119000] linux.bin ROMFS: [94000000-94018000] [C:11b000] .fdt MOE: Starting: rom/ned rom/yocto-vm.cfg MOE: loading 'rom/ned' Ned says: Hi World! Ned: loading file: 'rom/yocto-vm.cfg' Console Server cons> Created vcon channel: io [420010] cons> Created vcon channel: emmc-drv [421010] cons> io | Io service io | KIP doesn't provide ACPI RSDP address emmc-drv| eMMC[main]: Emmc driver says hello. emmc-drv| eMMC[main]: TSC frequency of 24MHz. io | warning: could not register control interface at cap 'platform_ctl' io | Ready. Waiting for requests. emmc-drv| eMMC[main]: Starting device discovery. emmc-drv| eMMC[main]: All devices scanned. No suitable found! lua error: rom/yocto-vm.cfg:47: runtime error No such device (-19). ############### Module list modaddr 0x01100000 default-kernel fiasco -serial_esc default-bootstrap bootstrap entry yocto-vm roottask moe rom/yocto-vm.cfg module l4re module ned module cons module io module emmc-drv module uvmm module yocto-vm.cfg module io.cfg module[fname=virt.dtb] dtb/virt-arm_virt-64.dtb # Ensure path to your actual Yocto kernel binary is correct module[fname=linux.bin] /home/admin1/Downloads/images/imx95-19x19-verdin/linux-kernel.bin ####################### Cfg file -- vim:set ft=lua: local L4 = require("L4"); local l = L4.default_loader; local cons = l:new_channel(); l:start({ caps = { cons = cons:svr(); }, log = L4.Env.log }, "rom/cons -a"); l.log_fab = cons; local io_to_emmc = l:new_channel() local emmc_to_uvmm = l:new_channel() l:start({ caps = { icu = L4.Env.icu, sigma0 = L4.Env.sigma0, sd_hw_bus = io_to_emmc:svr(), }, }, "rom/io rom/io.cfg -v") l:start({ caps = { vbus = io_to_emmc, svr = emmc_to_uvmm:svr(), }, }, "rom/emmc-drv -v") -- This turns emmc-driver into a libblock-device backend -- Choose partition according to your SD layout local blk_backend = emmc_to_uvmm:create(0, "device=partnum:2") -- uvmm only understands virtio, not emmc-driver local virtio_blk = l:start({ caps = { backend = blk_backend, }, }, "rom/l4virtio-blk") local serialdev = { arm = "ttyAMA0", arm64 = "ttyAMA0", amd64 = "ttyS0", riscv = "ttyS0" }; function start_vm(num) local flags = L4.Mem_alloc_flags.Continuous | L4.Mem_alloc_flags.Pinned | L4.Mem_alloc_flags.Super_pages; local align = 21; l:startv({ caps = { ram = L4.Env.user_factory:create( L4.Proto.Dataspace, 1024 * 1024 * 1024, flags, align ):m("rw"), block = virtio_blk, }, log = { "yocto-vm-" .. num, "", "key=" .. num }, }, "rom/uvmm", "-v", "-krom/linux.bin", "-drom/virt.dtb", "-cconsole=" .. serialdev[L4.Info.arch()] .. " root=/dev/vda rw rootwait"); end start_vm(1) ################ Io cfg -- vim:ft=lua local hw = Io.system_bus() Io.add_vbusses { sd_hw_bus = Io.Vi.System_bus(function() -- i.MX95 Verdin SD card slot = USDHC2 usdhc2 = wrap(hw.usdhc2) end) }