Topics

[PATCH v5 00/14] Add support for using FF-A calls


Sughosh Ganu
 

The following patch series adds support for using the Firmware
Framework(FF-A) as a transport mechanism for requesting services from
the Secure Partition Manager(SPM). This is done through a Pcd which
can be used to enable the FF-A mechanism or to use the earlier used
SVC calls.

The patches have been pushed to my github repository[1]

Ran the CI tests through the github draft pull request, and all the CI
test pass. Ran the PatchCheck script, with no errors.

Changes since V4:
* Define all variable Pcd's under the [Pcd] section instead of
[FixedPcd], as suggested by Liming Gao

Changes since V3:
* Put the PcdFfaEnable under the PcdsFeatureFlag.AARCH64 section to
avoid build breakage for the X64 StandaloneMm builds.
* Put the macro definitions for the SPM major and minor versions in a
separate patch, as suggested by Sami.
* Separated out the declaration of the SPM major and minor version
macros in the earlier patch as was suggested by Sami.
* Put the macro definitions for the SPM major and minor versions with
FF-A support in a separate patch, as suggested by Sami.
* Declare the PcdFfaEnable Pcd Feature flag under FeaturePcd.AARCH64
to avoid build break for the X64 build of StandaloneMm.
* Change the patch header to have the ArmPkg prefix instead of
StandaloneMmMmuLib as suggested by Sami.

Changes since V2:
* Added a STATIC storage class specifier for mSpmMajorVer and
mSpmMinorVer variables
* Added a STATIC storage class specifier for mSpmMajorVerFfa and
mSpmMinorVerFfa variables
* Add braces for if/else statements
* Add a check for EFI_NOT_FOUND as a possible return value from
LocateStandaloneMmCorePeCoffData in _ModuleEntryPoint function
* Check for the return value in Arg0 after the Direct Request call to
handle errors returned
* Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
response won't be expected in return to a Direct Request call to get
the memory attributes
* Check for the return value in Arg0 after the Direct Request call to
handle errors returned
* Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
response won't be expected in return to a Direct Request call to set
the memory attributes

Changes since V1:
Handled review comments from Sami Mujawar

[1] - https://github.com/sughoshg/edk2/tree/implement_ffa_svc_optional_v5


Achin Gupta (7):
ArmPkg/IndustryStandard: Add barebones FF-A header
ArmPkg/ArmSvcLib: Return x4-x7 in output parameters
StandaloneMmPkg: Use FF-A header file in Standalone MM Core entry
point
StandaloneMmPkg: Add option to use FF-A calls for communication with
SPM
ArmPkg: Use FF-A header file in Standalone MM Arm MMU library
ArmPkg: Allow FF-A calls to get memory region's attributes
ArmPkg: Allow FF-A calls to set memory region's attributes

Ilias Apalodimas (2):
MdeModulePkg/VariableStandaloneMm: Set PcdFlashNvStorageVariableBase
to Pcd
StandaloneMmPkg: Allow sending FFA Direct Request message to
StandaloneMm

Sughosh Ganu (5):
ArmPkg: Introduce support for PcdFfaEnable
ArmPkg: Add macros for SPM version
StandaloneMmPkg: Use macros for SPM version check
ArmPkg: Add macros for SPM version with FF-A support enabled
StandaloneMmPkg: Add option to use FF-A calls for getting SPM version

ArmPkg/ArmPkg.dec | 7 +
.../ArmMmuStandaloneMmLib.inf | 3 +
.../RuntimeDxe/VariableStandaloneMm.inf | 4 +-
.../StandaloneMmCoreEntryPoint.inf | 3 +
ArmPkg/Include/IndustryStandard/ArmFfaSvc.h | 44 +++++
ArmPkg/Include/IndustryStandard/ArmMmSvc.h | 3 +
ArmPkg/Include/Library/ArmSvcLib.h | 10 +-
.../AArch64/ArmMmuStandaloneMmLib.c | 167 +++++++++++++++---
.../StandaloneMmCpu/AArch64/EventHandle.c | 4 +-
.../AArch64/StandaloneMmCoreEntryPoint.c | 133 +++++++++++---
ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S | 4 +-
11 files changed, 321 insertions(+), 61 deletions(-)
create mode 100644 ArmPkg/Include/IndustryStandard/ArmFfaSvc.h

--
2.17.1


Ard Biesheuvel
 

On Fri, 19 Feb 2021 at 07:36, Sughosh Ganu <sughosh.ganu@linaro.org> wrote:

