qemu-xtf-dom0less-arm64-gcc-hyp-xen-version:
extends: .qemu-arm64
script:
- - ./automation/scripts/qemu-xtf-dom0less-arm64.sh hyp-xen-version 2>&1 | tee ${LOGFILE}
+ - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE}
needs:
- alpine-3.18-gcc-arm64
- qemu-system-aarch64-6.0.0-arm64-export
qemu-xtf-dom0less-arm64-gcc-debug-hyp-xen-version:
extends: .qemu-arm64
script:
- - ./automation/scripts/qemu-xtf-dom0less-arm64.sh hyp-xen-version 2>&1 | tee ${LOGFILE}
+ - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE}
needs:
- alpine-3.18-gcc-debug-arm64
- qemu-system-aarch64-6.0.0-arm64-export
/binaries/
+/imagebuilder/
/smoke.serial
/xtf-*/
+
+*.rom
--- /dev/null
+CONFIG_GICV2=y
+CONFIG_SBSA_UART=y
--- /dev/null
+#!/bin/bash
+#
+# XTF test utilities (arm64).
+#
+
+# Arch-specific environment overrides.
+function xtf_arch_prepare()
+{
+ export FW_PREFIX="${FW_PREFIX:-/usr/lib/u-boot/qemu_arm64/}"
+ export QEMU_PREFIX="${QEMU_PREFIX:-${WORKDIR}/}"
+ export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen}"
+ export XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=dtuart}"
+ export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-xtf-arm}"
+ export XTF_SRC_URI="${XTF_SRC_URI:-https://gitlab.com/xen-project/fusa/xtf.git}"
+ export XTF_SRC_VARIANTS="mmu64le"
+}
+
+# Perform arch-specific XTF environment setup.
+function xtf_arch_setup()
+{
+ # QEMU looks for "efi-virtio.rom" even if it is unneeded
+ curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
+
+ # Crude check for local testing
+ if [ ! -d imagebuilder ]; then
+ git clone --depth 1 https://gitlab.com/xen-project/imagebuilder.git
+ fi
+
+ cat > ${WORKDIR}/config <<EOF
+MEMORY_START="0x40000000"
+MEMORY_END="0xC0000000"
+
+XEN="xen"
+DEVICE_TREE="virt-gicv2.dtb"
+
+XEN_CMD="${XEN_CMDLINE}"
+
+DOMU_KERNEL[0]="xtf-test"
+DOMU_MEM[0]="128"
+
+NUM_DOMUS=1
+
+LOAD_CMD="tftpb"
+UBOOT_SOURCE="boot.source"
+UBOOT_SCRIPT="boot.scr"
+EOF
+ cp ${XTF_BINARY} ${WORKDIR}/xtf-test
+
+ # Generate virt-gicv2.dtb
+ ${WORKDIR}/qemu-system-aarch64 \
+ -machine virtualization=true \
+ -cpu cortex-a57 \
+ -machine type=virt \
+ -m 2048 \
+ -smp 2 \
+ -display none \
+ -machine dumpdtb=${WORKDIR}/virt-gicv2.dtb
+
+ # Generate U-Boot environment
+ bash -x imagebuilder/scripts/uboot-script-gen \
+ -t tftp \
+ -d ${WORKDIR}/ \
+ -c ${WORKDIR}/config
+
+ export TEST_CMD="${QEMU_PREFIX}qemu-system-aarch64 \
+ -machine virtualization=true \
+ -cpu cortex-a57 \
+ -machine type=virt \
+ -no-reboot \
+ -nographic \
+ -monitor none \
+ -serial stdio \
+ -m 2048 \
+ -smp 2 \
+ -device virtio-net-pci,netdev=n0 \
+ -netdev user,id=n0,tftp=${WORKDIR} \
+ -bios ${FW_PREFIX}u-boot.bin \
+ "
+
+ export UBOOT_CMD="virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"
+}
+++ /dev/null
-#!/bin/bash
-
-set -ex -o pipefail
-
-# Name of the XTF test
-xtf_test=$1
-
-# Message returned by XTF in case of success
-passed="Test result: SUCCESS"
-
-# XXX QEMU looks for "efi-virtio.rom" even if it is unneeded
-curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
-./binaries/qemu-system-aarch64 \
- -machine virtualization=true \
- -cpu cortex-a57 -machine type=virt \
- -m 2048 -smp 2 -display none \
- -machine dumpdtb=binaries/virt-gicv2.dtb
-
-# XTF
-# Build a single XTF test passed as a first parameter to the script.
-# Build XTF with GICv2 support to match Qemu configuration and with SBSA UART
-# support, so that the test will use an emulated UART for printing messages.
-# This will allow us to run the test on both debug and non-debug Xen builds.
-rm -rf xtf
-git clone https://gitlab.com/xen-project/fusa/xtf.git -b xtf-arm
-make -C xtf TESTS=tests/${xtf_test} CONFIG_SBSA_UART=y CONFIG_GICV2=y -j$(nproc)
-cp xtf/tests/${xtf_test}/test-mmu64le-${xtf_test} binaries/xtf-test
-
-# ImageBuilder
-echo 'MEMORY_START="0x40000000"
-MEMORY_END="0xC0000000"
-
-XEN="xen"
-DEVICE_TREE="virt-gicv2.dtb"
-
-XEN_CMD="console=dtuart console_timestamps=boot"
-
-DOMU_KERNEL[0]="xtf-test"
-DOMU_MEM[0]="128"
-
-NUM_DOMUS=1
-
-LOAD_CMD="tftpb"
-UBOOT_SOURCE="boot.source"
-UBOOT_SCRIPT="boot.scr"' > binaries/config
-
-rm -rf imagebuilder
-git clone --depth 1 https://gitlab.com/xen-project/imagebuilder.git
-bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/config
-
-# Run the test
-rm -f smoke.serial
-export TEST_CMD="./binaries/qemu-system-aarch64 \
- -machine virtualization=true \
- -cpu cortex-a57 -machine type=virt \
- -m 2048 -monitor none -serial stdio \
- -smp 2 \
- -no-reboot \
- -device virtio-net-pci,netdev=n0 \
- -netdev user,id=n0,tftp=binaries \
- -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin"
-
-export UBOOT_CMD="virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"
-export BOOT_MSG="Latest ChangeSet: "
-export TEST_LOG="smoke.serial"
-export PASSED="${passed}"
-
-./automation/scripts/console.exp | sed 's/\r\+$//'