public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ard Biesheuvel" <ard.biesheuvel@arm.com>
To: "Yao, Jiewen" <jiewen.yao@intel.com>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	"sami.mujawar@arm.com" <sami.mujawar@arm.com>,
	"supreeth.venkatesh@arm.com" <supreeth.venkatesh@arm.com>
Cc: "devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [RFC edk2 v1] StandaloneMmPkg: Relocatable version for StandAloneMM
Date: Tue, 9 Jun 2020 00:25:05 +0200	[thread overview]
Message-ID: <620e1818-a66e-49cd-f672-e18e59c8143a@arm.com> (raw)
In-Reply-To: <BL0PR11MB3412BAE19C030A9FF157F55C8C840@BL0PR11MB3412.namprd11.prod.outlook.com>

On 6/7/20 3:17 AM, Yao, Jiewen wrote:
> Hi Ilias
> It seems a good idea to support relocatable StMM.
> 

Agreed.

> Thought on StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
> Usually we do not add special link option in INF and build a module to be ELF for some special purposes.
> Things might be broken if X86 platform uses this INF to build Relocatable image with visual studio or with GCC.
> 

We do for some platforms in ArmVirtPkg, but I agree it is better to use 
the PE/COFF library code for this.

I have sent out some patches to update the ArmVirtPkg use cases (note to 
Sami: we will need to update the KvmTool port accordingly as well), and 
I will work with Ilias to adopt this approach for the standalone MM core.


