Hi Adam, I encountered the error "region overlap" while running L4Re on S32G.
First, I built the Linux BSP 38.0 using Yocto to generate the Image, s32g2xxa-evb.dtb, and fsl-image-dom0less-s32g274aevb.cpio.gz. Then, I compiled the S32G platform's L4Re image using the snapshots https://l4re.org/download/snapshots/README.html method. In the modules.list, I added the following:
` entry uvmm-2vm kernel fiasco.debug -serial_esc roottask moe rom/uvmm-2vm.ned module uvmm module l4re module ned module s32g2xxa-evb.dtb module fsl-image-dom0less-s32g274aevb.cpio.gz module[shell] echo $SRC_BASE_ABS/pkg/uvmm/configs/vmm.lua module uvmm-2vm.ned module Image module cons `
Finally, I ran the command make uimage E=uvmm-2vm PT=s32g in the /l4re-snapshot-24.08.0/obj/l4/builddir directory, which showed the following output:
` make[1]: Entering directory '/home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/src/l4' [bootstrap - nofpu] ... Building Dependencies Building entry "uvmm-2vm". Merging images: mod00: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/fiasco/builddir/fiasco.debug [27393kB -> 796kB] mod01: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/l4/builddir/bin/arm64_armv8a/l4f/sigma0 [24kB] mod02: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/l4/builddir/bin/arm64_armv8a/l4f/moe [202kB] mod03: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/l4/builddir/bin/arm64_armv8a/l4f/uvmm [974kB] mod04: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/l4/builddir/bin/arm64_armv8a/l4f/l4re [110kB] mod05: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/l4/builddir/bin/arm64_armv8a/l4f/ned [547kB] mod06: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/conf/s32g2xxa-evb.dtb [53kB] mod07: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/conf/fsl-image-dom0less-s32g274aevb.cpio.gz [25679kB] mod08: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/src/l4/pkg/uvmm/configs/vmm.lua [5kB] mod09: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/conf/uvmm-2vm.ned [1kB] mod10: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/conf/Image [14211kB] mod11: /home/qiangxu/prebuildl4/l4re-snapshot-24.08.0/obj/l4/builddir/bin/arm64_armv8a/l4f/cons [280kB] [bootstrap - nofpu] ... Generating bootstrap.ld [bootstrap - nofpu] ... Compiling startup.o [bootstrap - nofpu] ==> Linking l4re.elf [bootstrap] ==> Image post-processing l4re.elf [bootstrap - nofpu] ==> l4re.elf built ==> Installing l4re.elf in image directory ==> Installing l4re_uvmm-2vm in image directory ==> Installing l4re_uvmm-2vm.elf in image directory [bootstrap - nofpu] ... Generating l4re.raw ==> Installing l4re.raw in image directory ==> Installing l4re_uvmm-2vm.raw in image directory [bootstrap - nofpu] ... Generating l4re.uimage Image Name: L4 Image #9 Created: Thu Feb 6 19:29:02 2025 Image Type: AArch64 Linux Kernel Image (uncompressed) Data Size: 44056496 Bytes = 43023.92 KiB = 42.02 MiB Load Address: 81200000 Entry Point: 81200000 ==> Installing l4re.uimage in image directory ==> Installing l4re_uvmm-2vm.uimage in image directory Image size(s) in bytes: l4re_uvmm-2vm.elf: 44692328 l4re.raw: 44056496 l4re.uimage: 44056560 Start address: --> Build-Nr: 9 [bootstrap - nofpu] ==> Installing l4re.elf to local build-tree [bootstrap - nofpu] ==> Installing l4re_uvmm-2vm to local build-tree [bootstrap - nofpu] ==> Installing l4re_uvmm-2vm.elf to local build-tree ` Finally, I tried loading the l4re_uvmm-2vm.uimage and s32g2xxa-evb.dtb files in U-Boot for booting, but it resulted in an error. Can you help me identify where the issue might be?
` L4 Bootstrapper Build: #8 Thu Feb 6 14:58:40 CST 2025, 11.4.0 DT: FDT sanity check failed: FDT_ERR_BADMAGIC (-9)
L4 Bootstrapper Build: #8 Thu Feb 6 14:58:40 CST 2025, 11.4.0 Total RAM: 0MB New region for list regions: [ 82ddd000, 855979ff] { 27baa00} Boot Module overlaps with: [ 83200000, 835dffff] { 3e0000} Arch pfebufs@83200000 Regions of list 'regions' [ 34000000, 3407ffff] { 80000} Arch pfebufs@34000000 [ 34080000, 3409ffff] { 20000} Arch pfebufs@34080000 [ 80000000, 8000d0a5] { d0a6} Root dtb [ 81200000, 8121d777] { 1d778} Boot bootstrap [ 81200158, 81200187] { 30} Root cpu_boot [ 8121e1d0, 8121eadf] { 910} Boot modinfo [ 8121f000, 812e5f7f] { c6f80} Boot Module [ 812e6000, 812ebcd7] { 5cd8} Boot Module [ 812ec000, 8131e6cf] { 326d0} Boot Module [ 8131f000, 8141258f] { f3590} Boot Module [ 81413000, 8142e537] { 1b538} Boot Module [ 8142f000, 814b7aa7] { 88aa8} Boot Module [ 814b8000, 814c50a5] { d0a6} Boot Module [ 814c6000, 82dd9a52] { 1913a53} Boot Module [ 82dda000, 82ddb218] { 1219} Boot Module [ 82ddc000, 82ddc22a] { 22b} Boot Module [ 83200000, 835dffff] { 3e0000} Arch pfebufs@83200000 [ 835e0000, 835fffff] { 20000} Arch pfebufs@835e0000 [ 84000000, 843fffff] { 400000} Arch shm@84000000 [ 85000000, 85000fff] { 1000} Arch ddr@85000000 [ c0000000, c03fffff] { 400000} Arch shm@c0000000 [ c0400000, c07fffff] { 400000} Arch shm@c0400000 [ d0000000, d000007f] { 80} Arch shm@d0000000 [ d0000080, d00000ff] { 80} Arch shm@d0000080 region overlap
Key press reboots...
` Regards, Qiang
On Wed, Jan 8, 2025 at 10:13 AM qiang xu qiangxu431@gmail.com wrote:
Hi Adam,
Awesome, thanks for the info!
Regards, Qiang
On Tue, Jan 7, 2025 at 10:03 PM Adam Lackorzynski adam@l4re.org wrote:
Hi Qiang,
thanks for the great feedback.
It's correct, the L4Re microerkernel Fiasco runs in EL2 only. It runs both VMs and L4Re applications side by side, so yes, it is a hypervisor too.
Best regards, Adam
On Tue Jan 07, 2025 at 19:34:20 +0800, qiang xu wrote:
Hi Adam,
Thank you very much for your support. The explanation was very clear.
From
the printed information, it seems to be running fine. I have one more question: Can Fiasco be used as a hypervisor? From the example of l4re_VM-multi, it seems to have the ability to run multiple operating systems on a single platform, and in L4Re, only Fiasco runs in EL2 privilege level. I'm not sure if I understand this correctly, so I
wanted
to confirm with you. If it cannot be used as a hypervisor, what functionality does it lack that a hypervisor would typically have?
Regards, Qiang
On Tue, Jan 7, 2025 at 7:53 AM Adam Lackorzynski adam@l4re.org wrote:
Hi Qiang,
If I'm not mistaken, the provided BSP is using u-boot. With u-boot,
the
uimage file is a good fit. When booting up, you can stop at the u-boot prompt and do something like this: # fatload mmc 0 0x80f00000 fsl-s32g274a-evb.dtb # fatload mmc 0 0x80ffffc0 l4re_vm-multi-p2p_s32g.uimage # bootm 0x80ffffc0 - 0x80f00000
You need to copy the l4re_vm-multi-p2p_s32g.uimage file to the mmc
first
of course, for example, through Linux. Alternative you could also load the elf-image or raw-image into memory via your hardware debugger, whatever method the debugger supports. Do
it
by intercepting at the u-boot prompt.
A third option is to use the tftp network capabilities of u-boot to
load
the uimage via network.
Adam
On Mon Jan 06, 2025 at 11:04:35 +0800, qiang xu wrote:
Hi Adam,
Thank you for your response.
I found the following images in the L4Re pre-built images folder: “l4re_vm-multi-p2p_s32g.efi,” “l4re_vm-multi-p2p_s32g.elf,” and “l4re_vm-multi-p2p_s32g.uimage.” I would like to understand how
these
images can be combined with the BSP built using Yocto and placed on
the
SD
card for booting.
I have been following the examples from the L4Re wiki https://github.com/kernkonzept/manifest/wiki/MultipleVMs to get
started
with L4Re. These examples run very well on QEMU, but there is an
issue—I
am
unable to use GDB to debug the Fiasco kernel.I noticed that L4Re
can also
run on the S32G platform, so I would like to run L4Re on S32G and
use a
hardware debugging tool to debug the Fiasco kernel during its
execution.
However, the wiki does not provide instructions on how to run L4Re
on
real
hardware.Therefore, I would like your guidance on how to run the
examples
from the wiki <
https://github.com/kernkonzept/manifest/wiki/MultipleVMs%3E
on
the S32G platform and boot from an SD card.
Regards, Qiang
On Mon, Jan 6, 2025 at 9:56 AM Adam Lackorzynski adam@l4re.org
wrote:
Hi Qiang,
On Sat Jan 04, 2025 at 17:03:21 +0800, qiang xu wrote: > I would like to know how to run L4Re on the S32G. I couldn’t
find any
> related documentation. I’m a beginner in this technical field,
so
could
you > provide friendly step-by-step instructions?
One option is to use the snapshot from l4re.org as it has a
menu-driven
target selection which includes the S32G. This hides quite a few
of the
details but gives examples for the S32G right away. How do you boot your S32G?
_______________________________________________ l4-hackers mailing list -- l4-hackers@os.inf.tu-dresden.de To unsubscribe send an email to l4-hackers-leave@os.inf.tu-dresden.de