The following patch series adds support for using the Firmware
Framework(FF-A) as a transport mechanism for requesting services from
the Secure Partition Manager(SPM). This is done through a Pcd which
can be used to enable the FF-A mechanism or to use the earlier used
SVC calls.

The patches have been pushed to my github repository[1]

Ran the CI tests through the github draft pull request, and all the CI
test pass. Ran the PatchCheck script, with no errors.

Changes since V4:
* Define all variable Pcd's under the [Pcd] section instead of
[FixedPcd], as suggested by Liming Gao

Changes since V3:
* Put the PcdFfaEnable under the PcdsFeatureFlag.AARCH64 section to
avoid build breakage for the X64 StandaloneMm builds.
* Put the macro definitions for the SPM major and minor versions in a
separate patch, as suggested by Sami.
* Separated out the declaration of the SPM major and minor version
macros in the earlier patch as was suggested by Sami.
* Put the macro definitions for the SPM major and minor versions with
FF-A support in a separate patch, as suggested by Sami.
* Declare the PcdFfaEnable Pcd Feature flag under FeaturePcd.AARCH64
to avoid build break for the X64 build of StandaloneMm.
* Change the patch header to have the ArmPkg prefix instead of
StandaloneMmMmuLib as suggested by Sami.

Changes since V2:
* Added a STATIC storage class specifier for mSpmMajorVer and
mSpmMinorVer variables
* Added a STATIC storage class specifier for mSpmMajorVerFfa and
mSpmMinorVerFfa variables
* Add braces for if/else statements
* Add a check for EFI_NOT_FOUND as a possible return value from
LocateStandaloneMmCorePeCoffData in _ModuleEntryPoint function
* Check for the return value in Arg0 after the Direct Request call to
handle errors returned
* Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
response won't be expected in return to a Direct Request call to get
the memory attributes
* Check for the return value in Arg0 after the Direct Request call to
handle errors returned
* Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
response won't be expected in return to a Direct Request call to set
the memory attributes

Changes since V1:
Handled review comments from Sami Mujawar

[1] - https://github.com/sughoshg/edk2/tree/implement_ffa_svc_optional_v5


Achin Gupta (7):
ArmPkg/IndustryStandard: Add barebones FF-A header
ArmPkg/ArmSvcLib: Return x4-x7 in output parameters
StandaloneMmPkg: Use FF-A header file in Standalone MM Core entry
point
StandaloneMmPkg: Add option to use FF-A calls for communication with
SPM
ArmPkg: Use FF-A header file in Standalone MM Arm MMU library
ArmPkg: Allow FF-A calls to get memory region's attributes
ArmPkg: Allow FF-A calls to set memory region's attributes

Ilias Apalodimas (2):
MdeModulePkg/VariableStandaloneMm: Set PcdFlashNvStorageVariableBase
to Pcd
StandaloneMmPkg: Allow sending FFA Direct Request message to
StandaloneMm

Sughosh Ganu (5):
ArmPkg: Introduce support for PcdFfaEnable
ArmPkg: Add macros for SPM version
StandaloneMmPkg: Use macros for SPM version check
ArmPkg: Add macros for SPM version with FF-A support enabled
StandaloneMmPkg: Add option to use FF-A calls for getting SPM version
Unfortunately, I won't be able to do a detailed review of this series,
but I have discussed these patches before with Sami off-list, and
based on that and on my earlier review of v3:

Acked-by: Ard Biesheuvel <ardb@kernel.org>

for the series, where necessary.

ArmPkg/ArmPkg.dec | 7 +
.../ArmMmuStandaloneMmLib.inf | 3 +
.../RuntimeDxe/VariableStandaloneMm.inf | 4 +-
.../StandaloneMmCoreEntryPoint.inf | 3 +
ArmPkg/Include/IndustryStandard/ArmFfaSvc.h | 44 +++++
ArmPkg/Include/IndustryStandard/ArmMmSvc.h | 3 +
ArmPkg/Include/Library/ArmSvcLib.h | 10 +-
.../AArch64/ArmMmuStandaloneMmLib.c | 167 +++++++++++++++---
.../StandaloneMmCpu/AArch64/EventHandle.c | 4 +-
.../AArch64/StandaloneMmCoreEntryPoint.c | 133 +++++++++++---
ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S | 4 +-
11 files changed, 321 insertions(+), 61 deletions(-)
create mode 100644 ArmPkg/Include/IndustryStandard/ArmFfaSvc.h

--
2.17.1


Sughosh Ganu
 

hi Sami,

