Index: tools/boot/ci-qemu-test.sh =================================================================== --- tools/boot/ci-qemu-test.sh +++ tools/boot/ci-qemu-test.sh @@ -44,11 +44,11 @@ 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 <&2 - 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/uefi-edk2-qemu/QEMU_UEFI_CODE-x86_64.fd} + if [ ! -r "${OVMF}" ]; then + echo "NOTE: UEFI firmware available in the uefi-edk2-qemu-x86_64 package" >&2 + 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) @@ -94,8 +109,7 @@ # 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}