genericarm64: add qemuboot configuration

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.

(From meta-yocto rev: cd40f405844c1ccfabcbe64ad6be5d98d0221f72)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton 2024-03-22 16:50:09 +00:00 committed by Richard Purdie
parent 978206fed4
commit 21c9a9f814

View File

@ -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"