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

abdellatif.elkhlifi at arm.com abdellatif.elkhlifi at arm.com
Fri Apr 15 14:27:57 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 bus driver
2/ armffa command
3/ FF-A Sandbox driver
4/ FF-A Sandbox test cases
5/ FF-A MM communication

The suggested design considers FF-A as a discoverable bus.
The Secure World is considered as one entity to communicate with using the FF-A bus.
FF-A communication is handled by one device and one instance (the bus).
This FF-A driver takes care of all the interactions between Normal world
and Secure World.

The Secure World firmware runs  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))

Cc: Tom Rini <trini at konsulko.com>
Cc: Rob Herring <robh at kernel.org>
Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
Cc: Achin Gupta <achin.gupta at arm.com>
Cc: Simon Glass <sjg at chromium.org>
Cc: Vishnu Banavath <vishnu.banavath at arm.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 +
 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               |   34 +
 drivers/arm-ffa/Makefile              |    7 +
 drivers/arm-ffa/arm-ffa-uclass.c      |  103 ++
 drivers/arm-ffa/arm_ffa_prv.h         |  193 ++++
 drivers/arm-ffa/core.c                | 1384 +++++++++++++++++++++++++
 drivers/arm-ffa/sandbox.c             |  669 ++++++++++++
 drivers/arm-ffa/sandbox_arm_ffa_prv.h |  131 +++
 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     |  281 ++++-
 test/cmd/Makefile                     |    1 +
 test/cmd/armffa.c                     |   33 +
 test/cmd/armffa.h                     |   13 +
 test/dm/Makefile                      |    1 +
 test/dm/ffa.c                         |  418 ++++++++
 test/dm/ffa.h                         |   22 +
 43 files changed, 4230 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