Re: [PATCH v11 00/10] introduce Arm FF-A support

Simon Glass
2023-04-18T16:51:21Z

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