[PATCH] genericarm64: add qemuboot configuration

[email protected]
Newsgroups org.yoctoproject.lists.poky
Message-ID <[email protected]>
From: Ross Burton <[email protected]>

A basic SystemReady IR system can be provided by qemu-system-aarch64
and u-boot, so tell u-boot to build the qemu_arm64 machine and configure
qemuboot to start that u-boot and search the virtio-attached wic image
for the EFI boot partition.

Currently this machine support emulated (Cortex-A76) and virtualised (KVM)
execution, and virtio storage/network/console.  Display support will be
added shortly.

Note that this machine still doesn't build U-Boot by default, as a u-boot
binary for qemu in deploy would potentially confuse users who want to
boot on real hardware and think this u-boot is needed.  If you wish to
use genericarm64 with runqemu, you'll need to manually bitbake u-boot.

Signed-off-by: Ross Burton <[email protected]>
---
 meta-yocto-bsp/conf/machine/genericarm64.conf | 27 +++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/meta-yocto-bsp/conf/machine/genericarm64.conf b/meta-yocto-bsp/conf/machine/genericarm64.conf
index 7c4c76ffe0c..4afd6c3a870 100644
--- a/meta-yocto-bsp/conf/machine/genericarm64.conf
+++ b/meta-yocto-bsp/conf/machine/genericarm64.conf
@@ -29,3 +29,30 @@ EFI_PROVIDER ?= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd-boo
 
 # Try to bring up one physical serial console, or a virtualized serial console
 SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
+
+# Allow u-boot to be built for use with qemu-system-aarch64.
+# This u-boot is _not_ suitable for use with real hardware, and the expectation
+# of this machine is that real hardware comes with the firmware pre-loaded.
+UBOOT_MACHINE = "qemu_arm64_defconfig"
+
+# runqemu configuration to run a genericarm64 image inside a qemu-system-aarch64. You will need
+# to build u-boot explicitly.
+IMAGE_CLASSES += "qemuboot"
+QB_SYSTEM_NAME = "qemu-system-aarch64"
+# Boot the virtual machine with either an emulated Cortex-A76, or the host if using KVM
+QB_MACHINE = "-machine virt"
+QB_CPU = "-cpu cortex-a76"
+QB_CPU_KVM = "-cpu host -machine gic-version=3"
+QB_SMP = "-smp 4"
+# Boot into U-Boot and let that scan the disk for the next step, don't pass any kernel or filesystem hints
+QB_DEFAULT_BIOS = "u-boot.bin"
+QB_DEFAULT_KERNEL = "none"
+QB_DEFAULT_FSTYPE = "wic"
+QB_FSINFO = "wic:no-kernel-in-fs"
+# Mount the wic rootfs as a virtio block device
+QB_ROOTFS_OPT = "-drive id=root,file=@ROOTFS@,if=none,format=raw -device virtio-blk-pci,drive=root"
+# Virtio serial consoles
+QB_SERIAL_OPT = "-device virtio-serial-pci -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = "-device virtio-serial-pci -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
+# Virtio networking
+QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
-- 
2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.