Message ID | 20230215220925.2313528-3-sstabellini@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | automation: add arm32 xl domU creation test | expand |
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
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 \