> Do you think if it is possible to still create a self-relocatable StandaloneMmCore as a PE image, instead of ELF ?
> One example is at : https://github.com/jyao1/STM/blob/master/Stm/StmPkg/Core/Init/StmInit.c#L1096
> Then we may reuse the generic PeCoff library in C code before any global variable access.
> No special assembly code or link script required. And no need to add a PCD.
> 
> Thank you
> Yao Jiewen
> 
> 
>> -----Original Message-----
>> From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
>> Sent: Saturday, June 6, 2020 4:52 PM
>> To: ard.biesheuvel@arm.com; sami.mujawar@arm.com; Yao, Jiewen
>> <jiewen.yao@intel.com>; supreeth.venkatesh@arm.com
>> Cc: devel@edk2.groups.io; Ilias Apalodimas <ilias.apalodimas@linaro.org>
>> Subject: [RFC edk2 v1] StandaloneMmPkg: Relocatable version for
>> StandAloneMM
>>
>> With work currently being done in OP-TEE [1] and U-boot [2], we can
>> compile StandAloneMM as a single binary [3] and load it from OP-TEE in
>> an isolated partition that behahes similarly to SPM.
>> By doing so we reuse existing code from EDK2 for the UEFI variable
>> storage regardless of the firmware implementation. Another advantage is
>> that OP-TEE combined with U-Boot's OP-TEE supplicant can use the RPMB
>> partition of an eMMC and securely store EFI variables instead of solely
>> relying on a secure world flash [4].
>>
>> Since StMM can be compiled as a binary that runs on OP-TEE, we need to
>> make it self-relocatable. OP-TEE load address can be arbitrary depending
>> on memory layout or ASLR.
>> We could keep the current StandAloneMM implementation as-is and duplicate
>> StandaloneMmCoreEntryPoint.c. Instead add two more .inf files for the
>> relocatable option and the relevant linker script, move the current
>> entry point into asm and add a FeaturePcd for enabling/disabling the
>> relocatable option.
>>
>> [1] https://github.com/apalos/optee_os/tree/stmm_upstream_03_clean
>> [2] https://github.com/u-boot/u-
>> boot/blob/master/lib/efi_loader/efi_variable_tee.c
>> [3] https://git.linaro.org/people/ilias.apalodimas/edk2-
>> platforms.git/tree/Platform/QemuVirt/PlatformStandaloneMm.dsc?h=stmm_rel
>> oc_combined
>> [4] https://git.linaro.org/people/ilias.apalodimas/edk2-
>> platforms.git/tree/Silicon/QemuVirt/Drivers/OpTeeRpmbFv/OpTeeRpmbFv.c?h=
>> stmm_reloc_combined
>>
>> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
>> ---
>>   StandaloneMmPkg/Core/Scripts/StMM-PIE.lds     |  54 +++++++++
>>   StandaloneMmPkg/Core/StandaloneMmCore.inf     |   3 +
>>   .../Core/StandaloneMmCoreRelocatable.inf      |  80 ++++++++++++++
>>   .../AArch64/ModuleEntryPoint.S                | 103 ++++++++++++++++++
>>   .../AArch64/StandaloneMmCoreEntryPoint.c      |   7 +-
>>   .../StandaloneMmCoreEntryPoint.inf            |   4 +
>>   .../StandaloneMmCoreEntryPointRelocatable.inf |  54 +++++++++
>>   StandaloneMmPkg/StandaloneMmPkg.dec           |   2 +
>>   8 files changed, 306 insertions(+), 1 deletion(-)
>>   create mode 100644 StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
>>   create mode 100644
>> StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
>>   create mode 100644
>> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEntr
>> yPoint.S
>>   create mode 100644
>> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreE
>> ntryPointRelocatable.inf
>>
>> diff --git a/StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
>> b/StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
>> new file mode 100644
>> index 000000000000..a1d7012c4ca3
>> --- /dev/null
>> +++ b/StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
>> @@ -0,0 +1,54 @@
>> +/** @file
>>
>> +
>>
>> +  Copyright (c) 2015, Linaro Ltd. All rights reserved.<BR>
>>
>> +
>>
>> +  SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> +
>>
>> +**/
>>
>> +
>>
>> +SECTIONS
>>
>> +{
>>
>> +  PROVIDE(__reloc_base = .);
>>
>> +
>>
>> +  . = PECOFF_HEADER_SIZE;
>>
>> +  .text : ALIGN(CONSTANT(COMMONPAGESIZE)) {
>>
>> +    *(.text.reloc*)
>>
>> +    . = ALIGN(0x1000);
>>
>> +    PROVIDE(__stmm_start = .);
>>
>> +    *(.text .text*)
>>
>> +    . = ALIGN(0x20);
>>
>> +    PROVIDE(__reloc_start = .);
>>
>> +    *(.rel .rel.*)
>>
>> +    *(.rela .rela.*)
>>
>> +    PROVIDE(__reloc_end = .);
>>
>> +  }
>>
>> +  PROVIDE(__ro_start = .);
>>
>> +  .got : ALIGN(CONSTANT(COMMONPAGESIZE)) {
>>
>> +    *(.got .got*)
>>
>> +  }
>>
>> +  .rodata : ALIGN(CONSTANT(COMMONPAGESIZE)) {
>>
>> +    *(.rodata .rodata*)
>>
>> +  }
>>
>> +  PROVIDE(__ro_end = .);
>>
>> +  .data : ALIGN(CONSTANT(COMMONPAGESIZE)) {
>>
>> +    *(.data .data*)
>>
>> +  }
>>
>> +  .bss : ALIGN(CONSTANT(COMMONPAGESIZE)) {
>>
>> +    *(.bss .bss*)
>>
>> +  }
>>
>> +  PROVIDE(__stmm_end = .);
>>
>> +
>>
>> +  .note (INFO) : { *(.note.gnu.build-id) }
>>
>> +
>>
>> +  /DISCARD/ : {
>>
>> +    *(.note.GNU-stack)
>>
>> +    *(.gnu.hash)
>>
>> +    *(.gnu_debuglink)
>>
>> +    *(.interp)
>>
>> +    *(.dynamic)
>>
>> +    *(.dynsym)
>>
>> +    *(.dynstr)
>>
>> +    *(.hash)
>>
>> +    *(.comment)
>>
>> +  }
>>
>> +}
>>
>> diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf
>> b/StandaloneMmPkg/Core/StandaloneMmCore.inf
>> index 7d590b49bd3f..fdd4b61b3665 100644
>> --- a/StandaloneMmPkg/Core/StandaloneMmCore.inf
>> +++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf
>> @@ -74,3 +74,6 @@
>>     gEfiEventLegacyBootGuid
>>
>>     gEfiEventExitBootServicesGuid
>>
>>     gEfiEventReadyToBootGuid
>>
>> +
>>
>> +[BuildOptions]
>>
>> +  GCC:*_*_*_DLINK_FLAGS = -Wl,-T,$(MODULE_DIR)/Scripts/StMM-PIE.lds
>>
>> diff --git a/StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
>> b/StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
>> new file mode 100644
>> index 000000000000..69049080ef78
>> --- /dev/null
>> +++ b/StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
>> @@ -0,0 +1,80 @@
>> +## @file
>>
>> +# This module provide an SMM CIS compliant implementation of SMM Core.
>>
>> +#
>>
>> +# Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
>>
>> +# Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.<BR>
>>
>> +# Copyright (c) 2020, Linaro Limited. All rights reserved.<BR>
>>
>> +#
>>
>> +# SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> +#
>>
>> +##
>>
>> +
>>
>> +[Defines]
>>
>> +  INF_VERSION                    = 0x0001001A
>>
>> +  BASE_NAME                      = StandaloneMmCore
>>
>> +  FILE_GUID                      = 6E14B6FD-3600-4DD6-A17A-206B3B6DCE16
>>
>> +  MODULE_TYPE                    = MM_CORE_STANDALONE
>>
>> +  VERSION_STRING                 = 1.0
>>
>> +  PI_SPECIFICATION_VERSION       = 0x00010032
>>
>> +  ENTRY_POINT                    = StandaloneMmMain
>>
>> +
>>
>> +#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
>>
>> +
>>
>> +[Sources]
>>
>> +  StandaloneMmCore.c
>>
>> +  StandaloneMmCore.h
>>
>> +  StandaloneMmCorePrivateData.h
>>
>> +  Page.c
>>
>> +  Pool.c
>>
>> +  Handle.c
>>
>> +  Locate.c
>>
>> +  Notify.c
>>
>> +  Dependency.c
>>
>> +  Dispatcher.c
>>
>> +  Mmi.c
>>
>> +  InstallConfigurationTable.c
>>
>> +  FwVol.c
>>
>> +
>>
>> +[Packages]
>>
>> +  MdePkg/MdePkg.dec
>>
>> +  MdeModulePkg/MdeModulePkg.dec
>>
>> +  StandaloneMmPkg/StandaloneMmPkg.dec
>>
>> +
>>
>> +[LibraryClasses]
>>
>> +  BaseLib
>>
>> +  BaseMemoryLib
>>
>> +  CacheMaintenanceLib
>>
>> +  DebugLib
>>
>> +  ExtractGuidedSectionLib
>>
>> +  FvLib
>>
>> +  HobLib
>>
>> +  MemoryAllocationLib
>>
>> +  MemLib
>>
>> +  PeCoffLib
>>
>> +  ReportStatusCodeLib
>>
>> +  StandaloneMmCoreEntryPoint
>>
>> +
>>
>> +[Protocols]
>>
>> +  gEfiDxeMmReadyToLockProtocolGuid             ## UNDEFINED #
>> SmiHandlerRegister
>>
>> +  gEfiMmReadyToLockProtocolGuid                ## PRODUCES
>>
>> +  gEfiMmEndOfDxeProtocolGuid                   ## PRODUCES
>>
>> +  gEfiLoadedImageProtocolGuid                   ## PRODUCES
>>
>> +  gEfiMmConfigurationProtocolGuid               ## CONSUMES
>>
>> +
>>
>> +[Guids]
>>
>> +  gAprioriGuid                                  ## SOMETIMES_CONSUMES   ## File
>>
>> +  gEfiEventDxeDispatchGuid                      ## PRODUCES             ## GUID #
>> SmiHandlerRegister
>>
>> +  gEfiEndOfDxeEventGroupGuid                    ## PRODUCES             ## GUID #
>> SmiHandlerRegister
>>
>> +  ## SOMETIMES_CONSUMES   ## GUID # Locate protocol
>>
>> +  ## SOMETIMES_PRODUCES   ## GUID # SmiHandlerRegister
>>
>> +  gEdkiiMemoryProfileGuid
>>
>> +  gZeroGuid                                     ## SOMETIMES_CONSUMES   ## GUID
>>
>> +  gEfiHobListGuid
>>
>> +  gMmCoreDataHobGuid
>>
>> +  gMmFvDispatchGuid
>>
>> +  gEfiEventLegacyBootGuid
>>
>> +  gEfiEventExitBootServicesGuid
>>
>> +  gEfiEventReadyToBootGuid
>>
>> +
>>
>> +[BuildOptions]
>>
>> +  GCC:*_*_*_DLINK_FLAGS = -Wl,-Bsymbolic,-pie,-
>> T,$(MODULE_DIR)/Scripts/StMM-PIE.lds
>>
>> diff --git
>> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEn
>> tryPoint.S
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEn
>> tryPoint.S
>> new file mode 100644
>> index 000000000000..90ff4579daa6
>> --- /dev/null
>> +++
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEn
>> tryPoint.S
>> @@ -0,0 +1,103 @@
>> +//
>>
>> +//  Copyright (c) 2011-2013, ARM Limited. All rights reserved.
>>
>> +//  Copyright (c) 2015-2020, Linaro Limited. All rights reserved.
>>
>> +//
>>
>> +//  SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> +//
>>
>> +//
>>
>> +
>>
>> +#include <AsmMacroIoLibV8.h>
>>
>> +ASM_FUNC(_ModuleEntryPoint)
>>
>> +  adr   x8, FeaturePcdGet (PcdStMMReloc)
>>
>> +  ldrb  w9, [x8]
>>
>> +  cmp   x9, #0
>>
>> +  // If PcdStMMReloc is set to TRUE, go ahead and fixup the relocations here
>>
>> +  beq   .Llaunch
>>
>> +  adr   x8, __reloc_base
>>
>> +  adr   x9, __reloc_start
>>
>> +  adr   x10, __reloc_end
>>
>> +  bl    ASM_PFX(_DoReloc)
>>
>> +.Llaunch:
>>
>> +  b     ModuleEntryPoint
>>
>> +
>>
>> +.section .text.reloc, "ax"
>>
>> +ASM_PFX(_DoReloc):
>>
>> +  mov x20, x0
>>
>> +  mov x21, x1
>>
>> +  mov x22, x2
>>
>> +  mov x23, x3
>>
>> +
>>
>> +  // Set all of the memory as r/w
>>
>> +  adr x11, __stmm_start
>>
>> +  adr x2, __stmm_end
>>
>> +  ldr x0, =0xC4000065
>>
>> +  and x1, x11, #~0x0fff      // Align to page
>>
>> +  sub x2, x2, x11
>>
>> +  add x2, x2, #0xfff
>>
>> +  lsr x2, x2, #12            // nr pages
>>
>> +  ldr x3, =0x5               // Set perms to r/w
>>
>> +  svc #0
>>
>> +  // Prevent speculative execution beyond svc instruction
>>
>> +  dsb nsh
>>
>> +  isb
>>
>> +
>>
>> +.Lreloc_loop:
>>
>> +  cmp   x9, x10
>>
>> +  bhs   .Lreloc_done
>>
>> +  //
>>
>> +  // We are built as a ET_DYN PIE executable, so we need to process all
>>
>> +  // relative relocations regardless of whether or not we are executing from
>>
>> +  // the same offset we were linked at. This is only possible if we are
>>
>> +  // running from RAM.
>>
>> +  //
>>
>> +  // AArch64 uses the ELF64 RELA format, which means each entry in the
>>
>> +  // relocation table consists of
>>
>> +  //
>>
>> +  //   UINT64 offset          : the relative offset of the value that needs to
>>
>> +  //                            be relocated
>>
>> +  //   UINT64 info            : relocation type and symbol index (the latter is
>>
>> +  //                            not used for R_AARCH64_RELATIVE relocations)
>>
>> +  //   UINT64 addend          : value to be added to the value being relocated
>>
>> +  //
>>
>> +  ldp   x11, x12, [x9], #24   // read offset into x11 and info into x12
>>
>> +  cmp   x12, #0x403           // check info == R_AARCH64_RELATIVE?
>>
>> +  bne   .Lreloc_loop          // not a relative relocation? then skip
>>
>> +  ldr   x12, [x9, #-8]        // read addend into x12
>>
>> +  add   x12, x12, x8          // add reloc base to addend to get relocated value
>>
>> +  str   x12, [x11, x8]        // write relocated value at offset
>>
>> +  b     .Lreloc_loop
>>
>> +
>>
>> +.Lreloc_done:
>>
>> +  // set memory per section
>>
>> +  adr x11, __stmm_start
>>
>> +  adr x2, __reloc_end
>>
>> +  ldr x0, =0xC4000065
>>
>> +  and x1, x11, #~0x0fff      // Align to page
>>
>> +  sub x2, x2, x11
>>
>> +  add x2, x2, #0xfff
>>
>> +  lsr x2, x2, #12            // nr pages
>>
>> +  ldr x3, =0x3               // Set perms to r/x
>>
>> +  svc #0
>>
>> +  // Prevent speculative execution beyond svc instruction
>>
>> +  dsb nsh
>>
>> +  isb
>>
>> +
>>
>> +  adr   x11, __ro_start
>>
>> +  adr   x2, __ro_end
>>
>> +  ldr x0, =0xC4000065
>>
>> +  and x1, x11, #~0x0fff      // Align to page
>>
>> +  sub x2, x2, x11
>>
>> +  add x2, x2, #0xfff
>>
>> +  lsr x2, x2, #12            // nr pages
>>
>> +  ldr x3, =0x1               // Set perms to r/o
>>
>> +  svc #0
>>
>> +  // Prevent speculative execution beyond svc instruction
>>
>> +  dsb nsh
>>
>> +  isb
>>
>> +
>>
>> +  mov x0, x20
>>
>> +  mov x1, x21
>>
>> +  mov x2, x22
>>
>> +  mov x3, x23
>>
>> +
>>
>> +  ret
>>
>> diff --git
>> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
>> eMmCoreEntryPoint.c
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
>> eMmCoreEntryPoint.c
>> index 20723385113f..57c3162ab5d0 100644
>> ---
>> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
>> eMmCoreEntryPoint.c
>> +++
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
>> eMmCoreEntryPoint.c
>> @@ -22,6 +22,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>>   #include <Library/HobLib.h>
>>
>>   #include <Library/BaseLib.h>
>>
>>   #include <Library/BaseMemoryLib.h>
>>
>> +#include <Library/PcdLib.h>
>>
>>   #include <Library/SerialPortLib.h>
>>
>>
>>
>>   #include <IndustryStandard/ArmStdSmc.h>
>>
>> @@ -209,7 +210,7 @@ GetSpmVersion (VOID)
>>   **/
>>
>>   VOID
>>
>>   EFIAPI
>>
>> -_ModuleEntryPoint (
>>
>> +ModuleEntryPoint (
>>
>>     IN VOID    *SharedBufAddress,
>>
>>     IN UINT64  SharedBufSize,
>>
>>     IN UINT64  cookie1,
>>
>> @@ -238,6 +239,9 @@ _ModuleEntryPoint (
>>       goto finish;
>>
>>     }
>>
>>
>>
>> +  if (FeaturePcdGet (PcdStMMReloc)) {
>>
>> +    goto skip_remap;
>>
>> +  }
>>
>>     // Locate PE/COFF File information for the Standalone MM core module
>>
>>     Status = LocateStandaloneMmCorePeCoffData (
>>
>>                (EFI_FIRMWARE_VOLUME_HEADER *) PayloadBootInfo->SpImageBase,
>>
>> @@ -276,6 +280,7 @@ _ModuleEntryPoint (
>>       goto finish;
>>
>>     }
>>
>>
>>
>> +skip_remap:
>>
>>     //
>>
>>     // Create Hoblist based upon boot information passed by privileged software
>>
>>     //
>>
>> diff --git
>> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
>> eEntryPoint.inf
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
>> eEntryPoint.inf
>> index 891c292e92f8..6659219404a5 100644
>> ---
>> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
>> eEntryPoint.inf
>> +++
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
>> eEntryPoint.inf
>> @@ -25,6 +25,7 @@
>>     AArch64/StandaloneMmCoreEntryPoint.c
>>
>>     AArch64/SetPermissions.c
>>
>>     AArch64/CreateHobList.c
>>
>> +  AArch64/ModuleEntryPoint.S
>>
>>
>>
>>   [Packages]
>>
>>     MdePkg/MdePkg.dec
>>
>> @@ -48,3 +49,6 @@
>>     gEfiMmPeiMmramMemoryReserveGuid
>>
>>     gEfiStandaloneMmNonSecureBufferGuid
>>
>>     gEfiArmTfCpuDriverEpDescriptorGuid
>>
>> +
>>
>> +[FeaturePcd]
>>
>> +  gStandaloneMmPkgTokenSpaceGuid.PcdStMMReloc|FALSE
>>
>> diff --git
>> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
>> eEntryPointRelocatable.inf
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
>> eEntryPointRelocatable.inf
>> new file mode 100644
>> index 000000000000..10cdae1b4018
>> --- /dev/null
>> +++
>> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
>> eEntryPointRelocatable.inf
>> @@ -0,0 +1,54 @@
>> +## @file
>>
>> +# Module entry point library for DXE core.
>>
>> +#
>>
>> +# Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
>>
>> +#
>>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> +#
>>
>> +#
>>
>> +##
>>
>> +
>>
>> +[Defines]
>>
>> +  INF_VERSION                    = 0x0001001A
>>
>> +  BASE_NAME                      = StandaloneMmCoreEntryPoint
>>
>> +  FILE_GUID                      = C97AC593-109A-4C63-905C-675FDE2689E8
>>
>> +  MODULE_TYPE                    = MM_CORE_STANDALONE
>>
>> +  VERSION_STRING                 = 1.0
>>
>> +  PI_SPECIFICATION_VERSION       = 0x00010032
>>
>> +  LIBRARY_CLASS                  =
>> StandaloneMmCoreEntryPoint|MM_CORE_STANDALONE
>>
>> +
>>
>> +#
>>
>> +#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
>>
>> +#
>>
>> +
>>
>> +[Sources.AARCH64]
>>
>> +  AArch64/StandaloneMmCoreEntryPoint.c
>>
>> +  AArch64/SetPermissions.c
>>
>> +  AArch64/CreateHobList.c
>>
>> +  AArch64/ModuleEntryPoint.S
>>
>> +
>>
>> +[Packages]
>>
>> +  MdePkg/MdePkg.dec
>>
>> +  MdeModulePkg/MdeModulePkg.dec
>>
>> +  StandaloneMmPkg/StandaloneMmPkg.dec
>>
>> +
>>
>> +[Packages.AARCH64]
>>
>> +  ArmPkg/ArmPkg.dec
>>
>> +  ArmPlatformPkg/ArmPlatformPkg.dec
>>
>> +
>>
>> +[LibraryClasses]
>>
>> +  BaseLib
>>
>> +  DebugLib
>>
>> +
>>
>> +[LibraryClasses.AARCH64]
>>
>> +  StandaloneMmMmuLib
>>
>> +  ArmSvcLib
>>
>> +
>>
>> +[Guids]
>>
>> +  gMpInformationHobGuid
>>
>> +  gEfiMmPeiMmramMemoryReserveGuid
>>
>> +  gEfiStandaloneMmNonSecureBufferGuid
>>
>> +  gEfiArmTfCpuDriverEpDescriptorGuid
>>
>> +
>>
>> +[FeaturePcd]
>>
>> +  gStandaloneMmPkgTokenSpaceGuid.PcdStMMReloc|TRUE
>>
>> diff --git a/StandaloneMmPkg/StandaloneMmPkg.dec
>> b/StandaloneMmPkg/StandaloneMmPkg.dec
>> index 82cb62568b53..cc572321a5b6 100644
>> --- a/StandaloneMmPkg/StandaloneMmPkg.dec
>> +++ b/StandaloneMmPkg/StandaloneMmPkg.dec
>> @@ -33,3 +33,5 @@
>>     gEfiStandaloneMmNonSecureBufferGuid      = { 0xf00497e3, 0xbfa2, 0x41a1,
>> { 0x9d, 0x29, 0x54, 0xc2, 0xe9, 0x37, 0x21, 0xc5 }}
>>
>>     gEfiArmTfCpuDriverEpDescriptorGuid       = { 0x6ecbd5a1, 0xc0f8, 0x4702,
>> { 0x83, 0x01, 0x4f, 0xc2, 0xc5, 0x47, 0x0a, 0x51 }}
>>
>>
>>
>> +[PcdsFeatureFlag]
>>
>> +
>> gStandaloneMmPkgTokenSpaceGuid.PcdStMMReloc|FALSE|BOOLEAN|0x00000
>> 001
>>
>> --
>> 2.27.0
> 


      parent reply	other threads:[~2020-06-08 22:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-06  8:52 [RFC edk2 v1] StandaloneMmPkg: Relocatable version for StandAloneMM Ilias Apalodimas
2020-06-07  1:17 ` Yao, Jiewen
2020-06-08 16:56   ` Ilias Apalodimas
2020-06-08 22:25   ` Ard Biesheuvel [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=620e1818-a66e-49cd-f672-e18e59c8143a@arm.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox