Mailing List Archive

[xen staging] automation: Add arm64 test for running Xen with GICv3
commit 31d6b5b4a7c84818294dacca7a07e92f52393c9d
Author: Michal Orzel <michal.orzel@amd.com>
AuthorDate: Tue Apr 23 18:11:21 2024 +0200
Commit: Stefano Stabellini <stefano.stabellini@amd.com>
CommitDate: Wed Apr 24 16:51:53 2024 -0700

automation: Add arm64 test for running Xen with GICv3

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.orzel@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
automation/gitlab-ci/test.yaml | 8 ++++++++
automation/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 1e5d86763f..ad249fa0a5 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 fc943a1a62..292c38a561 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 \
--
generated by git-patchbot for /home/xen/git/xen.git#staging