[PATCH v3 3/3] automation: expand arm32 dom0 test adding xl domain creation

Stefano Stabellini posted 3 patches 1 year, 9 months ago
[PATCH v3 3/3] automation: expand arm32 dom0 test adding xl domain creation
Posted by Stefano Stabellini 1 year, 9 months ago
From: Stefano Stabellini <stefano.stabellini@amd.com>

As part of the arm32 dom0 test, also create a simple domU using xl. To
do that, we need the toolstack installed in the dom0 rootfs. We switch
to using the kernel and rootfs built by the Yocto arm32 job.

Remove the PCI node from the host device tree: it is unused but causes a
Linux hang at boot.

Use xen-watchdog to trigger the domU creation for convience
(/etc/local.d is not handled by rootfs.)

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
---
Changes in v2:
- remove unsued debian-unstable-gcc-arm32 dependency for
qemu-smoke-dom0-arm32-gcc
- remove job qemu-smoke-dom0-arm32-gcc-debug as it doesn't make sense
anymore
- grep for both dom0 and domU prompts in qemu-smoke-dom0-arm32.sh
---
 automation/gitlab-ci/test.yaml              | 11 +----
 automation/scripts/qemu-smoke-dom0-arm32.sh | 52 +++++++++++++++------
 2 files changed, 41 insertions(+), 22 deletions(-)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 00273b21c8..6d09c97702 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -171,15 +171,7 @@ qemu-smoke-dom0-arm32-gcc:
     - ./automation/scripts/qemu-smoke-dom0-arm32.sh 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-unstable-gcc-arm32
-
-qemu-smoke-dom0-arm32-gcc-debug:
-  extends: .qemu-arm32
-  script:
-    - ./automation/scripts/qemu-smoke-dom0-arm32.sh 2>&1 | tee ${LOGFILE}
-  needs:
-    - *arm32-test-needs
-    - debian-unstable-gcc-arm32-debug
+    - yocto-qemuarm
 
 qemu-smoke-dom0less-arm32-gcc:
   extends: .qemu-arm32
@@ -244,6 +236,7 @@ qemu-smoke-dom0less-arm32-gcc-debug-without-dom0:
   needs:
     - *arm32-test-needs
     - debian-unstable-gcc-arm32-debug
+    - yocto-qemuarm
 
 qemu-alpine-x86_64-gcc:
   extends: .qemu-x86-64
diff --git a/automation/scripts/qemu-smoke-dom0-arm32.sh b/automation/scripts/qemu-smoke-dom0-arm32.sh
index 98e4d481f6..2c80df089f 100755
--- a/automation/scripts/qemu-smoke-dom0-arm32.sh
+++ b/automation/scripts/qemu-smoke-dom0-arm32.sh
@@ -3,14 +3,37 @@
 set -ex
 
 cd binaries
-# Use the kernel from Debian
-curl --fail --silent --show-error --location --output vmlinuz http://http.us.debian.org/debian/dists/bullseye/main/installer-armhf/current/images/netboot/vmlinuz
-# Use a tiny initrd based on busybox from Alpine Linux
-curl --fail --silent --show-error --location --output initrd.tar.gz https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/armhf/alpine-minirootfs-3.15.1-armhf.tar.gz
 
+mkdir rootfs
+cd rootfs
+tar xvf ../xen-image-minimal-qemuarm.tar.bz2
+mkdir -p ./root
+echo "name=\"test\"
+memory=400
+vcpus=1
+kernel=\"/root/zImage\"
+ramdisk=\"/root/initrd.cpio.gz\"
+extra=\"console=hvc0 root=/dev/ram0 rdinit=/bin/sh\"
+" > root/test.cfg
+echo "#!/bin/bash
+
+xl list
+
+xl create -c /root/test.cfg
+
+" > ./root/xen.start
+echo "bash /root/xen.start" >> ./etc/init.d/xen-watchdog
+
+curl --fail --silent --show-error --location --output initrd.tar.gz https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/armhf/alpine-minirootfs-3.15.1-armhf.tar.gz
 mkdir rootfs
 cd rootfs
 tar xvzf ../initrd.tar.gz
+find . | cpio -H newc -o | gzip > ../root/initrd.cpio.gz
+cd ..
+rm -rf rootfs
+rm initrd.tar.gz
+
+cp ../zImage ./root
 find . | cpio -H newc -o | gzip > ../initrd.gz
 cd ..
 
@@ -20,22 +43,25 @@ curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
    -machine virt \
    -machine virtualization=true \
    -smp 4 \
