[PATCH 0/6] introduce Arm FF-A support

abdellatif.elkhlifi
2022-03-29T16:14:48Z

From: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>

This patchset adds support for Arm FF-A (Arm Firmware Framework for Armv8-A v1.0).

FF-A support is generic by design and can be used by any Arm platform.

The features added are as follows:

1/ FF-A device driver
2/ armffa command
3/ FF-A Sandbox driver
4/ FF-A Sandbox test cases
5/ FF-A MM communication

The suggested design sees FF-A as a data bus allowing data exchange with the firmware
running under TrustZone HW (such as Optee). The same approach was followed in the
FF-A driver in Linux kernel (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/firmware/arm_ffa/bus.c?h=v5.15#n211))

u-boot boards using FF-A can provide a device tree node in a <board>-u-boot.dtsi file.
Since the node can not be hosted in Linux device tree, we suggest using u-boot device tree.

As a use case, we will send a commit enabling FF-A for the Corstone-1000 platform and providing
the FF-A node in u-boot.dtsi files.

Corstone-1000: https://lore.kernel.org/u-boot/20220322104118.573537-1-rui.silva@linaro.org/

Cc: Tom Rini <trini@konsulko.com>

Abdellatif El Khlifi (6):
arm_ffa: introduce Arm FF-A low-level driver
arm_ffa: introduce armffa command
arm_ffa: introduce the FF-A Sandbox driver
arm_ffa: introduce Sandbox test cases for UCLASS_FFA
arm_ffa: introduce armffa command Sandbox test
arm_ffa: introduce FF-A MM communication

MAINTAINERS | 15 +
arch/arm/cpu/armv8/cache.S | 16 +
arch/arm/cpu/armv8/cache_v8.c | 3 +-
arch/arm/cpu/armv8/smccc-call.S | 27 +
arch/arm/lib/asm-offsets.c | 6 +
arch/sandbox/dts/sandbox.dtsi | 10 +
arch/sandbox/dts/test.dts | 10 +
cmd/Kconfig | 10 +
cmd/Makefile | 2 +
cmd/armffa.c | 266 +++++
common/board_r.c | 7 +
configs/sandbox64_defconfig | 2 +
configs/sandbox_defconfig | 2 +
doc/arch/sandbox.rst | 1 +
drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/arm-ffa/Kconfig | 32 +
drivers/arm-ffa/Makefile | 7 +
drivers/arm-ffa/arm-ffa-uclass.c | 102 ++
drivers/arm-ffa/arm_ffa_prv.h | 200 ++++
drivers/arm-ffa/core.c | 1463 +++++++++++++++++++++++++
drivers/arm-ffa/sandbox.c | 735 +++++++++++++
drivers/arm-ffa/sandbox_arm_ffa_prv.h | 128 +++
include/arm_ffa.h | 197 ++++
include/arm_ffa_helper.h | 45 +
include/dm/uclass-id.h | 1 +
include/linux/arm-smccc.h | 28 +-
include/mm_communication.h | 4 +-
include/sandbox_arm_ffa.h | 31 +
include/sandbox_arm_ffa_helper.h | 26 +
lib/Kconfig | 1 +
lib/Makefile | 1 +
lib/arm-ffa/Kconfig | 6 +
lib/arm-ffa/Makefile | 9 +
lib/arm-ffa/arm_ffa_helper.c | 188 ++++
lib/arm-ffa/sandbox_arm_ffa_helper.c | 23 +
lib/efi_loader/Kconfig | 14 +-
lib/efi_loader/efi_boottime.c | 17 +
lib/efi_loader/efi_variable_tee.c | 294 ++++-
test/cmd/Makefile | 1 +
test/cmd/armffa.c | 33 +
test/cmd/armffa.h | 13 +
test/dm/Makefile | 1 +
test/dm/ffa.c | 424 +++++++
test/dm/ffa.h | 22 +
45 files changed, 4415 insertions(+), 11 deletions(-)
create mode 100644 cmd/armffa.c
create mode 100644 drivers/arm-ffa/Kconfig
create mode 100644 drivers/arm-ffa/Makefile
create mode 100644 drivers/arm-ffa/arm-ffa-uclass.c
create mode 100644 drivers/arm-ffa/arm_ffa_prv.h
create mode 100644 drivers/arm-ffa/core.c
create mode 100644 drivers/arm-ffa/sandbox.c
create mode 100644 drivers/arm-ffa/sandbox_arm_ffa_prv.h
create mode 100644 include/arm_ffa.h
create mode 100644 include/arm_ffa_helper.h
create mode 100644 include/sandbox_arm_ffa.h
create mode 100644 include/sandbox_arm_ffa_helper.h
create mode 100644 lib/arm-ffa/Kconfig
create mode 100644 lib/arm-ffa/Makefile
create mode 100644 lib/arm-ffa/arm_ffa_helper.c
create mode 100644 lib/arm-ffa/sandbox_arm_ffa_helper.c
create mode 100644 test/cmd/armffa.c
create mode 100644 test/cmd/armffa.h
create mode 100644 test/dm/ffa.c
create mode 100644 test/dm/ffa.h

--
2.17.1