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

abdellatif.elkhlifi at arm.com abdellatif.elkhlifi at arm.com
Tue Mar 29 17:16:53 CEST 2022


From: Abdellatif El Khlifi <abdellatif.elkhlifi at 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 at 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



More information about the U-Boot mailing list