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:
- add yocto-qemuarm also to qemu-smoke-dom0-arm32-gcc-debug
---
automation/gitlab-ci/test.yaml | 2 +
automation/scripts/qemu-smoke-dom0-arm32.sh | 50 ++++++++++++++++-----
2 files changed, 40 insertions(+), 12 deletions(-)
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 9570085a60..77bb1c362d 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -172,6 +172,7 @@ qemu-smoke-dom0-arm32-gcc:
needs:
- *arm32-test-needs
- debian-unstable-gcc-arm32
+ - yocto-qemuarm
qemu-smoke-dom0-arm32-gcc-debug:
extends: .qemu-arm32
@@ -180,6 +181,7 @@ qemu-smoke-dom0-arm32-gcc-debug:
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..7a748bdf23 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 \
--
2.25.1
Hi Stefano, On 15/02/2023 23:09, 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. FWICS, you also use xen produced by the yocto build. This is why... > > 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: > - add yocto-qemuarm also to qemu-smoke-dom0-arm32-gcc-debug > --- > automation/gitlab-ci/test.yaml | 2 + > automation/scripts/qemu-smoke-dom0-arm32.sh | 50 ++++++++++++++++----- > 2 files changed, 40 insertions(+), 12 deletions(-) > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index 9570085a60..77bb1c362d 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -172,6 +172,7 @@ qemu-smoke-dom0-arm32-gcc: > needs: > - *arm32-test-needs > - debian-unstable-gcc-arm32 > + - yocto-qemuarm > > qemu-smoke-dom0-arm32-gcc-debug: > extends: .qemu-arm32 > @@ -180,6 +181,7 @@ qemu-smoke-dom0-arm32-gcc-debug: > needs: > - *arm32-test-needs > - debian-unstable-gcc-arm32-debug > + - yocto-qemuarm ... I think there is no need for debian-unstable-gcc-arm32 which was here to provide just a xen binary. Also, with your change, it does not make sense to keep debug and non-debug versions of this job as it does not apply to Yocto builds. > > 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..7a748bdf23 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" > With the introduction of dom0, I think it makes sense to grep for both dom0 prompt and domU prompt just like we do for arm64. ~Michal
© 2016 - 2024 Red Hat, Inc.