U-Boot’s CI pipeline has seen two rounds of improvements recently, adding test coverage for new platforms, the Rust ulib demo and EFI application boards.
Rust Toolchain and Ulib Demo Testing (ci/ulibd)
The first round added the Rust toolchain to the Docker CI image and enabled testing of the ulib Rust demo across multiple architectures. The demo now builds and runs under QEMU on x86 (32- and 64-bit), ARM64 and RISC-V 64, in both BIOS and EFI modes. A new qemu-x86_64_nospl board was also added to CI, testing x86_64 without SPL.
Other additions in this round include:
- Arm FVP support — the CI container now includes TF-A builds and the Arm Fixed Virtual Platform, enabling vexpress_fvp and vexpress_fvp_bloblist test.py runs
- qemu_arm_spl / qemu_arm64_spl boards added to the test matrix
- localqemu marker — tests that launch their own QEMU instance are now marked so they can be skipped when running against a real lab board
EFI Application Board Testing (ulibe)
The second round adds full test.py coverage for U-Boot’s EFI application boards. These boards build U-Boot as a UEFI application (u-boot-app.efi) that is launched by platform firmware rather than running bare-metal.
To support this, a shared QEMU helper script (qemu.efi_app) was created. It stages the EFI binary and a startup.nsh into a FAT drive, sets up UEFI pflash firmware and launches QEMU — handling the differences between architectures (e.g. RISC-V needs blockdev-style pflash and virtio-blk).
Four new boards are thus now tested in CI:
- efi-arm_app64 — AArch64 via AAVMF firmware
- efi-riscv_app64 — RISC-V 64 via RISC-V UEFI firmware
- efi-x86_app32 — x86 32-bit via OVMF
- efi-x86_app64 — x86 64-bit via OVMF
To make this work, the UEFI firmware packages (AAVMF, OVMF, qemu-efi-riscv64) are now installed in the Docker image, and tests that are incompatible with EFI app boards are skipped using notbuildconfigspec(‘efi_app’).
Summary
Together these changes significantly broaden U-Boot’s automated test coverage for the EFI-app builds, catching regressions across more architectures and boot modes before they reach users.


