From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.6144.1613561247976513663 for ; Wed, 17 Feb 2021 03:27:28 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=softfail (domain: linaro.org, ip: 217.140.110.172, mailfrom: sughosh.ganu@linaro.org) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4D48131B; Wed, 17 Feb 2021 03:27:27 -0800 (PST) Received: from a076522.blr.arm.com (a076522.blr.arm.com [10.162.16.44]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C476A3F73B; Wed, 17 Feb 2021 03:27:25 -0800 (PST) From: "Sughosh Ganu" To: devel@edk2.groups.io Cc: Sami Mujawar , Ilias Apalodimas , Ard Biesheuvel Subject: [PATCH v4 00/14] Add support for using FF-A calls Date: Wed, 17 Feb 2021 16:57:03 +0530 Message-Id: <20210217112717.6820-1-sughosh.ganu@linaro.org> X-Mailer: git-send-email 2.17.1 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 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_v4 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 | 6 +- .../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, 323 insertions(+), 61 deletions(-) create mode 100644 ArmPkg/Include/IndustryStandard/ArmFfaSvc.h -- 2.17.1