mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
automation: Add a new job for testing boot time cpupools on arm64
Add a new test job qemu-smoke-arm64-gcc-boot-cpupools that will execute script qemu-smoke-arm64.sh to test boot time cpupools feature. Enable CONFIG_BOOT_TIME_CPUPOOLS for the arm64 build and add a new test case in qemu-smoke-arm64.sh that if selected will make use of the ImageBuilder feature to create cpupool with cpu@1, null scheduler and assign it to domU. Add a check in dom0 xen.start to see if domU is assigned a Pool-1 with null scheduler. Take the opportunity to refactor the qemu-smoke-arm64.sh script as follows: - use domU_check to store the test's commands to be run from domU - use dom0_check to store the test's commands to be run from dom0 - use fdtput instead of sed to perform dtb modifications - use more meaningful messages for "passed" variable. This way we can grep for messages reported either by domU or dom0 and get rid of assumption that tests can only be run from domU Signed-off-by: Michal Orzel <michal.orzel@amd.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
1 parent
e17ca18747
commit
36e3f41587
3 files changed
+48
-10
No files matched your search
@@ -100,6 +100,25 @@ qemu-smoke-arm64-gcc-staticmem:
|
||||
tags:
|
||||
- arm64
|
||||
|
||||
qemu-smoke-arm64-gcc-boot-cpupools:
|
||||
extends: .test-jobs-common
|
||||
variables:
|
||||
CONTAINER: debian:unstable-arm64v8
|
||||
script:
|
||||
- ./automation/scripts/qemu-smoke-arm64.sh boot-cpupools 2>&1 | tee qemu-smoke-arm64.log
|
||||
needs:
|
||||
- alpine-3.12-gcc-arm64
|
||||
- alpine-3.12-arm64-rootfs-export
|
||||
- kernel-5.19-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:
|
||||
|
||||
@@ -19,7 +19,8 @@ else
|
||||
echo "
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_UNSUPPORTED=y
|
||||
CONFIG_STATIC_MEMORY=y" > xen/.config
|
||||
CONFIG_STATIC_MEMORY=y
|
||||
CONFIG_BOOT_TIME_CPUPOOLS=y" > xen/.config
|
||||
make -j$(nproc) -C xen olddefconfig
|
||||
else
|
||||
make -j$(nproc) -C xen defconfig
|
||||
|
||||
@@ -4,20 +4,22 @@ set -ex
|
||||
|
||||
test_variant=$1
|
||||
|
||||
passed="passed"
|
||||
check="
|
||||
if [ -z "${test_variant}" ]; then
|
||||
passed="ping test passed"
|
||||
domU_check="
|
||||
until ifconfig eth0 192.168.0.2 &> /dev/null && ping -c 10 192.168.0.1; do
|
||||
sleep 30
|
||||
done
|
||||
echo \"${passed}\"
|
||||
"
|
||||
fi
|
||||
|
||||
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="
|
||||
domU_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
|
||||
@@ -26,6 +28,16 @@ fi
|
||||
"
|
||||
fi
|
||||
|
||||
if [[ "${test_variant}" == "boot-cpupools" ]]; then
|
||||
# Check if domU0 (id=1) is assigned to Pool-1 with null scheduler
|
||||
passed="${test_variant} test passed"
|
||||
dom0_check="
|
||||
if xl list -c 1 | grep -q Pool-1 && xl cpupool-list Pool-1 | grep -q Pool-1; then
|
||||
echo ${passed}
|
||||
fi
|
||||
"
|
||||
fi
|
||||
|
||||
export DEBIAN_FRONTENT=noninteractive
|
||||
apt-get -qy update
|
||||
apt-get -qy install --no-install-recommends u-boot-qemu \
|
||||
@@ -42,11 +54,9 @@ curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
|
||||
-cpu cortex-a57 -machine type=virt \
|
||||
-m 1024 -smp 2 -display none \
|
||||
-machine dumpdtb=binaries/virt-gicv2.dtb
|
||||
# XXX disable pl061 to avoid Linux crash
|
||||
dtc -I dtb -O dts binaries/virt-gicv2.dtb > binaries/virt-gicv2.dts
|
||||
sed 's/compatible = "arm,pl061.*/status = "disabled";/g' binaries/virt-gicv2.dts > binaries/virt-gicv2-edited.dts
|
||||
dtc -I dts -O dtb binaries/virt-gicv2-edited.dts > binaries/virt-gicv2.dtb
|
||||
|
||||
# XXX disable pl061 to avoid Linux crash
|
||||
fdtput binaries/virt-gicv2.dtb -p -t s /pl061@9030000 status disabled
|
||||
|
||||
# Busybox
|
||||
mkdir -p initrd
|
||||
@@ -66,7 +76,7 @@ echo "#!/bin/sh
|
||||
mount -t proc proc /proc
|
||||
mount -t sysfs sysfs /sys
|
||||
mount -t devtmpfs devtmpfs /dev
|
||||
${check}
|
||||
${domU_check}
|
||||
/bin/sh" > initrd/init
|
||||
chmod +x initrd/init
|
||||
cd initrd
|
||||
@@ -98,6 +108,7 @@ ifconfig xenbr0 up
|
||||
ifconfig xenbr0 192.168.0.1
|
||||
|
||||
xl network-attach 1 type=vif
|
||||
${dom0_check}
|
||||
" > etc/local.d/xen.start
|
||||
chmod +x etc/local.d/xen.start
|
||||
echo "rc_verbose=yes" >> etc/rc.conf
|
||||
@@ -127,6 +138,13 @@ if [[ "${test_variant}" == "static-mem" ]]; then
|
||||
echo -e "\nDOMU_STATIC_MEM[0]=\"0x${domu_base} 0x${domu_size}\"" >> binaries/config
|
||||
fi
|
||||
|
||||
if [[ "${test_variant}" == "boot-cpupools" ]]; then
|
||||
echo '
|
||||
CPUPOOL[0]="cpu@1 null"
|
||||
DOMU_CPUPOOL[0]=0
|
||||
NUM_CPUPOOLS=1' >> 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
|
||||
@@ -148,5 +166,5 @@ timeout -k 1 240 \
|
||||
-bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial
|
||||
|
||||
set -e
|
||||
(grep -q "^Welcome to Alpine Linux" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
|
||||
(grep -q "^Welcome to Alpine Linux" smoke.serial && grep -q "${passed}" smoke.serial) || exit 1
|
||||
exit 0
|
||||