On Mon, 22 Feb 2021 at 19:40, Ard Biesheuvel <ardb@...> wrote:
On Fri, 19 Feb 2021 at 07:36, Sughosh Ganu <sughosh.ganu@...> wrote:
>
> The following patch series adds support for using the Firmware
> Framework(FF-A) as a transport mechanism for requesting services from
> the Secure Partition Manager(SPM). This is done through a Pcd which
> can be used to enable the FF-A mechanism or to use the earlier used
> SVC calls.
>
> The patches have been pushed to my github repository[1]
>
> Ran the CI tests through the github draft pull request, and all the CI
> test pass. Ran the PatchCheck script, with no errors.
>
> Changes since V4:
> * Define all variable Pcd's under the [Pcd] section instead of
>   [FixedPcd], as suggested by Liming Gao
>
> Changes since V3:
> * Put the PcdFfaEnable under the PcdsFeatureFlag.AARCH64 section to
>   avoid build breakage for the X64 StandaloneMm builds.
> * Put the macro definitions for the SPM major and minor versions in a
>   separate patch, as suggested by Sami.
> * Separated out the declaration of the SPM major and minor version
>   macros in the earlier patch as was suggested by Sami.
> * Put the macro definitions for the SPM major and minor versions with
>   FF-A support in a separate patch, as suggested by Sami.
> * Declare the PcdFfaEnable Pcd Feature flag under FeaturePcd.AARCH64
>   to avoid build break for the X64 build of StandaloneMm.
> * Change the patch header to have the ArmPkg prefix instead of
>   StandaloneMmMmuLib as suggested by Sami.
>
> Changes since V2:
> * Added a STATIC storage class specifier for mSpmMajorVer and
>   mSpmMinorVer variables
> * Added a STATIC storage class specifier for mSpmMajorVerFfa and
>   mSpmMinorVerFfa variables
> * Add braces for if/else statements
> * Add a check for EFI_NOT_FOUND as a possible return value from
>   LocateStandaloneMmCorePeCoffData in _ModuleEntryPoint function
> * Check for the return value in Arg0 after the Direct Request call to
>   handle errors returned
> * Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
>   response won't be expected in return to a Direct Request call to get
>   the memory attributes
> * Check for the return value in Arg0 after the Direct Request call to
>   handle errors returned
> * Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
>   response won't be expected in return to a Direct Request call to set
>   the memory attributes
>
> Changes since V1:
> Handled review comments from Sami Mujawar
>
> [1] - https://github.com/sughoshg/edk2/tree/implement_ffa_svc_optional_v5
>
>
> Achin Gupta (7):
>   ArmPkg/IndustryStandard: Add barebones FF-A header
>   ArmPkg/ArmSvcLib: Return x4-x7 in output parameters
>   StandaloneMmPkg: Use FF-A header file in Standalone MM Core entry
>     point
>   StandaloneMmPkg: Add option to use FF-A calls for communication with
>     SPM
>   ArmPkg: Use FF-A header file in Standalone MM Arm MMU library
>   ArmPkg: Allow FF-A calls to get memory region's attributes
>   ArmPkg: Allow FF-A calls to set memory region's attributes
>
> Ilias Apalodimas (2):
>   MdeModulePkg/VariableStandaloneMm: Set PcdFlashNvStorageVariableBase
>     to Pcd
>   StandaloneMmPkg: Allow sending FFA Direct Request message to
>     StandaloneMm
>
> Sughosh Ganu (5):
>   ArmPkg: Introduce support for PcdFfaEnable
>   ArmPkg: Add macros for SPM version
>   StandaloneMmPkg: Use macros for SPM version check
>   ArmPkg: Add macros for SPM version with FF-A support enabled
>   StandaloneMmPkg: Add option to use FF-A calls for getting SPM version
>

Unfortunately, I won't be able to do a detailed review of this series,
but I have discussed these patches before with Sami off-list, and
based on that and on my earlier review of v3:

Acked-by: Ard Biesheuvel <ardb@...>

for the series, where necessary.

Can you please merge this patch series for the stable tag edk2-stable202102. I have created a bugzilla ticket for this feature addition[1]. Please let me know if anything else is needed. Thanks.

-sughosh


Sami Mujawar
 

Hi Sughosh,

 

Pushed as a2b5ea38a6fb..68e5ecc4d208

 

Regards,

 

Sami Mujawar

 

From: Sughosh Ganu <sughosh.ganu@...>
Sent: 22 February 2021 03:19 PM
To: Ard Biesheuvel <ardb@...>; Sami Mujawar <Sami.Mujawar@...>
Cc: devel@edk2.groups.io; Ilias Apalodimas <ilias.apalodimas@...>; Laszlo Ersek <lersek@...>; Leif Lindholm <leif@...>; michael.d.kinney@...; Jiewen Yao <jiewen.yao@...>; Achin Gupta <Achin.Gupta@...>
Subject: Re: [PATCH v5 00/14] Add support for using FF-A calls

 

