Re: [PATCH v8 03/10] arm_ffa: introduce Arm FF-A low-level driver

Abdellatif El Khlifi
2023-01-25T10:55:36Z

On Wed, Jan 25, 2023 at 07:48:17AM +0000, Sudeep Holla wrote:
> On Tue, Jan 24, 2023 at 03:56:19PM +0000, Abdellatif El Khlifi wrote:
> >
> > I'd like to suggest the creation of a root node called arm_smccc as shown below.
> >
>
> Not sure if U-Boot already supports the existing binding of PSCI and OPTEE.
>
> > This node is the parent of all nodes using SMC calls like FF-A, PSCI, optee, ...
> >
>
> Well if you want to start with the clean slate for all new platforms, then
> it is a good way. But you don't need any of the child nodes as they can all
> be queried and discovered.
>
> > The first child to be integrated in the arm_smccc root node is FF-A.
> > Hopefully, in the future the other features such as PSCI could be integrated
> > under arm_smccc as well.
> >
>
> You don't need FF-A or any other node if the presence of SMCCC node indicates
> the support of SMCCC v1.1+(need to go back and check to confirm this).
> You can query the presence of all the feature. There is no need to have a
> node for each of the feature supported. That was the whole discussion of this
> thread IIUC.
>
> --
> Regards,
> Sudeep

Hi Simon, Rob, Sudeep

I'm tweaking my previous suggestion regarding the creation of a new arm_smccc root node.

This node is the parent of all SW features using SMC calls like FF-A, PSCI, optee, ...

However, no child node is created in the DT. The SW features are seen as architecture features
and can be discovered by querying through SMC calls.

So, when probed the arm_smccc device driver tries to discover the SW features (FF-A, PSCI, optee, ...)

by calling xxx_discover() API for each feature ( e.g: ffa_discover() ).

The xxx_discover() creates U-Boot device(s) for the feature and set arm_smccc as the parent.

"dm tree" command should show:

SMCCC
+--PSCI
+--TRNG
+--FF-A
+--SCMI (sometimes)
+--OP-TEE
+--...Whatever Arm comes up with next...

As Sudeep suggested, we only need this node:

firmware {
arm_smccc {
compatible = "arm,smccc-1.2";
};
};

What do you think guys ? Are you happy with this approach ?

Kind regards,
Abdellatif