blob: e629abde52736f0526369a8539718fb3094d645c [file] [log] [blame]
#!/bin/bash
set -e
if [ $# -eq 0 ]; then
echo "Usage $0 TEST_CASE [QEMU_ARGS]"
exit 2
fi
if [ ! -f config.mak ]; then
echo "run './configure --enable-efi && make' first. See ./configure -h"
exit 2
fi
source config.mak
source scripts/arch-run.bash
source scripts/common.bash
if [ -f /usr/share/qemu-efi-aarch64/QEMU_EFI.fd ]; then
DEFAULT_UEFI=/usr/share/qemu-efi-aarch64/QEMU_EFI.fd
elif [ -f /usr/share/edk2/aarch64/QEMU_EFI.silent.fd ]; then
DEFAULT_UEFI=/usr/share/edk2/aarch64/QEMU_EFI.silent.fd
fi
: "${EFI_SRC:=$TEST_DIR}"
: "${EFI_UEFI:=$DEFAULT_UEFI}"
: "${EFI_TEST:=efi-tests}"
: "${EFI_CASE:=$(basename $1 .efi)}"
: "${EFI_VAR_GUID:=97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823}"
[ "$EFI_USE_ACPI" = "y" ] || EFI_USE_DTB=y
if [ ! -f "$EFI_UEFI" ]; then
echo "UEFI firmware not found."
echo "Please specify the path with the env variable EFI_UEFI"
exit 2
fi
# Remove the TEST_CASE from $@
shift 1
# Fish out the arguments for the test, they should be the next string
# after the "-append" option
qemu_args=()
cmd_args=()
while (( "$#" )); do
if [ "$1" = "-append" ]; then
cmd_args=$2
shift 2
else
qemu_args+=("$1")
shift 1
fi
done
if [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then
EFI_CASE_DIR="$EFI_TEST/dummy"
mkdir -p "$EFI_CASE_DIR"
$TEST_DIR/run \
$EFI_CASE \
-bios "$EFI_UEFI" \
-drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
"${qemu_args[@]}"
exit
fi
: "${EFI_CASE_DIR:="$EFI_TEST/$EFI_CASE"}"
mkdir -p "$EFI_CASE_DIR"
cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_TEST/$EFI_CASE/"
echo "@echo -off" > "$EFI_TEST/$EFI_CASE/startup.nsh"
if [ "$EFI_USE_DTB" = "y" ]; then
qemu_args+=(-machine acpi=off)
FDT_BASENAME="dtb"
$(EFI_RUN=y $TEST_DIR/run -machine dumpdtb="$EFI_TEST/$EFI_CASE/$FDT_BASENAME" "${qemu_args[@]}")
echo "setvar fdtfile -guid $EFI_VAR_GUID -rt =L\"$FDT_BASENAME\"" >> "$EFI_TEST/$EFI_CASE/startup.nsh"
fi
echo "$EFI_CASE.efi" "${cmd_args[@]}" >> "$EFI_TEST/$EFI_CASE/startup.nsh"
EFI_RUN=y $TEST_DIR/run \
-bios "$EFI_UEFI" \
-drive file.dir="$EFI_TEST/$EFI_CASE/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
"${qemu_args[@]}"