@@ -22,6 +22,28 @@ build-each-commit-gcc:
- /^coverity-tested\/.*/
- /^stable-.*/
+qemu-smoke-arm64-gcc:
+ stage: test
+ image: registry.gitlab.com/xen-project/xen/${CONTAINER}
+ variables:
+ CONTAINER: debian:unstable-arm64v8
+ script:
+ - ./automation/scripts/qemu-smoke-arm64.sh 2>&1 | tee qemu-smoke-arm64.log
+ dependencies:
+ - debian-unstable-gcc-arm64
+ artifacts:
+ paths:
+ - smoke.serial
+ - '*.log'
+ when: always
+ tags:
+ - arm64
+ except:
+ - master
+ - smoke
+ - /^coverity-tested\/.*/
+ - /^stable-.*/
+
qemu-smoke-x86-64-gcc:
stage: test
image: registry.gitlab.com/xen-project/xen/${CONTAINER}
@@ -10,9 +10,9 @@ cc-ver()
# random config or default config
if [[ "${RANDCONFIG}" == "y" ]]; then
- make -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig
+ make -j$(nproc) -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig
else
- make -C xen defconfig
+ make -j$(nproc) -C xen defconfig
fi
# build up our configure options
@@ -45,7 +45,7 @@ make -j$(nproc) dist
# Extract artifacts to avoid getting rewritten by customised builds
cp xen/.config xen-config
mkdir binaries
-if [[ "${XEN_TARGET_ARCH}" == "x86_64" ]]; then
+if [[ "${XEN_TARGET_ARCH}" != "x86_32" ]]; then
cp xen/xen binaries/xen
fi
new file mode 100755
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -ex
+
+# Install QEMU
+export DEBIAN_FRONTENT=noninteractive
+apt-get -qy update
+apt-get -qy install --no-install-recommends qemu-system-aarch64 \
+ u-boot-qemu
+
+# XXX Silly workaround to get the following QEMU command to work
+cp /usr/share/qemu/pvh.bin /usr/share/qemu/efi-virtio.rom
+qemu-system-aarch64 \
+ -machine virtualization=true \
+ -cpu cortex-a57 -machine type=virt \
+ -m 512 -display none \
+ -machine dumpdtb=binaries/virt-gicv3.dtb
+
+rm -f smoke.serial
+set +e
+echo " booti 0x49000000 - 0x44000000" | timeout -k 1 30 qemu-system-aarch64 \
+ -machine virtualization=true \
+ -cpu cortex-a57 -machine type=virt \
+ -m 512 -monitor none -serial stdio \
+ -no-reboot \
+ -device loader,file=binaries/virt-gicv3.dtb,force-raw=on,addr=0x44000000 \
+ -device loader,file=binaries/xen,force-raw=on,addr=0x49000000 \
+ -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial
+
+set -e
+grep -q 'LOADING DOMAIN 0' smoke.serial || exit 1
+exit 0
Use QEMU to start Xen (just the hypervisor) up until it stops because there is no dom0 kernel to boot. It is based on the existing build job unstable-arm64v8. Also use make -j$(nproc) to build Xen. Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com> --- Changes in v2: - fix x86_32 build --- automation/gitlab-ci/test.yaml | 22 ++++++++++++++++++ automation/scripts/build | 6 ++--- automation/scripts/qemu-smoke-arm64.sh | 32 ++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100755 automation/scripts/qemu-smoke-arm64.sh