On 02/10/2024 1:42 pm, Marek Marczykowski-Górecki wrote:
> Check if xen.efi is bootable with an XTF dom0.
>
> The TEST_TIMEOUT is set in the script to override project-global value.
> Setting it in the gitlab yaml file doesn't work, as it's too low
> priority
> (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
>
> The multiboot2+EFI path is tested on hardware tests already.
>
> Signed-off-by: Marek Marczykowski-Górecki <marma...@invisiblethingslab.com>
> ---
> This requires rebuilding debian:bookworm container.

Noted.

>
> The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
> not clear to me why the default TEST_TIMEOUT is set at the group level
> instead of in the yaml file, so I'm not adjusting the other places.

I'll leave that side of things to Stefano.

> ---
>  automation/build/debian/bookworm.dockerfile |  1 +
>  automation/gitlab-ci/test.yaml              |  7 ++++
>  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
>  3 files changed, 52 insertions(+)
>  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
>
> diff --git a/automation/build/debian/bookworm.dockerfile 
> b/automation/build/debian/bookworm.dockerfile
> index 3dd70cb6b2e3..061114ba522d 100644
> --- a/automation/build/debian/bookworm.dockerfile
> +++ b/automation/build/debian/bookworm.dockerfile
> @@ -46,6 +46,7 @@ RUN apt-get update && \
>          # for test phase, qemu-smoke-* jobs
>          qemu-system-x86 \
>          expect \

# for test phase efi jobs

> +        ovmf \
>          # for test phase, qemu-alpine-* jobs
>          cpio \
>          busybox-static \
> diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh 
> b/automation/scripts/qemu-smoke-x86-64-efi.sh
> new file mode 100755
> index 000000000000..e053cfa995ba
> --- /dev/null
> +++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
> @@ -0,0 +1,44 @@
> +#!/bin/bash
> +
> +set -ex -o pipefail
> +
> +# variant should be either pv or pvh
> +variant=$1
> +
> +# Clone and build XTF
> +git clone https://xenbits.xen.org/git-http/xtf.git
> +cd xtf && make -j$(nproc) && cd -

make -C xtf -j$(nproc)

I still haven't got XTF nicely working in Gitlab CI, but if my plans
work out, we will be able to replace this with a job-level artefact import.


> +
> +case $variant in
> +    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
> +    *)   k=test-pv64-example     extra= ;;
> +esac
> +
> +mkdir -p boot-esp/EFI/BOOT
> +cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
> +cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel

Looking at this split, I'd suggest having

k=example/test-... in the case, and cp xtf/tests/$k boot-... here.

That way, it's easier to swap out e.g. k=selftest/test-pv64-selftest


> +
> +cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
> +[global]
> +default=test
> +
> +[test]
> +options=loglvl=all console=com1 noreboot console_timestamps=boot $extra

Bah - we still can't select the timestamp mode at Kconfig time, can we. 
Because that would have been helpful...

Something for the todo list.  Individual tests should not be needing to
arrange this.

I think you can drop the loglvl=all.  That (and guest_loglvl, and
CONFIG_VERBOSE which you depend on) is already arranged by virtue of
using a debug Xen.  I don't think this is liable to change.

> +kernel=kernel
> +EOF
> +
> +cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
> +cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
> +
> +rm -f smoke.serial
> +export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
> +        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
> +        -drive if=pflash,format=raw,file=OVMF_VARS.fd \

Why do you copy OVMF_*.fd out of /usr/share to the local dir, then pass
them as paths here?

Can't qemu be pointed at /usr/share directly?

~Andrew

Reply via email to