12607d2d6SNikos Nikoleris#!/bin/bash 22607d2d6SNikos Nikoleris 32607d2d6SNikos Nikolerisset -e 42607d2d6SNikos Nikoleris 52607d2d6SNikos Nikolerisif [ $# -eq 0 ]; then 62607d2d6SNikos Nikoleris echo "Usage $0 TEST_CASE [QEMU_ARGS]" 72607d2d6SNikos Nikoleris exit 2 82607d2d6SNikos Nikolerisfi 92607d2d6SNikos Nikoleris 102607d2d6SNikos Nikolerisif [ ! -f config.mak ]; then 112607d2d6SNikos Nikoleris echo "run './configure --enable-efi && make' first. See ./configure -h" 122607d2d6SNikos Nikoleris exit 2 132607d2d6SNikos Nikolerisfi 142607d2d6SNikos Nikolerissource config.mak 152607d2d6SNikos Nikolerissource scripts/arch-run.bash 162607d2d6SNikos Nikolerissource scripts/common.bash 172607d2d6SNikos Nikoleris 182607d2d6SNikos Nikoleris: "${EFI_SRC:=$(realpath "$(dirname "$0")/../")}" 192607d2d6SNikos Nikoleris: "${EFI_UEFI:=/usr/share/qemu-efi-aarch64/QEMU_EFI.fd}" 202607d2d6SNikos Nikoleris: "${EFI_TEST:=efi-tests}" 212607d2d6SNikos Nikoleris: "${EFI_CASE:=$(basename $1 .efi)}" 22*2e080dafSNikos Nikoleris: "${EFI_VAR_GUID:=97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823}" 23*2e080dafSNikos Nikoleris 24*2e080dafSNikos Nikoleris[ "$EFI_USE_ACPI" = "y" ] || EFI_USE_DTB=y 252607d2d6SNikos Nikoleris 262607d2d6SNikos Nikolerisif [ ! -f "$EFI_UEFI" ]; then 272607d2d6SNikos Nikoleris echo "UEFI firmware not found: $EFI_UEFI" 282607d2d6SNikos Nikoleris echo "Please install the UEFI firmware to this path" 292607d2d6SNikos Nikoleris echo "Or specify the correct path with the env variable EFI_UEFI" 302607d2d6SNikos Nikoleris exit 2 312607d2d6SNikos Nikolerisfi 322607d2d6SNikos Nikoleris 332607d2d6SNikos Nikoleris# Remove the TEST_CASE from $@ 342607d2d6SNikos Nikolerisshift 1 352607d2d6SNikos Nikoleris 362607d2d6SNikos Nikoleris# Fish out the arguments for the test, they should be the next string 372607d2d6SNikos Nikoleris# after the "-append" option 382607d2d6SNikos Nikolerisqemu_args=() 392607d2d6SNikos Nikoleriscmd_args=() 402607d2d6SNikos Nikoleriswhile (( "$#" )); do 412607d2d6SNikos Nikoleris if [ "$1" = "-append" ]; then 422607d2d6SNikos Nikoleris cmd_args=$2 432607d2d6SNikos Nikoleris shift 2 442607d2d6SNikos Nikoleris else 452607d2d6SNikos Nikoleris qemu_args+=("$1") 462607d2d6SNikos Nikoleris shift 1 472607d2d6SNikos Nikoleris fi 482607d2d6SNikos Nikolerisdone 492607d2d6SNikos Nikoleris 502607d2d6SNikos Nikolerisif [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then 512607d2d6SNikos Nikoleris EFI_CASE=dummy 522607d2d6SNikos Nikolerisfi 532607d2d6SNikos Nikoleris 542607d2d6SNikos Nikoleris: "${EFI_CASE_DIR:="$EFI_TEST/$EFI_CASE"}" 552607d2d6SNikos Nikolerismkdir -p "$EFI_CASE_DIR" 562607d2d6SNikos Nikoleris 572607d2d6SNikos Nikoleriscp "$EFI_SRC/$EFI_CASE.efi" "$EFI_TEST/$EFI_CASE/" 582607d2d6SNikos Nikolerisecho "@echo -off" > "$EFI_TEST/$EFI_CASE/startup.nsh" 59*2e080dafSNikos Nikolerisif [ "$EFI_USE_DTB" = "y" ]; then 60*2e080dafSNikos Nikoleris qemu_args+=(-machine acpi=off) 61*2e080dafSNikos Nikoleris FDT_BASENAME="dtb" 62*2e080dafSNikos Nikoleris $(EFI_RUN=y $TEST_DIR/run -machine dumpdtb="$EFI_TEST/$EFI_CASE/$FDT_BASENAME" "${qemu_args[@]}") 63*2e080dafSNikos Nikoleris echo "setvar fdtfile -guid $EFI_VAR_GUID -rt =L\"$FDT_BASENAME\"" >> "$EFI_TEST/$EFI_CASE/startup.nsh" 64*2e080dafSNikos Nikolerisfi 652607d2d6SNikos Nikolerisecho "$EFI_CASE.efi" "${cmd_args[@]}" >> "$EFI_TEST/$EFI_CASE/startup.nsh" 662607d2d6SNikos Nikoleris 672607d2d6SNikos NikolerisEFI_RUN=y $TEST_DIR/run \ 682607d2d6SNikos Nikoleris -bios "$EFI_UEFI" \ 692607d2d6SNikos Nikoleris -drive file.dir="$EFI_TEST/$EFI_CASE/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \ 702607d2d6SNikos Nikoleris "${qemu_args[@]}" 71