[PATCH v9 00/10] introduce Arm FF-A support

Simon Glass sjg at chromium.org
Fri Mar 10 21:50:04 CET 2023


Hi Abdellatif,

On Fri, 10 Mar 2023 at 06:12, Abdellatif El Khlifi
<abdellatif.elkhlifi at arm.com> wrote:
>
> Adding support for Arm FF-A v1.0 (Arm Firmware Framework for Armv8-A) [A].
>
> FF-A describes interfaces (ABIs) that standardize communication
> between the Secure World and Normal World. These interfaces enable a pair of
> software sandboxes to communicate with each other. A sandbox aka partition could
> be a VM in the Normal or Secure world, an application in S-EL0, or a
> Trusted OS in S-EL1.
>
> FF-A is a discoverable bus and similar to architecture features.
> FF-A bus is discovered using ARM_SMCCC_FEATURES mechanism performed
> by the PSCI driver.
>
>    => dm tree
>
>     Class     Index  Probed  Driver                Name
>    -----------------------------------------------------------
>    ...
>     firmware      0  [ + ]   psci                      |-- psci
>     ffa                   0  [   ]   arm_ffa               |   `-- arm_ffa
>    ...
>
> Clients are able to probe then use the FF-A bus by calling the DM class
> searching APIs (e.g: uclass_get_device_by_name).
>
> This implementation of the specification provides support for Aarch64.
>
> The FF-A driver uses the SMC ABIs defined by the FF-A specification to:
>
>     - Discover the presence of secure partitions (SPs) of interest
>     - Access an SP's service through communication protocols
>       e.g. EFI MM communication protocol
>
> The FF-A support provides the following features:
>
>     - Being generic by design and can be used by any Arm 64-bit platform
>     - The FF-A core driver
>     - The driver provides driver operations to be used by clients to access the FF-A bus
>     - FF-A driver can be compiled and used without EFI
>     - Support for SMCCCv1.2 x0-x17 registers
>     - Support for SMC32 calling convention
>     - Support for 32-bit and 64-bit FF-A direct messaging
>     - A new command called armffa is provided as an example of how to access the
>       FF-A bus
>     - An FF-A Sandbox driver is provided with test cases
>     - Support for FF-A MM communication (compatible with EFI boot time)
>     - Enabling FF-A and MM communication in Corstone1000 platform as a use case
>
> For more details about the FF-A core driver please refer to [B] and refer to [C] for
> how to use the armffa command.
>
> Please find at [D] an example of the expected boot logs when enabling
> FF-A support for a platform. In this example the platform is
> Corstone1000. But it can be any Arm 64-bit platform.
>
> Changelog of the major changes:
> ===========================
>
> v9:
>
> * integrate the FF-A bus discovery in the DM and use ARM_SMCCC_FEATURES for binding
> * align FF-A sandbox driver with FF-A discovery through DM
> * use DM class APIs to probe and interact with the FF-A bus (in FF-A MM comms,  armffa command, sandbox tests)
> * add documentation for the armffa command: doc/usage/cmd/armffa.rst
> * introduce testcase for uuid_str_to_le_bin

This version looks a lot better. Things I noticed:

- fix up uclass to use operations
- tidy up emulator binding to use DT

Both should be fairly easy.

Other than that I just have code-style nits.

Regards,
Simon


More information about the U-Boot mailing list