[PATCH u-boot-test-hooks 3/4] bin: Add support for testing firmware handoff on qemu_arm64

Raymond Mao raymond.mao at linaro.org
Fri Oct 3 21:19:12 CEST 2025


Add support for testing firmware handoff on qemu_arm64, includes:
1. helper_setup hook and clean-up for swtpm;
2. Assembling flash image in flash.fiptool;
3. TF-A/legacy mode switch depends on the coexistence of bl1 and
   fip.

Signed-off-by: Raymond Mao <raymond.mao at linaro.org>
---
 bin/flash.fiptool             |  4 ++++
 bin/qemu.swtpm                |  7 +++++++
 bin/travis-ci/conf.qemu_arm64 | 17 ++++++++++++++---
 3 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/bin/flash.fiptool b/bin/flash.fiptool
index 23014f2..45c644b 100644
--- a/bin/flash.fiptool
+++ b/bin/flash.fiptool
@@ -20,3 +20,7 @@
 
 # Call fiptool to update an existing fip.bin file
 fiptool update --nt-fw="${U_BOOT_BUILD_DIR}/u-boot.bin" ${fip}
+
+# Create a flash image
+dd if=${bl1} of=${U_BOOT_BUILD_DIR}/flash.bin bs=4096 conv=notrunc
+dd if=${fip} of=${U_BOOT_BUILD_DIR}/flash.bin seek=64 bs=4096 conv=notrunc
diff --git a/bin/qemu.swtpm b/bin/qemu.swtpm
index c40c537..9cf4f1a 100755
--- a/bin/qemu.swtpm
+++ b/bin/qemu.swtpm
@@ -18,6 +18,13 @@
 #
 # U-Boot must be built with CONFIG_TPM2_MMIO=y.
 
+set -e
+
+rm -rf /tmp/tpm
 mkdir -p /tmp/tpm
+
+if [ -n "${helper_setup}" ]; then
+    eval "${helper_setup}"
+fi
 swtpm socket -d -t --tpmstate dir=/tmp/tpm --tpm2 \
 --ctrl type=unixio,path=/tmp/tpm/swtpm-sock
diff --git a/bin/travis-ci/conf.qemu_arm64 b/bin/travis-ci/conf.qemu_arm64
index bd55ea8..690c2a6 100644
--- a/bin/travis-ci/conf.qemu_arm64
+++ b/bin/travis-ci/conf.qemu_arm64
@@ -20,14 +20,25 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
+set -e
+
+if [ -n "${fip}" ] && [ -n "${bl1}" ]; then
+	echo "Both fip and bl1 exist - TF-A mode"
+	helper_setup="swtpm_setup --tpmstate /tmp/tpm --tpm2 --pcr-banks sha256"
+	qemu_machine="virt,secure=on"
+	qemu_kernel_args="-bios ${U_BOOT_BUILD_DIR}/flash.bin"
+	flash_impl=fiptool
+else
+	qemu_machine="virt"
+	qemu_kernel_args="-bios ${U_BOOT_BUILD_DIR}/u-boot.bin"
+	flash_impl=none
+fi
+
 console_impl=qemu
-qemu_machine="virt"
 qemu_helper_script="swtpm"
 qemu_binary="qemu-system-aarch64"
 qemu_net_args="-netdev user,id=net0,tftp=${UBOOT_TRAVIS_BUILD_DIR} -device e1000,netdev=net0"
 qemu_host_args="-semihosting-config enable=on,target=native"
 qemu_tpm_args="-chardev socket,id=chrtpm,path=/tmp/tpm/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis-device,tpmdev=tpm0"
 qemu_extra_args="-m 4G -cpu cortex-a57 -nographic -device virtio-rng-pci -d unimp ${qemu_host_args} ${qemu_net_args} ${qemu_tpm_args}"
-qemu_kernel_args="-bios ${U_BOOT_BUILD_DIR}/u-boot.bin"
 reset_impl=none
-flash_impl=none
-- 
2.25.1



More information about the U-Boot mailing list