Hi Etienne, This patch looks good to me. Reviewed-by: Sami Mujawar Regards, Sami Mujawar On 17/05/2021 08:40 AM, Etienne Carriere wrote: > Changes in ArmPkg to prepare building StandaloneMm firmware for > 32bit Arm architectures. > > Adds MmCommunicationDxe driver and ArmMmuPeiLib and > ArmmmuStandaloneMmLib libraries to the list of the standard > components build for ArmPkg on when ARM architectures. > > Changes path of source file AArch64/ArmMmuStandaloneMmLib.c > and compile it for both 32bit and 64bit architectures. > > Cc: Achin Gupta > Cc: Ard Biesheuvel > Cc: Leif Lindholm > Cc: Sughosh Ganu > Signed-off-by: Etienne Carriere > --- > No change since v2 > No change since v1 > --- > ArmPkg/ArmPkg.dec | 2 +- > ArmPkg/ArmPkg.dsc | 2 +- > ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c | 2 +- > ArmPkg/Library/StandaloneMmMmuLib/{AArch64 => }/ArmMmuStandaloneMmLib.c | 15 ++++++++------- > ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.inf | 6 +++--- > 5 files changed, 14 insertions(+), 13 deletions(-) > > diff --git a/ArmPkg/ArmPkg.dec b/ArmPkg/ArmPkg.dec > index 214b2f5892..6ed51edd03 100644 > --- a/ArmPkg/ArmPkg.dec > +++ b/ArmPkg/ArmPkg.dec > @@ -137,7 +137,7 @@ > # hardware coherency (i.e., no virtualization or cache coherent DMA) > gArmTokenSpaceGuid.PcdNormalMemoryNonshareableOverride|FALSE|BOOLEAN|0x00000043 > > -[PcdsFeatureFlag.AARCH64] > +[PcdsFeatureFlag.AARCH64, PcdsFeatureFlag.ARM] > ## Used to select method for requesting services from S-EL1.