-   -m 1024 \
+   -m 2048 \
    -serial stdio \
    -monitor none \
    -display none \
    -machine dumpdtb=virt.dtb
 
+# XXX disable pci to avoid Linux hang
+fdtput virt.dtb -p -t s /pcie@10000000 status disabled
+
 # ImageBuilder
 echo 'MEMORY_START="0x40000000"
-MEMORY_END="0x80000000"
+MEMORY_END="0xC0000000"
 
 DEVICE_TREE="virt.dtb"
-XEN="xen"
-DOM0_KERNEL="vmlinuz"
+XEN="xen-qemuarm"
+DOM0_KERNEL="zImage"
 DOM0_RAMDISK="initrd.gz"
-DOM0_CMD="console=hvc0 earlyprintk clk_ignore_unused root=/dev/ram0 rdinit=/bin/sh"
-XEN_CMD="console=dtuart dom0_mem=512M bootscrub=0"
+DOM0_CMD="console=hvc0 earlyprintk clk_ignore_unused root=/dev/ram0 rdinit=/sbin/init"
+XEN_CMD="console=dtuart dom0_mem=1024M bootscrub=0"
 
 NUM_DOMUS=0
 
@@ -51,12 +77,12 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config
 rm -f smoke.serial
 set +e
 echo "  virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"| \
-timeout -k 1 240 \
+timeout -k 1 720 \
 ./qemu-system-arm \
    -machine virt \
    -machine virtualization=true \
    -smp 4 \
-   -m 1024 \
+   -m 2048 \
    -serial stdio \
    -monitor none \
    -display none \
@@ -66,5 +92,5 @@ timeout -k 1 240 \
    -bios /usr/lib/u-boot/qemu_arm/u-boot.bin |& tee smoke.serial
 
 set -e
-(grep -q "^/ #" smoke.serial) || exit 1
+(grep -q "Domain-0" smoke.serial && grep -q "^/ #" smoke.serial) || exit 1
 exit 0
-- 
2.25.1
Re: [PATCH v3 3/3] automation: expand arm32 dom0 test adding xl domain creation
Posted by Michal Orzel 1 year, 9 months ago
Hi Stefano,

On 18/02/2023 01:07, Stefano Stabellini wrote:
> 
> 
> From: Stefano Stabellini <stefano.stabellini@amd.com>
> 
> As part of the arm32 dom0 test, also create a simple domU using xl. To
> do that, we need the toolstack installed in the dom0 rootfs. We switch
> to using the kernel and rootfs built by the Yocto arm32 job.
> 
> Remove the PCI node from the host device tree: it is unused but causes a
> Linux hang at boot.
> 
> Use xen-watchdog to trigger the domU creation for convience
> (/etc/local.d is not handled by rootfs.)
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
> ---
> Changes in v2:
> - remove unsued debian-unstable-gcc-arm32 dependency for
> qemu-smoke-dom0-arm32-gcc
> - remove job qemu-smoke-dom0-arm32-gcc-debug as it doesn't make sense
> anymore
> - grep for both dom0 and domU prompts in qemu-smoke-dom0-arm32.sh
> ---
>  automation/gitlab-ci/test.yaml              | 11 +----
>  automation/scripts/qemu-smoke-dom0-arm32.sh | 52 +++++++++++++++------
>  2 files changed, 41 insertions(+), 22 deletions(-)
> 
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index 00273b21c8..6d09c97702 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -171,15 +171,7 @@ qemu-smoke-dom0-arm32-gcc:
>      - ./automation/scripts/qemu-smoke-dom0-arm32.sh 2>&1 | tee ${LOGFILE}
>    needs:
>      - *arm32-test-needs
> -    - debian-unstable-gcc-arm32
> -
> -qemu-smoke-dom0-arm32-gcc-debug:
> -  extends: .qemu-arm32
> -  script:
> -    - ./automation/scripts/qemu-smoke-dom0-arm32.sh 2>&1 | tee ${LOGFILE}
> -  needs:
> -    - *arm32-test-needs
> -    - debian-unstable-gcc-arm32-debug
> +    - yocto-qemuarm
> 
>  qemu-smoke-dom0less-arm32-gcc:
>    extends: .qemu-arm32
> @@ -244,6 +236,7 @@ qemu-smoke-dom0less-arm32-gcc-debug-without-dom0:
>    needs:
>      - *arm32-test-needs
>      - debian-unstable-gcc-arm32-debug
> +    - yocto-qemuarm
I assume this was placed here by accident as this is a dom0less arm32 test.
With this removed:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal