[PATCH v3 00/10] arm64: FF-A runtime transport for EFI variables
Heinrich Schuchardt
xypron.glpk at gmx.de
Sun Jul 12 08:33:00 CEST 2026
On 6/27/26 16:44, Harsimran Singh Tungal wrote:
> Hi all,
>
> This series adds FF-A runtime transport support so EFI variable runtime
> services can communicate with the secure world after ExitBootServices().
> It also extends tests, docs, and board configs to validate the runtime
> path and keep boot-time behavior aligned with the runtime flow.
Hello Harsiman,
Unfortunately this cover-letter lacks some background information needed
for reviewing the patch series.
Why is this new transport needed? We already have a transport for EFI
variables to the secure world via OP-TEE (see CONFIG_EFI_MM_COMM_TEE).
Where is the EFI variables specific FF-A message protocol specified?
Is there a Linux driver that can communicate via this message protocol?
How can the transport be tested with QEMU and Linux?
Best regards
Heinrich
>
> Changes in this series:
> - Add EFI runtime-safe memset helper and FF-A runtime transport support.
> - Implement FF-A runtime communication in the EFI variable TEE backend.
> - Enable EFI runtime variable operations over the FF-A transport.
> - Add sandbox runtime transport tests.
> - Extend EFI selftests for runtime variables and bootefi selftest config.
> - Document the FF-A runtime transport and selftest behavior.
>
> Changes in v3:
>
> Address Simon Glass's review comments:
> - Move FF-A ExitBootServices event registration to the end of probe and
> clean up RX/TX buffer handling on failure.
> - Rename FF-A runtime-context helpers to the ffa_runtime_context_* form.
> - Rework FF-A/MM cache maintenance to cover only rounded request and
> response ranges.
> - Add SetVirtualAddressMap handling for the FF-A shared buffer.
> - Document FF-A shared-buffer ownership and alignment assumptions.
> - Add EFIAPI to the TEE runtime GetVariable and GetNextVariableName
> entry points.
> - Tighten sandbox FF-A runtime tests and reset runtime state between
> test cases.
> - Update FF-A and bootefi documentation for the runtime transport and
> split runtime-variable selftests.
> - Rework commit messages to drop redundant information.
>
> Address Ilias Apalodimas's review comments:
> - Keep efi_var_common.c unchanged and drop commit 6 from v2 patchset.
> - Rename the TEE/FF-A runtime handlers to the *_int_runtime form.
> - Remove log_*() calls from __efi_runtime FF-A/MM communication paths.
>
> Other:
> - Fix FF-A memory-share sender_id to use the runtime private endpoint
> ID after rebasing.
> - Fix the expected QueryVariableInfo() return status for the
> TEE-backed runtime selftest path.
>
>
> Changes in v2:
>
> Address Simon Glass's review comments:
> - Fix efi_memset_runtime() style, declaration, and byte cast
> - Tighten the FF-A runtime context failure path, clean up arm-ffa-runtime.c
> style issues, and move ExitBootServices event registration earlier in probe
> - Add shared-buffer bounds/alignment checks, and tightening comments/kernel-doc
> - Document the FF-A shared buffer cacheline-alignment requirement and add
> BUILD_BUG_ON() checks for the address
> - Cache attributes before the shared buffer is reused, moving the read-only
> check earlier, and split the u16_strsize() related change in separate patch
> - Reword commit messages for the runtime helper relocation
> - Rework the non-volatile runtime variable selftest into setup/verify phases
> - Extend the sandbox FF-A runtime tests with no-context coverage,
> runtime-context reset, and separate errno-mapping coverage
> - Refresh the FF-A runtime transport and bootefi documentation
> - Drop patch 12 in v1, as ffa_mm_communicate handles both runtime and
> boottime capabilities in v2
> - Squash patch 8 and patch 9 from v1
>
> Address Ilias Apalodimas's review comments:
> - Reuse common MM SP error mapping for boot and runtime paths
> - Rename runtime-phase tracking to reflect the ExitBootServices transition
> - Collapse duplicated boot-time and runtime MM communication helpers into common
> implementations
> - Keep the arm64 cache-maintenance path runtime-safe
> - Move FF-A shared-buffer runtime memory-map registration to the end of
> variable-service initialization
>
> Link to v2: https://lore.kernel.org/u-boot/20260514124924.1804332-1-harsimransingh.tungal@arm.com/
> Link to v1: https://lore.kernel.org/u-boot/20260424173151.371134-1-harsimransingh.tungal@arm.com/
>
> Harsimran Singh Tungal (10):
> efi_loader: add runtime memset helper
> arm-ffa: add FF-A bus runtime support
> efi_loader: add FF-A runtime support in EFI variable TEE driver
> efi_loader: enable EFI runtime SetVariable()/GetVariable() using FF-A
> transport
> charset: mark u16_strsize() as __efi_runtime
> corstone1000: enable bootefi selftest
> efi: selftest: add runtime variable tests with non-volatile storage
> test: dm: add sandbox FF-A runtime transport tests
> doc: arm64: document FF-A runtime path for EFI variables
> doc: bootefi: note two-phase runtime variables selftest
>
> arch/arm/cpu/armv8/cache.S | 8 +
> arch/arm/cpu/armv8/cache_v8.c | 13 +-
> arch/sandbox/include/asm/sandbox_arm_ffa.h | 16 +-
> configs/corstone1000_defconfig | 3 +
> doc/arch/arm64.ffa.rst | 88 ++-
> doc/usage/cmd/armffa.rst | 11 +
> doc/usage/cmd/bootefi.rst | 31 +
> drivers/firmware/arm-ffa/Kconfig | 11 +
> drivers/firmware/arm-ffa/Makefile | 4 +-
> drivers/firmware/arm-ffa/arm-ffa-runtime.c | 294 +++++++
> drivers/firmware/arm-ffa/arm-ffa-uclass.c | 114 +--
> drivers/firmware/arm-ffa/arm-ffa.c | 16 +-
> drivers/firmware/arm-ffa/ffa-emul-uclass.c | 49 +-
> include/arm_ffa.h | 16 +-
> include/arm_ffa_priv.h | 22 +-
> include/arm_ffa_runtime.h | 191 +++++
> include/efi_loader.h | 3 +
> lib/charset.c | 2 +-
> lib/efi_loader/Kconfig | 4 +
> lib/efi_loader/efi_runtime.c | 20 +
> lib/efi_loader/efi_variable_tee.c | 726 +++++++++++++++---
> .../efi_selftest_variables_runtime.c | 715 +++++++++++------
> test/dm/Makefile | 3 +-
> test/dm/ffa.c | 6 +-
> test/dm/ffa_runtime.c | 123 +++
> 25 files changed, 1997 insertions(+), 492 deletions(-)
> create mode 100644 drivers/firmware/arm-ffa/arm-ffa-runtime.c
> create mode 100644 include/arm_ffa_runtime.h
> create mode 100644 test/dm/ffa_runtime.c
>
More information about the U-Boot
mailing list