From: Mikko Rapeli <mikko.rapeli@linaro.org>
To: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH 3/3] oeqa selftest uboot.py: add qemu KVM test case
Date: Fri, 23 May 2025 12:42:30 +0300 [thread overview]
Message-ID: <aDBDBgkopuFquYBZ@nuoska> (raw)
In-Reply-To: <1841DD2A7A0AA7E1.3062@lists.openembedded.org>
Hi,
On Thu, May 22, 2025 at 04:41:16PM +0300, Mikko Rapeli via lists.openembedded.org wrote:
> Add a test case to boot target system via u-boot
> using qemu with KVM. This was broken recently
> and workaround proposed to u-boot. Test case
> works with genericarm64 and qemuarm64 target machines
> compiled and tested on aarch64 build host with KVM
> support.
>
> Test execution time with full sstate cache is
> around 170 seconds. qemu boot itself takes just
> a few seconds to full userspace.
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> ---
> meta/lib/oeqa/selftest/cases/uboot.py | 55 ++++++++++++++++++++++++++-
> 1 file changed, 53 insertions(+), 2 deletions(-)
>
> diff --git a/meta/lib/oeqa/selftest/cases/uboot.py b/meta/lib/oeqa/selftest/cases/uboot.py
> index 39e48f8bdb..982822b389 100644
> --- a/meta/lib/oeqa/selftest/cases/uboot.py
> +++ b/meta/lib/oeqa/selftest/cases/uboot.py
> @@ -6,8 +6,8 @@
> #
>
> from oeqa.selftest.case import OESelftestTestCase
> -from oeqa.utils.commands import bitbake, runqemu, get_bb_var
> -from oeqa.core.decorator.data import skipIfNotArch
> +from oeqa.utils.commands import bitbake, runqemu, get_bb_var, runCmd
> +from oeqa.core.decorator.data import skipIfNotArch, skipIfNotMachine
> from oeqa.core.decorator import OETestTag
>
> uboot_boot_patterns = {
> @@ -42,3 +42,54 @@ QEMU_USE_KVM = "False"
> status, output = qemu.run_serial(cmd)
> self.assertEqual(status, 1, msg=output)
> self.assertTrue("U-Boot" in output, msg=output)
> +
> + @skipIfNotArch(['aarch64'])
> + # Also works on genericarm64 but no way to encode that currently
> + @skipIfNotMachine('qemuarm64', 'KVM depends that host and target architectures match, e.g. aarch64 and qemuarm64')
On second thought, these are not quite right. I think HOST_ARCH limit
to "aarch64" is ok but will still cause this to run on x86_64 build machines
which will not work. I think I need to add a BUILD_ARCH decorator to limit this to
run on 'aarch64' build host when building 'aarch64' targets. Then
KVM can work.
I'll update the changes.
Cheers,
-Mikko
> + @OETestTag("runqemu")
> + def test_boot_uboot_kvm_to_full_target(self):
> + """
> + Tests building u-boot and booting it with QEMU and KVM.
> + Requires working KVM on build host. See "kvm-ok" output.
> + """
> +
> + runCmd("kvm-ok")
> +
> + self.write_config("""
> +QEMU_USE_KVM = "1"
> +
> +# Using u-boot in EFI mode, need ESP partition for grub/systemd-boot/kernel etc
> +IMAGE_FSTYPES:pn-core-image-minimal:append = " wic"
> +
> +# easiest to follow genericarm64 setup with wks file, initrd and EFI loader
> +INITRAMFS_IMAGE="core-image-initramfs-boot"
> +EFI_PROVIDER = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd-boot", "grub-efi", d)}"
> +WKS_FILE = "genericarm64.wks.in"
> +
> +# use wic image with ESP for u-boot, not ext4
> +QB_DEFAULT_FSTYPE = "wic"
> +
> +PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
> +QB_DEFAULT_BIOS = "u-boot.bin"
> +
> +# let u-boot or EFI loader load kernel from ESP
> +QB_DEFAULT_KERNEL = "none"
> +
> +# virt pci, not scsi because support not in u-boot to find ESP
> +QB_DRIVE_TYPE = "vd"
> +# qemu usb causes u-boot reset atm
> +QB_OPT_APPEND = ""
> +""")
> + bitbake("virtual/bootloader core-image-minimal")
> +
> + runqemu_params = get_bb_var('TEST_RUNQEMUPARAMS', "core-image-minimal") or ""
> + with runqemu('core-image-minimal', ssh=False, runqemuparams='nographic kvm %s' % runqemu_params) as qemu:
> +
> + # boot to target and login worked, should have been fast with kvm
> + cmd = "dmesg"
> + status, output = qemu.run_serial(cmd)
> + self.assertEqual(status, 1, msg=output)
> + # Machine is qemu
> + self.assertTrue("Machine model: linux,dummy-virt" in output, msg=output)
> + # with KVM enabled
> + self.assertTrue("KVM: hypervisor services detected" in output, msg=output)
> --
> 2.43.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#217107): https://lists.openembedded.org/g/openembedded-core/message/217107
> Mute This Topic: https://lists.openembedded.org/mt/113247084/7159507
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mikko.rapeli@linaro.org]
> -=-=-=-=-=-=-=-=-=-=-=-
>
prev parent reply other threads:[~2025-05-23 9:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-22 13:41 [PATCH v3 1/3] u-boot: disable CONFIG_BLOBLIST on genericarm64 and qemuarm64 Mikko Rapeli
2025-05-22 13:41 ` [PATCH 2/3] qemuarm64.conf: allow overriding QB_OPT_APPEND Mikko Rapeli
2025-05-22 13:41 ` [PATCH 3/3] oeqa selftest uboot.py: add qemu KVM test case Mikko Rapeli
2025-05-23 13:15 ` [OE-core] " Mathieu Dubois-Briand
2025-05-23 14:16 ` Mikko Rapeli
[not found] ` <18422DAC420B1606.3062@lists.openembedded.org>
2025-05-26 8:45 ` Mikko Rapeli
2025-05-27 6:34 ` Mathieu Dubois-Briand
2025-05-27 7:17 ` Mikko Rapeli
2025-05-27 7:43 ` Mathieu Dubois-Briand
2025-05-27 8:54 ` Mikko Rapeli
2025-05-27 9:37 ` Mathieu Dubois-Briand
2025-05-27 9:55 ` Mikko Rapeli
2025-05-27 9:36 ` Mathieu Dubois-Briand
2025-05-27 9:52 ` Mikko Rapeli
[not found] ` <1841DD2A7A0AA7E1.3062@lists.openembedded.org>
2025-05-23 9:42 ` Mikko Rapeli [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aDBDBgkopuFquYBZ@nuoska \
--to=mikko.rapeli@linaro.org \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox