[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] automation: create an alpine linux arm64 test job
commit b44eb6daa96b1f3eae21b4fd5c1307519c71275a Author: Stefano Stabellini <sstabellini@xxxxxxxxxx> AuthorDate: Tue Nov 24 13:15:51 2020 -0800 Commit: Stefano Stabellini <sstabellini@xxxxxxxxxx> CommitDate: Thu Dec 17 14:56:43 2020 -0800 automation: create an alpine linux arm64 test job Create a test job that starts Xen and Dom0 on QEMU based on the alpine linux rootfs. Use the Linux kernel and rootfs from the tests-artifacts containers. Add the Xen tools binaries from the Alpine Linux build job. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx> Acked-by: Wei Liu <wl@xxxxxxx> --- automation/gitlab-ci/test.yaml | 24 ++++++++++ automation/scripts/build | 1 + automation/scripts/qemu-alpine-arm64.sh | 85 +++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+) diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 35346e3f6e..a291538d68 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -22,6 +22,30 @@ build-each-commit-gcc: - /^coverity-tested\/.*/ - /^stable-.*/ +qemu-alpine-arm64-gcc: + stage: test + image: registry.gitlab.com/xen-project/xen/${CONTAINER} + variables: + CONTAINER: debian:unstable-arm64v8 + script: + - ./automation/scripts/qemu-alpine-arm64.sh 2>&1 | tee qemu-smoke-arm64.log + dependencies: + - alpine-3.12-gcc-arm64 + - alpine-3.12-arm64-rootfs-export + - kernel-5.9.9-arm64-export + artifacts: + paths: + - smoke.serial + - '*.log' + when: always + tags: + - arm64 + except: + - master + - smoke + - /^coverity-tested\/.*/ + - /^stable-.*/ + qemu-smoke-arm64-gcc: stage: test image: registry.gitlab.com/xen-project/xen/${CONTAINER} diff --git a/automation/scripts/build b/automation/scripts/build index 959a26d084..d8990c3bf4 100755 --- a/automation/scripts/build +++ b/automation/scripts/build @@ -55,6 +55,7 @@ cp xen/.config xen-config mkdir binaries if [[ "${XEN_TARGET_ARCH}" != "x86_32" ]]; then cp xen/xen binaries/xen + cp -r dist binaries/ fi # Build all the configs we care about diff --git a/automation/scripts/qemu-alpine-arm64.sh b/automation/scripts/qemu-alpine-arm64.sh new file mode 100755 index 0000000000..62aae2d4c8 --- /dev/null +++ b/automation/scripts/qemu-alpine-arm64.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +set -ex + +apt-get -qy update +apt-get -qy install --no-install-recommends qemu-system-aarch64 \ + u-boot-qemu \ + u-boot-tools \ + device-tree-compiler \ + cpio \ + curl + +mkdir -p binaries/rootfs +cd binaries/rootfs +tar xvzf ../initrd.tar.gz +mkdir proc +mkdir run +mkdir srv +mkdir sys +rm var/run +cp -ar ../dist/install/* . +echo "#!/bin/bash + +export LD_LIBRARY_PATH=/usr/local/lib +bash /etc/init.d/xencommons start + +xl list + +" > etc/local.d/xen.start +chmod +x etc/local.d/xen.start +echo "rc_verbose=yes" >> etc/rc.conf +find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz +cd ../.. + +# XXX Silly workaround to get the following QEMU command to work +# QEMU looks for "efi-virtio.rom" even if it is unneeded +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 1024 -display none \ + -machine dumpdtb=binaries/virt-gicv3.dtb +# XXX disable pl061 to avoid Linux crash +dtc -I dtb -O dts binaries/virt-gicv3.dtb > binaries/virt-gicv3.dts +sed 's/compatible = "arm,pl061.*/status = "disabled";/g' binaries/virt-gicv3.dts > binaries/virt-gicv3-edited.dts +dtc -I dts -O dtb binaries/virt-gicv3-edited.dts > binaries/virt-gicv3.dtb + +# ImageBuilder +echo 'MEMORY_START="0x40000000" +MEMORY_END="0x80000000" + +DEVICE_TREE="virt-gicv3.dtb" +XEN="xen" +DOM0_KERNEL="Image" +DOM0_RAMDISK="xen-rootfs.cpio.gz" +XEN_CMD="console=dtuart dom0_mem=1024M" + +NUM_DOMUS=0 + +LOAD_CMD="tftpb" +UBOOT_SOURCE="boot.source" +UBOOT_SCRIPT="boot.scr"' > binaries/config +rm -rf imagebuilder +git clone https://gitlab.com/ViryaOS/imagebuilder +bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/config + + +# Run the test +rm -f smoke.serial +set +e +echo " virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"| \ +timeout -k 1 480 \ +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 |& tee smoke.serial + +set -e +grep -q "Domain-0" smoke.serial || exit 1 +exit 0 -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |