[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [for-4.17 v2 3/3] automation: Add a new job for testing boot time cpupools on arm64
On Thu, 8 Sep 2022, Michal Orzel wrote: > 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@xxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > Changes in v2: > - use ImageBuilder feature to create boot-time cpupools > - also check if the scheduler is set up properly > --- > automation/gitlab-ci/test.yaml | 19 ++++++++++++++ > automation/scripts/build | 3 ++- > automation/scripts/qemu-smoke-arm64.sh | 36 +++++++++++++++++++------- > 3 files changed, 48 insertions(+), 10 deletions(-) > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index 07209820b474..d899b3bdbf7a 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -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: > diff --git a/automation/scripts/build b/automation/scripts/build > index 2b9f2d2b541a..2f15ab3198e6 100755 > --- a/automation/scripts/build > +++ b/automation/scripts/build > @@ -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 > diff --git a/automation/scripts/qemu-smoke-arm64.sh > b/automation/scripts/qemu-smoke-arm64.sh > index 7ac96027760d..f803835779f4 100755 > --- a/automation/scripts/qemu-smoke-arm64.sh > +++ b/automation/scripts/qemu-smoke-arm64.sh > @@ -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 > -- > 2.25.1 >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |