git: 129d0eb49ece - stable/13 - CI: add arm64 support to ci-qemu-test.sh

From: Ed Maste <emaste_at_FreeBSD.org>
Date: Mon, 13 Dec 2021 00:28:11 UTC
The branch stable/13 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=129d0eb49ece4b2359d3f69b5543f4881e936b13

commit 129d0eb49ece4b2359d3f69b5543f4881e936b13
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2021-06-23 19:24:23 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2021-12-12 22:45:25 +0000

    CI: add arm64 support to ci-qemu-test.sh
    
    Reviewed by:    imp (earlier)
    MFC after:      3 weeks
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D30907
    
    (cherry picked from commit bba96bb143bb803968036543b76e062445cc9834)
---
 tools/boot/ci-qemu-test.sh | 32 +++++++++++++++++++++++---------
 1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/tools/boot/ci-qemu-test.sh b/tools/boot/ci-qemu-test.sh
index acd905b7ece8..e6481c794af5 100755
--- a/tools/boot/ci-qemu-test.sh
+++ b/tools/boot/ci-qemu-test.sh
@@ -44,11 +44,11 @@ EOF
 	    FreeBSD-clibs FreeBSD-runtime
 
 	# Put loader in standard EFI location.
-	mv ${ROOTDIR}/boot/loader.efi ${ROOTDIR}/efi/boot/BOOTx64.EFI
+	mv ${ROOTDIR}/boot/loader.efi ${ROOTDIR}/efi/boot/$EFIBOOT
 
 	# Configuration files.
 	cat > ${ROOTDIR}/boot/loader.conf <<EOF
-vfs.root.mountfrom="msdosfs:/dev/ada0s1"
+vfs.root.mountfrom="msdosfs:/dev/$ROOTDEV"
 autoboot_delay=-1
 boot_verbose=YES
 EOF
@@ -77,11 +77,26 @@ if [ -z "${OBJTOP}" ]; then
 	die "Cannot locate top of object tree"
 fi
 
-# Locate the uefi firmware file used by qemu.
-: ${OVMF:=/usr/local/share/qemu/edk2-x86_64-code.fd}
-if [ ! -r "${OVMF}" ]; then
-	die "Cannot read UEFI firmware file ${OVMF}"
-fi
+: ${TARGET:=$(uname -m)}
+case $TARGET in
+amd64)
+	# Locate the uefi firmware file used by qemu.
+	: ${OVMF:=/usr/local/share/qemu/edk2-x86_64-code.fd}
+	if [ ! -r "${OVMF}" ]; then
+		die "Cannot read UEFI firmware file ${OVMF}"
+	fi
+	QEMU="qemu-system-x86_64 -drive if=pflash,format=raw,readonly,file=${OVMF}"
+	EFIBOOT=BOOTx64.EFI
+	ROOTDEV=ada0s1
+	;;
+arm64)
+	QEMU="qemu-system-aarch64 -cpu cortex-a57 -M virt -bios edk2-aarch64-code.fd"
+	EFIBOOT=BOOTAA64.EFI
+	ROOTDEV=vtbd0s1
+	;;
+*)
+	die "Unknown TARGET:TARGET_ARCH $TARGET:$TARGET_ARCH"
+esac
 
 # Create a temp dir to hold the boot image.
 ROOTDIR=$(mktemp -d -t ci-qemu-test-fat-root)
@@ -93,8 +108,7 @@ trap tempdir_cleanup EXIT SIGINT SIGHUP SIGTERM SIGQUIT
 # And, boot in QEMU.
 : ${BOOTLOG:=${TMPDIR:-/tmp}/ci-qemu-test-boot.log}
 timeout 300 \
-    qemu-system-x86_64 -m 256M -nodefaults \
-   	-drive if=pflash,format=raw,readonly,file=${OVMF} \
+    $QEMU -m 256M -nodefaults \
         -serial stdio -vga none -nographic -monitor none \
         -snapshot -hda fat:${ROOTDIR} 2>&1 | tee ${BOOTLOG}