[U-BOOT-TEST-HOOKS PATCH 1/1] Enable TPMv2 emulation
Ilias Apalodimas
ilias.apalodimas at linaro.org
Wed Nov 24 08:23:35 CET 2021
Hi Heinrich,
On Mon, 15 Nov 2021 at 12:11, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> Provide a QEMU helper script to launch swtpm and add extra parameters to
> conf.qemu_arm64_na and conf.qemu_arm_na to provide an emulated TPMv2.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> bin/qemu.swtpm | 19 +++++++++++++++++++
> bin/travis-ci/conf.qemu_arm64_na | 3 ++-
> bin/travis-ci/conf.qemu_arm_na | 3 ++-
> 3 files changed, 23 insertions(+), 2 deletions(-)
> create mode 100755 bin/qemu.swtpm
>
> diff --git a/bin/qemu.swtpm b/bin/qemu.swtpm
> new file mode 100755
> index 0000000..089feba
> --- /dev/null
> +++ b/bin/qemu.swtpm
> @@ -0,0 +1,19 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: BSD-2
> +#
> +# This script launches swtpm to emulate a TPMv2. The parameter -t makes it
> +# unload when the connection to QEMU is terminated. To make use of it add
> +#
> +# qemu_helper_script="swtpm"
> +#
> +# to the board script and the following arguments to qemu_extra_args
> +#
> +# -chardev socket,id=chrtpm,path=/tmp/tpm/swtpm-sock \
> +# -tpmdev emulator,id=tpm0,chardev=chrtpm \
> +# -device tpm-tis-device,tpmdev=tpm0
> +#
> +# U-Boot must be built with CONFIG_TPM2_MMIO=y.
> +
> +mkdir -p /tmp/tpm
> +swtpm socket -t --tpmstate dir=/tmp/tpm --tpm2 \
> +--ctrl type=unixio,path=/tmp/tpm/swtpm-sock &
Nit pick the & can be '-d'
> diff --git a/bin/travis-ci/conf.qemu_arm64_na b/bin/travis-ci/conf.qemu_arm64_na
> index e7c9426..14577d8 100644
> --- a/bin/travis-ci/conf.qemu_arm64_na
> +++ b/bin/travis-ci/conf.qemu_arm64_na
> @@ -22,8 +22,9 @@
>
> console_impl=qemu
> qemu_machine="virt"
> +qemu_helper_script="swtpm"
> qemu_binary="qemu-system-aarch64"
> -qemu_extra_args="-cpu cortex-a57 -nographic -netdev user,id=net0,tftp=${UBOOT_TRAVIS_BUILD_DIR} -device e1000,netdev=net0 -device virtio-rng-pci"
> +qemu_extra_args="-cpu cortex-a57 -nographic -netdev user,id=net0,tftp=${UBOOT_TRAVIS_BUILD_DIR} -device e1000,netdev=net0 -device virtio-rng-pci -chardev socket,id=chrtpm,path=/tmp/tpm/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis-device,tpmdev=tpm0"
> qemu_kernel_args="-bios ${U_BOOT_BUILD_DIR}/u-boot.bin"
> reset_impl=none
> flash_impl=none
> diff --git a/bin/travis-ci/conf.qemu_arm_na b/bin/travis-ci/conf.qemu_arm_na
> index 0f07c80..de0694d 100644
> --- a/bin/travis-ci/conf.qemu_arm_na
> +++ b/bin/travis-ci/conf.qemu_arm_na
> @@ -22,8 +22,9 @@
>
> console_impl=qemu
> qemu_machine="virt"
> +qemu_helper_script="swtpm"
> qemu_binary="qemu-system-arm"
> -qemu_extra_args="-nographic -netdev user,id=net0,tftp=${UBOOT_TRAVIS_BUILD_DIR} -device e1000,netdev=net0 -device virtio-rng-pci"
> +qemu_extra_args="-nographic -netdev user,id=net0,tftp=${UBOOT_TRAVIS_BUILD_DIR} -device e1000,netdev=net0 -device virtio-rng-pci -chardev socket,id=chrtpm,path=/tmp/tpm/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis-device,tpmdev=tpm0"
Just a note here 'tpm-tis-device' works for arm. If we evenr need
this on x86 it's 'tpm-tis' ....
> qemu_kernel_args="-bios ${U_BOOT_BUILD_DIR}/u-boot.bin"
> reset_impl=none
> flash_impl=none
> --
> 2.32.0
>
Other than that
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
More information about the U-Boot
mailing list