
Hi Abdellatif,
On Mon, 17 Apr 2023 at 10:03, Abdellatif El Khlifi abdellatif.elkhlifi@arm.com wrote:
Hi Simon,
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 - A Uclass driver providing generic FF-A methods and driver operations - An Arm FF-A device driver - FF-A support 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 - Support for FF-A MM communication (compatible with EFI boot time) - Enabling FF-A and MM communication in Corstone1000 platform as a use case - A sandbox emulator for Arm FF-A - An FF-A sandbox device driver - Sandbox FF-A test cases
For more details about the FF-A support 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:
v11:
- move ffa_try_discovery() from the uclass to the Arm FF-A driver
- rename ffa_try_discovery() to arm_ffa_discover()
- add arm_ prefix to the Arm FF-A driver functions
- use U_BOOT_CMD_WITH_SUBCMDS for armffa command
- store the sandbox emulator pointer in the FF-A device uc_priv (struct ffa_priv)
- set the emulator as parent of the sandbox FF-A device
- rename select_ffa_mm_comms() to select_mm_comms()
- improve the logic of MM transport selection in mm_communicate()
- use ut_asserteq_mem() in uuid_str_to_le_bin test case
- address nits
A gentle reminder for reviewing the v11 changes please. I already put you in CC :)
Thank you in advance.
Yes I have started looking at it. Should be by Monday.
Regards, Simon