mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
automation: arm64: Create a test job for testing static allocation on qemu
Enable CONFIG_STATIC_MEMORY in the existing arm64 build. Create a new test job, called qemu-smoke-arm64-gcc-staticmem. Adjust qemu-smoke-arm64.sh script to accomodate the static memory test as a new test variant. The test variant is determined based on the first argument passed to the script. For testing static memory, the argument is 'static-mem'. The test configures DOM1 with a static memory region and adds a check in the init script. The check consists in comparing the contents of the /proc/device-tree memory entry with the static memory range with which DOM1 was configured. If the memory layout is correct, a message gets printed by DOM1. At the end of the qemu run, the script searches for the specific message in the logs and fails if not found. Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com> Reviewed-by: Penny Zheng <penny.zheng@arm.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
1 parent
37339ba9ef
commit
108e6f282d
3 files changed
+53
-2
No files matched your search
@@ -80,6 +80,24 @@ qemu-smoke-arm64-gcc:
|
||||
tags:
|
||||
- arm64
|
||||
|
||||
qemu-smoke-arm64-gcc-staticmem:
|
||||
extends: .test-jobs-common
|
||||
variables:
|
||||
CONTAINER: debian:unstable-arm64v8
|
||||
script:
|
||||
- ./automation/scripts/qemu-smoke-arm64.sh static-mem 2>&1 | tee qemu-smoke-arm64.log
|
||||
needs:
|
||||
- debian-unstable-gcc-arm64
|
||||
- kernel-5.9.9-arm64-export
|
||||
- qemu-system-aarch64-6.0.0-arm64-export
|
||||
artifacts:
|
||||
paths:
|
||||
- smoke.serial
|
||||
- '*.log'
|
||||
when: always
|
||||
tags:
|
||||
- arm64
|
||||
|
||||
qemu-smoke-arm32-gcc:
|
||||
extends: .test-jobs-common
|
||||
variables:
|
||||
|
||||
@@ -15,7 +15,15 @@ if [[ "${RANDCONFIG}" == "y" ]]; then
|
||||
make -j$(nproc) -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig
|
||||
hypervisor_only="y"
|
||||
else
|
||||
make -j$(nproc) -C xen defconfig
|
||||
if [[ "${XEN_TARGET_ARCH}" = "arm64" ]]; then
|
||||
echo "
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_UNSUPPORTED=y
|
||||
CONFIG_STATIC_MEMORY=y" > xen/.config
|
||||
make -j$(nproc) -C xen olddefconfig
|
||||
else
|
||||
make -j$(nproc) -C xen defconfig
|
||||
fi
|
||||
fi
|
||||
|
||||
# Save the config file before building because build failure causes the script
|
||||
|
||||
@@ -2,6 +2,25 @@
|
||||
|
||||
set -ex
|
||||
|
||||
test_variant=$1
|
||||
|
||||
passed="BusyBox"
|
||||
check=""
|
||||
|
||||
if [[ "${test_variant}" == "static-mem" ]]; then
|
||||
# Memory range that is statically allocated to DOM1
|
||||
domu_base="50000000"
|
||||
domu_size="10000000"
|
||||
passed="${test_variant} test passed"
|
||||
check="
|
||||
current=\$(hexdump -e '16/1 \"%02x\"' /proc/device-tree/memory@${domu_base}/reg 2>/dev/null)
|
||||
expected=$(printf \"%016x%016x\" 0x${domu_base} 0x${domu_size})
|
||||
if [[ \"\${expected}\" == \"\${current}\" ]]; then
|
||||
echo \"${passed}\"
|
||||
fi
|
||||
"
|
||||
fi
|
||||
|
||||
# Install QEMU
|
||||
export DEBIAN_FRONTENT=noninteractive
|
||||
apt-get -qy update
|
||||
@@ -43,6 +62,7 @@ echo "#!/bin/sh
|
||||
mount -t proc proc /proc
|
||||
mount -t sysfs sysfs /sys
|
||||
mount -t devtmpfs devtmpfs /dev
|
||||
${check}
|
||||
/bin/sh" > initrd/init
|
||||
chmod +x initrd/init
|
||||
cd initrd
|
||||
@@ -68,6 +88,11 @@ DOMU_MEM[0]="256"
|
||||
LOAD_CMD="tftpb"
|
||||
UBOOT_SOURCE="boot.source"
|
||||
UBOOT_SCRIPT="boot.scr"' > binaries/config
|
||||
|
||||
if [[ "${test_variant}" == "static-mem" ]]; then
|
||||
echo -e "\nDOMU_STATIC_MEM[0]=\"0x${domu_base} 0x${domu_size}\"" >> binaries/config
|
||||
fi
|
||||
|
||||
rm -rf imagebuilder
|
||||
git clone https://gitlab.com/ViryaOS/imagebuilder
|
||||
bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/config
|
||||
@@ -89,5 +114,5 @@ timeout -k 1 240 \
|
||||
-bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial
|
||||
|
||||
set -e
|
||||
(grep -q "^BusyBox" smoke.serial && grep -q "DOM1: BusyBox" smoke.serial) || exit 1
|
||||
(grep -q "^BusyBox" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
|
||||
exit 0
|
||||