hi Sami,

 

On Mon, 22 Feb 2021 at 19:40, Ard Biesheuvel <ardb@...> wrote:

On Fri, 19 Feb 2021 at 07:36, Sughosh Ganu <sughosh.ganu@...> wrote:
>
> The following patch series adds support for using the Firmware
> Framework(FF-A) as a transport mechanism for requesting services from
> the Secure Partition Manager(SPM). This is done through a Pcd which
> can be used to enable the FF-A mechanism or to use the earlier used
> SVC calls.
>
> The patches have been pushed to my github repository[1]
>
> Ran the CI tests through the github draft pull request, and all the CI
> test pass. Ran the PatchCheck script, with no errors.
>
> Changes since V4:
> * Define all variable Pcd's under the [Pcd] section instead of
>   [FixedPcd], as suggested by Liming Gao
>
> Changes since V3:
> * Put the PcdFfaEnable under the PcdsFeatureFlag.AARCH64 section to
>   avoid build breakage for the X64 StandaloneMm builds.
> * Put the macro definitions for the SPM major and minor versions in a
>   separate patch, as suggested by Sami.
> * Separated out the declaration of the SPM major and minor version
>   macros in the earlier patch as was suggested by Sami.
> * Put the macro definitions for the SPM major and minor versions with
>   FF-A support in a separate patch, as suggested by Sami.
> * Declare the PcdFfaEnable Pcd Feature flag under FeaturePcd.AARCH64
>   to avoid build break for the X64 build of StandaloneMm.
> * Change the patch header to have the ArmPkg prefix instead of
>   StandaloneMmMmuLib as suggested by Sami.
>
> Changes since V2:
> * Added a STATIC storage class specifier for mSpmMajorVer and
>   mSpmMinorVer variables
> * Added a STATIC storage class specifier for mSpmMajorVerFfa and
>   mSpmMinorVerFfa variables
> * Add braces for if/else statements
> * Add a check for EFI_NOT_FOUND as a possible return value from
>   LocateStandaloneMmCorePeCoffData in _ModuleEntryPoint function
> * Check for the return value in Arg0 after the Direct Request call to
>   handle errors returned
> * Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
>   response won't be expected in return to a Direct Request call to get
>   the memory attributes
> * Check for the return value in Arg0 after the Direct Request call to
>   handle errors returned
> * Put a comment to reflect the fact that FFA_INTERRUPT and FFA_SUCCESS
>   response won't be expected in return to a Direct Request call to set
>   the memory attributes
>
> Changes since V1:
> Handled review comments from Sami Mujawar
>
> [1] - https://github.com/sughoshg/edk2/tree/implement_ffa_svc_optional_v5
>
>
> Achin Gupta (7):
>   ArmPkg/IndustryStandard: Add barebones FF-A header
>   ArmPkg/ArmSvcLib: Return x4-x7 in output parameters
>   StandaloneMmPkg: Use FF-A header file in Standalone MM Core entry
>     point
>   StandaloneMmPkg: Add option to use FF-A calls for communication with
>     SPM
>   ArmPkg: Use FF-A header file in Standalone MM Arm MMU library
>   ArmPkg: Allow FF-A calls to get memory region's attributes
>   ArmPkg: Allow FF-A calls to set memory region's attributes
>
> Ilias Apalodimas (2):
>   MdeModulePkg/VariableStandaloneMm: Set PcdFlashNvStorageVariableBase
>     to Pcd
>   StandaloneMmPkg: Allow sending FFA Direct Request message to
>     StandaloneMm
>
> Sughosh Ganu (5):
>   ArmPkg: Introduce support for PcdFfaEnable
>   ArmPkg: Add macros for SPM version
>   StandaloneMmPkg: Use macros for SPM version check
>   ArmPkg: Add macros for SPM version with FF-A support enabled
>   StandaloneMmPkg: Add option to use FF-A calls for getting SPM version
>

Unfortunately, I won't be able to do a detailed review of this series,
but I have discussed these patches before with Sami off-list, and
based on that and on my earlier review of v3:

Acked-by: Ard Biesheuvel <ardb@...>

for the series, where necessary.

 

Can you please merge this patch series for the stable tag edk2-stable202102. I have created a bugzilla ticket for this feature addition[1]. Please let me know if anything else is needed. Thanks.

 

-sughosh

 

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.