1#!/bin/bash
2#
3# XTF test utilities (x86_64, EFI).
4#
5
6# Arch-specific environment overrides.
7function xtf_arch_prepare()
8{
9    export FW_PREFIX="${FW_PREFIX:-/usr/share/OVMF/}"
10    export QEMU_PREFIX="${QEMU_PREFIX:-}"
11    export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen.efi}"
12    export XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=com1}"
13    export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-master}"
14    export XTF_SRC_URI="${XTF_SRC_URI:-https://xenbits.xen.org/git-http/xtf.git}"
15    export XTF_SRC_VARIANTS="hvm64 pv64"
16}
17
18# Perform arch-specific XTF environment setup.
19function xtf_arch_setup()
20{
21    local esp_dir="${WORKDIR}/boot-esp"
22    local efi_dir="${esp_dir}/EFI/BOOT"
23
24    # Generate EFI boot environment
25    mkdir -p ${efi_dir}
26    cp ${XEN_BINARY} ${efi_dir}/BOOTX64.EFI
27    cp ${XTF_BINARY} ${efi_dir}/kernel
28
29    cat > ${efi_dir}/BOOTX64.cfg <<EOF
30[global]
31default=test
32
33[test]
34options=${XEN_CMDLINE}
35kernel=kernel
36EOF
37
38    # NB: OVMF_CODE.fd is read-only, no need to copy
39    cp ${FW_PREFIX}OVMF_VARS.fd ${WORKDIR}
40
41    export TEST_CMD="${QEMU_PREFIX}qemu-system-x86_64 \
42        -no-reboot \
43        -nographic \
44        -monitor none \
45        -serial stdio \
46        -m 512 \
47        -M q35,kernel-irqchip=split \
48        -drive if=pflash,format=raw,readonly=on,file=${FW_PREFIX}OVMF_CODE.fd \
49        -drive if=pflash,format=raw,file=${WORKDIR}/OVMF_VARS.fd \
50        -drive file=fat:rw:${esp_dir},media=disk,index=0,format=raw \
51    "
52}
53