1#!/bin/bash 2 3set -e 4 5if [ $# -eq 0 ]; then 6 echo "Usage $0 TEST_CASE [QEMU_ARGS]" 7 exit 2 8fi 9 10if [ ! -f config.mak ]; then 11 echo "run './configure --enable-efi && make' first. See ./configure -h" 12 exit 2 13fi 14source config.mak 15source scripts/arch-run.bash 16source scripts/common.bash 17 18if [ -f /usr/share/qemu-efi-aarch64/QEMU_EFI.fd ]; then 19 DEFAULT_UEFI=/usr/share/qemu-efi-aarch64/QEMU_EFI.fd 20elif [ -f /usr/share/edk2/aarch64/QEMU_EFI.silent.fd ]; then 21 DEFAULT_UEFI=/usr/share/edk2/aarch64/QEMU_EFI.silent.fd 22fi 23 24: "${EFI_SRC:=$TEST_DIR}" 25: "${EFI_UEFI:=$DEFAULT_UEFI}" 26: "${EFI_TEST:=efi-tests}" 27: "${EFI_CASE:=$(basename $1 .efi)}" 28: "${EFI_VAR_GUID:=97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823}" 29 30[ "$EFI_USE_ACPI" = "y" ] || EFI_USE_DTB=y 31 32if [ ! -f "$EFI_UEFI" ]; then 33 echo "UEFI firmware not found." 34 echo "Please specify the path with the env variable EFI_UEFI" 35 exit 2 36fi 37 38# Remove the TEST_CASE from $@ 39shift 1 40 41# Fish out the arguments for the test, they should be the next string 42# after the "-append" option 43qemu_args=() 44cmd_args=() 45while (( "$#" )); do 46 if [ "$1" = "-append" ]; then 47 cmd_args=$2 48 shift 2 49 else 50 qemu_args+=("$1") 51 shift 1 52 fi 53done 54 55if [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then 56 EFI_CASE=dummy 57fi 58 59: "${EFI_CASE_DIR:="$EFI_TEST/$EFI_CASE"}" 60mkdir -p "$EFI_CASE_DIR" 61 62cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_TEST/$EFI_CASE/" 63echo "@echo -off" > "$EFI_TEST/$EFI_CASE/startup.nsh" 64if [ "$EFI_USE_DTB" = "y" ]; then 65 qemu_args+=(-machine acpi=off) 66 FDT_BASENAME="dtb" 67 $(EFI_RUN=y $TEST_DIR/run -machine dumpdtb="$EFI_TEST/$EFI_CASE/$FDT_BASENAME" "${qemu_args[@]}") 68 echo "setvar fdtfile -guid $EFI_VAR_GUID -rt =L\"$FDT_BASENAME\"" >> "$EFI_TEST/$EFI_CASE/startup.nsh" 69fi 70echo "$EFI_CASE.efi" "${cmd_args[@]}" >> "$EFI_TEST/$EFI_CASE/startup.nsh" 71 72EFI_RUN=y $TEST_DIR/run \ 73 -bios "$EFI_UEFI" \ 74 -drive file.dir="$EFI_TEST/$EFI_CASE/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \ 75 "${qemu_args[@]}" 76