> # TRUE - Selects FF-A calls for communication between S-EL0 and SPMC.
> # FALSE - Selects SVC calls for communication between S-EL0 and SPMC.
> diff --git a/ArmPkg/ArmPkg.dsc b/ArmPkg/ArmPkg.dsc > index 926986cf7f..4c79dadf9e 100644 > --- a/ArmPkg/ArmPkg.dsc > +++ b/ArmPkg/ArmPkg.dsc > @@ -158,7 +158,7 @@ > ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf > ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLibNull.inf > > -[Components.AARCH64] > +[Components.AARCH64, Components.ARM] > ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf > ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf > ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.inf > diff --git a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c b/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c > index b1e3095809..4ae38a9f22 100644 > --- a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c > +++ b/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c > @@ -125,7 +125,7 @@ MmCommunication2Communicate ( > } > > // SMC Function ID > - CommunicateSmcArgs.Arg0 = ARM_SMC_ID_MM_COMMUNICATE_AARCH64; > + CommunicateSmcArgs.Arg0 = ARM_SMC_ID_MM_COMMUNICATE; > > // Cookie > CommunicateSmcArgs.Arg1 = 0; > diff --git a/ArmPkg/Library/StandaloneMmMmuLib/AArch64/ArmMmuStandaloneMmLib.c b/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.c > similarity index 92% > rename from ArmPkg/Library/StandaloneMmMmuLib/AArch64/ArmMmuStandaloneMmLib.c > rename to ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.c > index dd014beec8..20f873e680 100644 > --- a/ArmPkg/Library/StandaloneMmMmuLib/AArch64/ArmMmuStandaloneMmLib.c > +++ b/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.c > @@ -2,6 +2,7 @@ > File managing the MMU for ARMv8 architecture in S-EL0 > > Copyright (c) 2017 - 2021, Arm Limited. All rights reserved.
> + Copyright (c) 2021, Linaro Limited > SPDX-License-Identifier: BSD-2-Clause-Patent > > @par Reference(s): > @@ -62,7 +63,7 @@ SendMemoryPermissionRequest ( > // for other Direct Request calls which are not atomic > // We therefore check only for Direct Response by the > // callee. > - if (SvcArgs->Arg0 == ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP_AARCH64) { > + if (SvcArgs->Arg0 == ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP) { > // A Direct Response means FF-A success > // Now check the payload for errors > // The callee sends back the return value > @@ -164,13 +165,13 @@ GetMemoryPermissions ( > ZeroMem (&SvcArgs, sizeof (ARM_SVC_ARGS)); > if (FeaturePcdGet (PcdFfaEnable)) { > // See [2], Section 10.2 FFA_MSG_SEND_DIRECT_REQ. > - SvcArgs.Arg0 = ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ_AARCH64; > + SvcArgs.Arg0 = ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ; > SvcArgs.Arg1 = ARM_FFA_DESTINATION_ENDPOINT_ID; > SvcArgs.Arg2 = 0; > - SvcArgs.Arg3 = ARM_SVC_ID_SP_GET_MEM_ATTRIBUTES_AARCH64; > + SvcArgs.Arg3 = ARM_SVC_ID_SP_GET_MEM_ATTRIBUTES; > SvcArgs.Arg4 = BaseAddress; > } else { > - SvcArgs.Arg0 = ARM_SVC_ID_SP_GET_MEM_ATTRIBUTES_AARCH64; > + SvcArgs.Arg0 = ARM_SVC_ID_SP_GET_MEM_ATTRIBUTES; > SvcArgs.Arg1 = BaseAddress; > SvcArgs.Arg2 = 0; > SvcArgs.Arg3 = 0; > @@ -219,15 +220,15 @@ RequestMemoryPermissionChange ( > ZeroMem (&SvcArgs, sizeof (ARM_SVC_ARGS)); > if (FeaturePcdGet (PcdFfaEnable)) { > // See [2], Section 10.2 FFA_MSG_SEND_DIRECT_REQ. > - SvcArgs.Arg0 = ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ_AARCH64; > + SvcArgs.Arg0 = ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ; > SvcArgs.Arg1 = ARM_FFA_DESTINATION_ENDPOINT_ID; > SvcArgs.Arg2 = 0; > - SvcArgs.Arg3 = ARM_SVC_ID_SP_SET_MEM_ATTRIBUTES_AARCH64; > + SvcArgs.Arg3 = ARM_SVC_ID_SP_SET_MEM_ATTRIBUTES; > SvcArgs.Arg4 = BaseAddress; > SvcArgs.Arg5 = EFI_SIZE_TO_PAGES (Length); > SvcArgs.Arg6 = Permissions; > } else { > - SvcArgs.Arg0 = ARM_SVC_ID_SP_SET_MEM_ATTRIBUTES_AARCH64; > + SvcArgs.Arg0 = ARM_SVC_ID_SP_SET_MEM_ATTRIBUTES; > SvcArgs.Arg1 = BaseAddress; > SvcArgs.Arg2 = EFI_SIZE_TO_PAGES (Length); > SvcArgs.Arg3 = Permissions; > diff --git a/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.inf b/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.inf > index 6c71fe0023..ff20e58980 100644 > --- a/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.inf > +++ b/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.inf > @@ -16,14 +16,14 @@ > LIBRARY_CLASS = StandaloneMmMmuLib > PI_SPECIFICATION_VERSION = 0x00010032 > > -[Sources.AARCH64] > - AArch64/ArmMmuStandaloneMmLib.c > +[Sources] > + ArmMmuStandaloneMmLib.c > > [Packages] > ArmPkg/ArmPkg.dec > MdePkg/MdePkg.dec > > -[FeaturePcd.AARCH64] > +[FeaturePcd.ARM, FeaturePcd.AARCH64] > gArmTokenSpaceGuid.PcdFfaEnable > > [LibraryClasses]