At the moment, all the Arm64 Qemu tests use GICv2 which is the default GIC version used by Qemu. Improve the coverage by adding a new test in which Qemu will be configured to have GICv3.
Rename host device tree name to "virt.dtb" to be GIC version agnostic. Use "gic-version" Qemu option to select the version to use. Unless the test variant is set to "gicv3", version 2 will be used. Signed-off-by: Michal Orzel <michal.or...@amd.com> --- automation/gitlab-ci/test.yaml | 8 ++++++++ .../scripts/qemu-smoke-dom0less-arm64.sh | 19 ++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 1e5d86763f6c..ad249fa0a5d9 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -255,6 +255,14 @@ qemu-smoke-dom0less-arm64-gcc-debug: - *arm64-test-needs - alpine-3.18-gcc-debug-arm64 +qemu-smoke-dom0less-arm64-gcc-debug-gicv3: + extends: .qemu-arm64 + script: + - ./automation/scripts/qemu-smoke-dom0less-arm64.sh gicv3 2>&1 | tee ${LOGFILE} + needs: + - *arm64-test-needs + - alpine-3.18-gcc-debug-arm64 + qemu-smoke-dom0less-arm64-gcc-debug-staticmem: extends: .qemu-arm64 script: diff --git a/automation/scripts/qemu-smoke-dom0less-arm64.sh b/automation/scripts/qemu-smoke-dom0less-arm64.sh index fc943a1a622c..292c38a56147 100755 --- a/automation/scripts/qemu-smoke-dom0less-arm64.sh +++ b/automation/scripts/qemu-smoke-dom0less-arm64.sh @@ -4,6 +4,9 @@ set -ex test_variant=$1 +# Default GIC version +gic_version="2" + if [ -z "${test_variant}" ]; then passed="ping test passed" domU_check=" @@ -66,16 +69,22 @@ if [[ "${test_variant}" == "earlyprintk" ]]; then passed="\- Ready \-" fi +if [[ "${test_variant}" == "gicv3" ]]; then + gic_version=3 + passed="${test_variant} test passed" + domU_check="echo \"${passed}\"" +fi + # 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 \ + -cpu cortex-a57 -machine type=virt,gic-version=$gic_version \ -m 2048 -smp 2 -display none \ - -machine dumpdtb=binaries/virt-gicv2.dtb + -machine dumpdtb=binaries/virt.dtb # XXX disable pl061 to avoid Linux crash -fdtput binaries/virt-gicv2.dtb -p -t s /pl061@9030000 status disabled +fdtput binaries/virt.dtb -p -t s /pl061@9030000 status disabled # Busybox mkdir -p initrd @@ -138,7 +147,7 @@ cd .. echo 'MEMORY_START="0x40000000" MEMORY_END="0x50000000" -DEVICE_TREE="virt-gicv2.dtb" +DEVICE_TREE="virt.dtb" XEN="xen" DOM0_KERNEL="Image" DOM0_RAMDISK="dom0-rootfs.cpio.gz" @@ -200,7 +209,7 @@ echo " virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"| \ timeout -k 1 240 \ ./binaries/qemu-system-aarch64 \ -machine virtualization=true \ - -cpu cortex-a57 -machine type=virt \ + -cpu cortex-a57 -machine type=virt,gic-version=$gic_version \ -m 2048 -monitor none -serial stdio \ -smp 2 \ -no-reboot \ -- 2.25.1