ArmPkg/ArmPkg.dec | 3 + .../Drivers/MmCommunicationDxe/MmCommunication.c | 339 +++++++ .../Drivers/MmCommunicationDxe/MmCommunication.inf | 50 + ArmPkg/Include/IndustryStandard/ArmMmSvc.h | 9 +- ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c | 146 +++ ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf | 37 + .../DebugPeCoffExtraActionLib.c | 185 +++- .../DebugPeCoffExtraActionLib.inf | 7 + BaseTools/Source/Python/AutoGen/GenC.py | 16 +- .../Application/MmCommTestApp/MmCommTest.c | 81 ++ .../Application/MmCommTestApp/MmCommTest.h | 37 + .../Application/MmCommTestApp/MmCommTest.inf | 57 ++ StandaloneMmPkg/Core/Dependency.c | 389 +++++++ StandaloneMmPkg/Core/Dispatcher.c | 1071 ++++++++++++++++++++ StandaloneMmPkg/Core/FwVol.c | 104 ++ StandaloneMmPkg/Core/Handle.c | 533 ++++++++++ StandaloneMmPkg/Core/InstallConfigurationTable.c | 178 ++++ StandaloneMmPkg/Core/Locate.c | 496 +++++++++ StandaloneMmPkg/Core/Mmi.c | 337 ++++++ StandaloneMmPkg/Core/Notify.c | 203 ++++ StandaloneMmPkg/Core/Page.c | 384 +++++++ StandaloneMmPkg/Core/Pool.c | 287 ++++++ StandaloneMmPkg/Core/StandaloneMmCore.c | 747 ++++++++++++++ StandaloneMmPkg/Core/StandaloneMmCore.h | 903 +++++++++++++++++ StandaloneMmPkg/Core/StandaloneMmCore.inf | 82 ++ StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h | 66 ++ StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S | 33 + StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c | 231 +++++ StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c | 229 +++++ .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h | 89 ++ .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf | 60 ++ StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c | 51 + StandaloneMmPkg/Include/Guid/MmCoreData.h | 132 +++ StandaloneMmPkg/Include/Guid/MmFvDispatch.h | 38 + StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h | 62 ++ StandaloneMmPkg/Include/Guid/MpInformation.h | 41 + .../Library/Arm/StandaloneMmCoreEntryPoint.h | 232 +++++ StandaloneMmPkg/Include/Library/FvLib.h | 109 ++ StandaloneMmPkg/Include/Library/MemLib.h | 140 +++ .../Include/Library/MmCoreStandaloneEntryPoint.h | 101 ++ .../Include/Library/MmDriverStandaloneEntryPoint.h | 148 +++ StandaloneMmPkg/Include/StandaloneMm.h | 36 + StandaloneMmPkg/Library/FvLib/FvLib.c | 366 +++++++ StandaloneMmPkg/Library/FvLib/FvLib.inf | 57 ++ StandaloneMmPkg/Library/HobLib/Arm/HobLib.c | 697 +++++++++++++ StandaloneMmPkg/Library/HobLib/HobLib.inf | 45 + StandaloneMmPkg/Library/MemLib/Arm/MemLib.c | 276 +++++ StandaloneMmPkg/Library/MemLib/MemLib.inf | 47 + .../MemoryAllocationLib/MemoryAllocationLib.c | 907 +++++++++++++++++ .../MemoryAllocationLib/MemoryAllocationLib.inf | 49 + .../MemoryAllocationLib/MemoryAllocationServices.h | 38 + .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c | 200 ++++ .../Arm/SetPermissions.c | 278 +++++ .../Arm/StandaloneMmCoreEntryPoint.c | 264 +++++ .../StandaloneMmCoreEntryPoint.inf | 53 + .../StandaloneMmDriverEntryPoint.c | 102 ++ .../StandaloneMmDriverEntryPoint.inf | 41 + StandaloneMmPkg/StandaloneMmPkg.dec | 49 + StandaloneMmPkg/StandaloneMmPkg.dsc | 132 +++ StandaloneMmPkg/StandaloneMmPkg.fdf | 184 ++++ StandaloneMmPkg => StandaloneMmPkg~HEAD | 0 61 files changed, 12244 insertions(+), 20 deletions(-) create mode 100644 ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c create mode 100644 ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf create mode 100644 StandaloneMmPkg/Core/Dependency.c create mode 100644 StandaloneMmPkg/Core/Dispatcher.c create mode 100644 StandaloneMmPkg/Core/FwVol.c create mode 100644 StandaloneMmPkg/Core/Handle.c create mode 100644 StandaloneMmPkg/Core/InstallConfigurationTable.c create mode 100644 StandaloneMmPkg/Core/Locate.c create mode 100644 StandaloneMmPkg/Core/Mmi.c create mode 100644 StandaloneMmPkg/Core/Notify.c create mode 100644 StandaloneMmPkg/Core/Page.c create mode 100644 StandaloneMmPkg/Core/Pool.c create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.c create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.h create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.inf create mode 100644 StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c create mode 100644 StandaloneMmPkg/Include/Guid/MmCoreData.h create mode 100644 StandaloneMmPkg/Include/Guid/MmFvDispatch.h create mode 100644 StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h create mode 100644 StandaloneMmPkg/Include/Guid/MpInformation.h create mode 100644 StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h create mode 100644 StandaloneMmPkg/Include/Library/FvLib.h create mode 100644 StandaloneMmPkg/Include/Library/MemLib.h create mode 100644 StandaloneMmPkg/Include/Library/MmCoreStandaloneEntryPoint.h create mode 100644 StandaloneMmPkg/Include/Library/MmDriverStandaloneEntryPoint.h create mode 100644 StandaloneMmPkg/Include/StandaloneMm.h create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.c create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.inf create mode 100644 StandaloneMmPkg/Library/HobLib/Arm/HobLib.c create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf create mode 100644 StandaloneMmPkg/Library/MemLib/Arm/MemLib.c create mode 100644 StandaloneMmPkg/Library/MemLib/MemLib.inf create mode 100644 StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.c create mode 100644 StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.inf create mode 100644 StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationServices.h create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobList.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissions.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMmCoreEntryPoint.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreEntryPoint.inf create mode 100644 StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.inf create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf rename StandaloneMmPkg => StandaloneMmPkg~HEAD (100%)
*** PI Specification v1.5 "Volume 4: Management Mode Core Interface" introduces the concept of MM Standalone Mode. Initialization of this mode can be done during the SEC phase (Section 1.5.2). On ARMv8-A systems, ARM Trusted Firmware is responsible for launching the normal world firmware e.g. UEFI. The Standalone MM environment is instantiated in Secure EL0 as a separate firmware volume. It executes as BL32 Image under control of ARM TF which is instantiated in EL3. Both components execute in the AArch64 execution state. This patchset will build upon the StandaloneSmmPkg module originally contributed by Intel. This package can be used in conjunction with ARM Trusted Firmware to recreate a simple MM secure environment that demonstrates communication between two UEFI images where one is executing in the normal world and the other is executing in the secure world. The normal world image includes: MM Communication DXE runtime driver that implements the protocol for communication with the MM environment in the secure world. The secure world image includes: The MM Standalone framework. This patchset includes the proposed organization/structure. In order to be able to review the changes more effectively, the changes are present here: https://github.com/supven01/edk2.git (Branch: master) Steps to build MM Standalone images In user preferred "work" directory, execute the following shell commands git clone https://github.com/tianocore/edk2.git git checkout master git clone https://github.com/tianocore/edk2-platforms.git git checkout master mkdir arm-tf cd arm-tf git clone https://github.com/ARM-software/arm-trusted-firmware.git . git checkout master cd .. git clone https://git.linaro.org/uefi/uefi-tools.git . git checkout master The following will build the MM Standalone image which runs in secure world. ./uefi-tools/edk2-build.sh -b DEBUG fvp_mm_standalone The follwing will build the normal world UEFI image, ARM Trusted Firmware and a Firmware Image Package (FIP) that includes both the UEFI images. ./uefi-tools/edk2-build.sh -a ./arm-tf -b DEBUG fvp_mm_normal Boot Loader Stage 1 (BL1) binary and combined arm-tf/uefi firmware image package (fip) binary will be generated at: Build Output Build/ArmVExpress-FVP-AArch64-MM-Normal/DEBUG_GCC5/FV/bl1.bin Build/ArmVExpress-FVP-AArch64-MM-Normal/DEBUG_GCC5/FV/fip.bin Steps to run MM Standalone image 1. Download the ARMv8 Architecture FVP from https://silver.arm.com/download/download.tm?pv=3744408&p=1424570 For more information, please refer https://developer.arm.com/products/system-design/fixed-virtual-platforms 2. Install FVP into preferred "work" directory. 3. Create a shell script "run_mm.sh" in the same folder where "FVP_Base_AEMv8A-AEMv8A" is present. Sample Shell script below: ./FVP_Base_AEMv8A-AEMv8A -C cache_state_modelled=0 -C bp.secure_memory=1 -C bp.tzc_400.diagnostics=1 -C bp.pl011_uart0.untimed_fifos=0 -C cluster1.NUM_CORES=4 -C cluster0.NUM_CORES=4 -C bp.pl011_uart0.out_file=uart0.output -C bp.pl011_uart1.out_file=uart1.output -C bp.pl011_uart2.out_file=uart2.output -C bp.pl011_uart3.out_file=uart3.output -C bp.secureflashloader.fname="" -C bp.flashloader0.fname="" -S -R 4. ./run_mm.sh 5. Output can be seen on FVP console. 6. The normal world will boot to the UEFI shell. Sample Output MM Standalone Output (FVP UART2) SPM Version: Major=0x0, Minor=0x1 NumSpMemRegions - 0x6 SpMemBase - 0xFF200000 SpMemLimit - 0x100000000 SpImageBase - 0xFF200000 SpStackBase - 0xFF610000 SpHeapBase - 0xFF620000 SpNsCommBufBase - 0xFF600000 SpSharedBufBase - 0xFF500000 SpImageSize - 0x300000 SpPcpuStackSize - 0x2000 SpHeapSize - 0x9E0000 SpNsCommBufSize - 0x10000 SpPcpuSharedBufSize - 0x20000 NumCpus - 0x8 CpuInfo - 0xFF500680 Mpidr - 0x80000000 LinearId - 0x0 Flags - 0x1 Mpidr - 0x80000001 LinearId - 0x1 Flags - 0x0 Mpidr - 0x80000002 LinearId - 0x2 Flags - 0x0 Mpidr - 0x80000003 LinearId - 0x3 Flags - 0x0 Mpidr - 0x80000100 LinearId - 0x4 Flags - 0x0 Mpidr - 0x80000101 LinearId - 0x5 Flags - 0x0 Mpidr - 0x80000102 LinearId - 0x6 Flags - 0x0 Mpidr - 0x80000103 LinearId - 0x7 Flags - 0x0 Found Standalone MM PE data - 0xFF201000 Found Standalone MM PE data - 0xFF201000 Standalone MM Core PE-COFF SectionHeaderOffset - 0xF60, NumberOfSections - 3 UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 has 0x60000020 permissions UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 has .et name UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 has 0xFF202000 address UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 has 0x1000 data UpdateMmFoundationPeCoffPermissions: Ignoring section 0 of image at 0xFF201000 with 0x60000020 permissions UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 has 0xC0000040 permissions UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 has .aa name UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 has 0xFF217000 address UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 has 0x16000 data UpdateMmFoundationPeCoffPermissions: Mapping section 1 of image at 0xFF201000 with RW-XN permissions UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 has 0x42000040 permissions UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 has .eo name UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 has 0xFF218000 address UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 has 0x17000 data UpdateMmFoundationPeCoffPermissions: Mapping section 2 of image at 0xFF201000 with RO-XN permissions StandaloneMmCoreMemoryAllocationLibConstructor - 0xFF620000 MmramRangeCount - 0x6 MmramRanges[0]: 0x00000000FF200000 - 0x0000000000300000 MmramRanges[1]: 0x00000000FF500000 - 0x0000000000100000 MmramRanges[2]: 0x00000000FF600000 - 0x0000000000010000 MmramRanges[3]: 0x00000000FF610000 - 0x0000000000010000 MmramRanges[4]: 0x00000000FF620000 - 0x00000000000002C8 MmramRanges[5]: 0x00000000FF6202C8 - 0x00000000009DFD38 MmInitializeMemoryServices MmAddMemoryRegion 0 : 0x00000000FF200000 - 0x0000000000300000 MmAddMemoryRegion 1 : 0x00000000FF500000 - 0x0000000000100000 MmAddMemoryRegion 2 : 0x00000000FF600000 - 0x0000000000010000 MmAddMemoryRegion 3 : 0x00000000FF610000 - 0x0000000000010000 MmAddMemoryRegion 4 : 0x00000000FF620000 - 0x00000000000002C8 MmAddMemoryRegion 5 : 0x00000000FF6202C8 - 0x00000000009DFD38 mMmMemLibInternalMaximumSupportAddress = 0xFFFFFFFFF MmMain - 0xFF620000 MmramRangeCount - 0x6 MmramRanges[0]: 0x00000000FF200000 - 0x300000 MmramRanges[1]: 0x00000000FF500000 - 0x100000 MmramRanges[2]: 0x00000000FF600000 - 0x10000 MmramRanges[3]: 0x00000000FF610000 - 0x10000 MmramRanges[4]: 0x00000000FF620000 - 0x2C8 MmramRanges[5]: 0x00000000FF6202C8 - 0x9DFD38 mMmramRangeCount - 0x6 mMmramRanges - 0xFFFFEE10 BFV address - 0xFF200000 BFV size - 0x300000 MmInstallConfigurationTable For HobList HobSize - 0x2C8 MmHobStart - 0xFFFFE810 MmRegisterProtocolNotify - MmConfigurationMmProtocol Mm Dispatch StandaloneBfvAddress - 0xFF200000 MmCoreFfsFindMmDriver - 0xFF200000 FvIsBeingProcesssed - 0xFF200000 Check MmFileTypes - 0xA Check MmFileTypes - 0xE Find PE data - 0xFF219024 MmAddToDriverList - 58F7A62B-6280-42A7-BC38-10535A64A92C (0xFF219024) MmDispatcher Drain the Scheduled Queue Search DriverList for items to place on Scheduled Queue DriverEntry (Discovered) - 58F7A62B-6280-42A7-BC38-10535A64A92C Evaluate MM DEPEX for FFS(58F7A62B-6280-42A7-BC38-10535A64A92C) TRUE END RESULT = TRUE Drain the Scheduled Queue DriverEntry (Scheduled) - 58F7A62B-6280-42A7-BC38-10535A64A92C MmLoadImage - 58F7A62B-6280-42A7-BC38-10535A64A92C UpdatePeCoffPermissions: Mapping section 0 of image at 0xFFFE7000 with RO-XN permissions and size 0x7000 UpdatePeCoffPermissions: Mapping section 0 of image at 0xFFFE7000 with RO-X permissions and size 0x7000 UpdatePeCoffPermissions: Mapping section 1 of image at 0xFFFEE000 with RW-XN permissions and size 0x1000 UpdatePeCoffPermissions: Mapping section 2 of image at 0xFFFEF000 with RO-XN permissions and size 0x1000 add-symbol-file /home/supven01/work/mm_upstream/Build/StandaloneMmPkg/DEBUG_GCC5/AARCH64/StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver/DEBUG/PiMmStandloneArmTfCpuDriver.dll 0xFFFE7000 Loading MM driver at 0x000FFFE6000 EntryPoint=0x000FFFE7000 PiMmStandloneArmTfCpuDriver.efi StartImage - 0xFFFE7000 (Standalone Mode) MmInstallProtocolInterface: 26EEB3DE-B689-492E-80F0-BE8BD7DA4BA7 FFFEE008 MmConfigurationMmNotify(26EEB3DE-B689-492E-80F0-BE8BD7DA4BA7) - FFFEE008 MM Core registered MM Entry Point address FF2041C0 MmInstallProtocolInterface: EB346B97-975F-4A9F-8B22-F8E92BB3D569 FFFEE018 Sharing Cpu Driver EP *0xFF217280 = 0xFFFE798C mNsCommBuffer.PhysicalStart - 0xFF600000 mNsCommBuffer.PhysicalSize - 0x10000 mNsCommBuffer: 0x00000000FF600000 - 0x10000 mMpInformationHobData: 0x0000000000000008 - 0x8 mMpInformationHobData[0x80000000]: 0, 0, 0 mMpInformationHobData[0x80000001]: 0, 1, 1 mMpInformationHobData[0x80000002]: 0, 2, 2 mMpInformationHobData[0x80000003]: 0, 3, 3 mMpInformationHobData[0x80000100]: 1, 0, 0 mMpInformationHobData[0x80000101]: 1, 1, 1 mMpInformationHobData[0x80000102]: 1, 2, 2 mMpInformationHobData[0x80000103]: 1, 3, 3 MmiHandlerRegister - GUID B65694CC-09E3-4C3B-B5CD-05F44D3CDBFF - Status 0 MmiHandlerRegister - GUID 7081E22F-CAC6-4053-9468-675782CF88E5 - Status 0 MmiHandlerRegister - GUID 60FF8964-E906-41D0-AFED-F241E974E08E - Status 0 MmiHandlerRegister - GUID 02CE967A-DD7E-4FFC-9EE7-810CF0470880 - Status 0 MmiHandlerRegister - GUID 2A571201-4966-47F6-8B86-F31E41F32F10 - Status 0 MmiHandlerRegister - GUID 27ABF055-B1B8-4C26-8048-748F37BAA2DF - Status 0 MmiHandlerRegister - GUID 7CE88FB3-4BD7-4679-87A8-A8D8DEE50D2B - Status 0 MmMain Done! Shared Cpu Driver EP 0xFFFE798C ARM TF (FVP UART0) NOTICE: Booting Trusted Firmware NOTICE: BL1: v1.4(debug):v1.4-96-gae48aad7-dirty NOTICE: BL1: Built : 16:14:26, Nov 1 2017 INFO: BL1: RAM 0x4036000 - 0x403c000 INFO: BL1: Loading BL2 INFO: Loading image id=1 at address 0x4027000 INFO: Image id=1 loaded: 0x4027000 - 0x402c2a8 NOTICE: BL1: Booting BL2 INFO: Entry point address = 0x4027000 INFO: SPSR = 0x3c5 NOTICE: BL2: v1.4(debug):v1.4-96-gae48aad7-dirty NOTICE: BL2: Built : 16:14:26, Nov 1 2017 INFO: BL2: Doing platform setup INFO: Configuring TrustZone Controller INFO: BL2: Loading image id 3 INFO: Loading image id=3 at address 0xff000000 INFO: Image id=3 loaded: 0xff000000 - 0xff00c230 INFO: BL2: Loading image id 4 INFO: Loading image id=4 at address 0xff200000 INFO: Image id=4 loaded: 0xff200000 - 0xff480000 INFO: BL2: Loading image id 5 INFO: Loading image id=5 at address 0x88000000 INFO: Image id=5 loaded: 0x88000000 - 0x88280000 NOTICE: BL1: Booting BL31 INFO: Entry point address = 0xff000000 INFO: SPSR = 0x3cd NOTICE: BL31: v1.4(debug):v1.4-96-gae48aad7-dirty NOTICE: BL31: Built : 16:14:26, Nov 1 2017 INFO: GICv3 with legacy support detected. ARM GICV3 driver initialized in EL3 INFO: BL31: Initializing runtime services INFO: BL31: Initializing BL32 NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC NOTICE: Start address : 0xff217000 NOTICE: Number of pages: 1 (4096 bytes) NOTICE: Attributes : 0x7 NOTICE: (Equivalent TF attributes: 0x22) NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC NOTICE: Start address : 0xff217000 NOTICE: Number of pages: 1 (4096 bytes) NOTICE: Attributes : 0x5 NOTICE: (Equivalent TF attributes: 0x2a) NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC NOTICE: Start address : 0xff218000 NOTICE: Number of pages: 1 (4096 bytes) NOTICE: Attributes : 0x7 NOTICE: (Equivalent TF attributes: 0x22) NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC NOTICE: Start address : 0xfffe7000 NOTICE: Number of pages: 7 (28672 bytes) NOTICE: Attributes : 0x7 NOTICE: (Equivalent TF attributes: 0x22) NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC NOTICE: Start address : 0xfffe7000 NOTICE: Number of pages: 7 (28672 bytes) NOTICE: Attributes : 0x3 NOTICE: (Equivalent TF attributes: 0x2) NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC NOTICE: Start address : 0xfffef000 NOTICE: Number of pages: 1 (4096 bytes) NOTICE: Attributes : 0x7 NOTICE: (Equivalent TF attributes: 0x22) INFO: BL31: Preparing for EL3 exit to normal world INFO: Entry point address = 0x88000000 INFO: SPSR = 0x3c9 UEFI firmware (version built at 16:14:14 on Nov 1 2017) *** Supreeth Venkatesh (18): ArmPkg: Add PCDs needed for MM communication driver. ArmPkg/Drivers: Add EFI_MM_COMMUNICATION_PROTOCOL DXE driver. ArmPkg/Include: Add MM interface SVC return codes. ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0. ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-EL0. StandaloneMmPkg: Add an AArch64 specific entry point library. StandaloneMmPkg/FvLib: Add a common FV Library for management mode. StandaloneMmPkg/MemLib: AARCH64 Specific instance of memory check library. StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library. StandaloneMmPkg/HobLib: Add AARCH64 Specific HOB Library for management mode. StandaloneMmPkg: MM driver entry point library. StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Platforms. StandaloneMmPkg/Core: Implementation of Standalone MM Core Module. StandaloneMmPkg: Describe the declaration, definition and fdf files. ArmPkg: Extra action to update permissions for S-ELO MM Image. BaseTools/AutoGen: Update header file for MM modules. StandaloneMmPkg: Add application to test MM communication protocol. StandaloneMmPkg: Add handler to handle event received from Normal World. ArmPkg/ArmPkg.dec | 3 + .../Drivers/MmCommunicationDxe/MmCommunication.c | 339 +++++++ .../Drivers/MmCommunicationDxe/MmCommunication.inf | 50 + ArmPkg/Include/IndustryStandard/ArmMmSvc.h | 9 +- ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c | 146 +++ ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf | 37 + .../DebugPeCoffExtraActionLib.c | 185 +++- .../DebugPeCoffExtraActionLib.inf | 7 + BaseTools/Source/Python/AutoGen/GenC.py | 16 +- .../Application/MmCommTestApp/MmCommTest.c | 81 ++ .../Application/MmCommTestApp/MmCommTest.h | 37 + .../Application/MmCommTestApp/MmCommTest.inf | 57 ++ StandaloneMmPkg/Core/Dependency.c | 389 +++++++ StandaloneMmPkg/Core/Dispatcher.c | 1071 ++++++++++++++++++++ StandaloneMmPkg/Core/FwVol.c | 104 ++ StandaloneMmPkg/Core/Handle.c | 533 ++++++++++ StandaloneMmPkg/Core/InstallConfigurationTable.c | 178 ++++ StandaloneMmPkg/Core/Locate.c | 496 +++++++++ StandaloneMmPkg/Core/Mmi.c | 337 ++++++ StandaloneMmPkg/Core/Notify.c | 203 ++++ StandaloneMmPkg/Core/Page.c | 384 +++++++ StandaloneMmPkg/Core/Pool.c | 287 ++++++ StandaloneMmPkg/Core/StandaloneMmCore.c | 747 ++++++++++++++ StandaloneMmPkg/Core/StandaloneMmCore.h | 903 +++++++++++++++++ StandaloneMmPkg/Core/StandaloneMmCore.inf | 82 ++ StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h | 66 ++ StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S | 33 + StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c | 231 +++++ StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c | 229 +++++ .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h | 89 ++ .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf | 60 ++ StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c | 51 + StandaloneMmPkg/Include/Guid/MmCoreData.h | 132 +++ StandaloneMmPkg/Include/Guid/MmFvDispatch.h | 38 + StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h | 62 ++ StandaloneMmPkg/Include/Guid/MpInformation.h | 41 + .../Library/Arm/StandaloneMmCoreEntryPoint.h | 232 +++++ StandaloneMmPkg/Include/Library/FvLib.h | 109 ++ StandaloneMmPkg/Include/Library/MemLib.h | 140 +++ .../Include/Library/MmCoreStandaloneEntryPoint.h | 101 ++ .../Include/Library/MmDriverStandaloneEntryPoint.h | 148 +++ StandaloneMmPkg/Include/StandaloneMm.h | 36 + StandaloneMmPkg/Library/FvLib/FvLib.c | 366 +++++++ StandaloneMmPkg/Library/FvLib/FvLib.inf | 57 ++ StandaloneMmPkg/Library/HobLib/Arm/HobLib.c | 697 +++++++++++++ StandaloneMmPkg/Library/HobLib/HobLib.inf | 45 + StandaloneMmPkg/Library/MemLib/Arm/MemLib.c | 276 +++++ StandaloneMmPkg/Library/MemLib/MemLib.inf | 47 + .../MemoryAllocationLib/MemoryAllocationLib.c | 907 +++++++++++++++++ .../MemoryAllocationLib/MemoryAllocationLib.inf | 49 + .../MemoryAllocationLib/MemoryAllocationServices.h | 38 + .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c | 200 ++++ .../Arm/SetPermissions.c | 278 +++++ .../Arm/StandaloneMmCoreEntryPoint.c | 264 +++++ .../StandaloneMmCoreEntryPoint.inf | 53 + .../StandaloneMmDriverEntryPoint.c | 102 ++ .../StandaloneMmDriverEntryPoint.inf | 41 + StandaloneMmPkg/StandaloneMmPkg.dec | 49 + StandaloneMmPkg/StandaloneMmPkg.dsc | 132 +++ StandaloneMmPkg/StandaloneMmPkg.fdf | 184 ++++ StandaloneMmPkg => StandaloneMmPkg~HEAD | 0 61 files changed, 12244 insertions(+), 20 deletions(-) create mode 100644 ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c create mode 100644 ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf create mode 100644 StandaloneMmPkg/Core/Dependency.c create mode 100644 StandaloneMmPkg/Core/Dispatcher.c create mode 100644 StandaloneMmPkg/Core/FwVol.c create mode 100644 StandaloneMmPkg/Core/Handle.c create mode 100644 StandaloneMmPkg/Core/InstallConfigurationTable.c create mode 100644 StandaloneMmPkg/Core/Locate.c create mode 100644 StandaloneMmPkg/Core/Mmi.c create mode 100644 StandaloneMmPkg/Core/Notify.c create mode 100644 StandaloneMmPkg/Core/Page.c create mode 100644 StandaloneMmPkg/Core/Pool.c create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.c create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.h create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.inf create mode 100644 StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c create mode 100644 StandaloneMmPkg/Include/Guid/MmCoreData.h create mode 100644 StandaloneMmPkg/Include/Guid/MmFvDispatch.h create mode 100644 StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h create mode 100644 StandaloneMmPkg/Include/Guid/MpInformation.h create mode 100644 StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h create mode 100644 StandaloneMmPkg/Include/Library/FvLib.h create mode 100644 StandaloneMmPkg/Include/Library/MemLib.h create mode 100644 StandaloneMmPkg/Include/Library/MmCoreStandaloneEntryPoint.h create mode 100644 StandaloneMmPkg/Include/Library/MmDriverStandaloneEntryPoint.h create mode 100644 StandaloneMmPkg/Include/StandaloneMm.h create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.c create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.inf create mode 100644 StandaloneMmPkg/Library/HobLib/Arm/HobLib.c create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf create mode 100644 StandaloneMmPkg/Library/MemLib/Arm/MemLib.c create mode 100644 StandaloneMmPkg/Library/MemLib/MemLib.inf create mode 100644 StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.c create mode 100644 StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.inf create mode 100644 StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationServices.h create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobList.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissions.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMmCoreEntryPoint.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreEntryPoint.inf create mode 100644 StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.inf create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf rename StandaloneMmPkg => StandaloneMmPkg~HEAD (100%) -- 2.16.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Thank you for this great work. Comment below: 1) I don't have comment for ArmPkg update (0001~0005, 0015) - I expect Arm expert will help on that. :-) 2) BaseTool (0016), reviewed-by: Jiewen.yao@intel.com 3) StandaloneMmPkg 3.1) 0007 - I think we need add ExHeader check and alignment enforcement for FfsFileHeader. FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FwVolHeader + FwVolHeader->HeaderLength); You may refer to https://github.com/tianocore/edk2/blob/master/SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.c GetFfsByName() if (FvHeader->ExtHeaderOffset != 0) { FvExtHeader = (EFI_FIRMWARE_VOLUME_EXT_HEADER *)((UINT8 *)FvHeader + FvHeader->ExtHeaderOffset); FfsHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FvExtHeader + FvExtHeader->ExtHeaderSize); } else { FfsHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FvHeader + FvHeader->HeaderLength); } FfsHeader = (EFI_FFS_FILE_HEADER *)((UINTN)FvHeader + ALIGN_VALUE((UINTN)FfsHeader - (UINTN)FvHeader, 8)); 3.2) 0008 - I think we need rename MmCopyMemToSmram to MmCopyMemToMmram, and MmCopyMemFromSmram to MmCopyMemFromMmram. Also if this MemLib is only for MM_STANDALONE, we should name it StandaloneMmMemLib. 3.3) 0009 - If this MemoryAllocationLib is only for MM_CORE_STANDALONE, we should name it StandaloneMmCoreMemoryAllocationLib. Also do we need StandaloneMmMemoryAllocationLib (non-Core version) for MmDriver ? (You may find that my POC zip has both StandaloneSmmCoreMemoryAllocationLib and StandaloneSmmMemoryAllocationLib.) 3.4) 0010 - If this HobLib is only for MM_STANDALONE, we should name it StandaloneMmHobLib. 3.5) 0014 - I do not believe we should add FDF file here. StandaloneMmPkg should only provide the component. (such as MdeModulePkg). The FDF file should be in a real project. 3.6) 0017/0018 - they are only for unit test. I do not think we should check in them. Please discard them when you check in the series. 3.x) 0006/0011/0012/0013, they are good so far. We may do some enhancement to move common logic out of Arm directory. But that can be done later, when we add X86 content there. reviewed-by: Jiewen.yao@intel.com Thank you Yao Jiewen > -----Original Message----- > From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com] > Sent: Friday, April 6, 2018 10:42 PM > To: edk2-devel@lists.01.org > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming > <liming.gao@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; > achin.gupta@arm.com; leif.lindholm@linaro.org; ard.biesheuvel@linaro.org; > Supreeth Venkatesh <supreeth.venkatesh@arm.com> > Subject: [PATCH v1 00/18] *** Standalone Management Mode Core Interface > for AARCH64 Platforms *** > > *** > PI Specification v1.5 "Volume 4: Management Mode Core Interface" > introduces the concept of MM Standalone Mode. Initialization of this mode > can be done during the SEC phase (Section 1.5.2). > On ARMv8-A systems, ARM Trusted Firmware is responsible for launching > the normal world firmware e.g. UEFI. > > The Standalone MM environment is instantiated in Secure EL0 as a separate > firmware volume. It executes as BL32 Image under control of ARM TF > which is instantiated in EL3. Both components execute in the AArch64 execution > state. > This patchset will build upon the StandaloneSmmPkg module originally > contributed by Intel. > > This package can be used in conjunction with ARM Trusted Firmware > to recreate a simple MM secure environment that demonstrates communication > between two UEFI images where one is executing in the normal world and the > other is > executing in the secure world. > > The normal world image includes: > MM Communication DXE runtime driver that implements the protocol for > communication > with the MM environment in the secure world. > > The secure world image includes: > The MM Standalone framework. > > This patchset includes the proposed organization/structure. > In order to be able to review the changes more effectively, the changes are > present here: > https://github.com/supven01/edk2.git (Branch: master) > > Steps to build MM Standalone images > In user preferred "work" directory, execute the following shell commands > > git clone https://github.com/tianocore/edk2.git > git checkout master > > git clone https://github.com/tianocore/edk2-platforms.git > git checkout master > > mkdir arm-tf > cd arm-tf > git clone https://github.com/ARM-software/arm-trusted-firmware.git . > git checkout master > cd .. > > git clone https://git.linaro.org/uefi/uefi-tools.git . > git checkout master > > The following will build the MM Standalone image which runs in secure world. > ./uefi-tools/edk2-build.sh -b DEBUG fvp_mm_standalone > > The follwing will build the normal world UEFI image, ARM Trusted Firmware and > a Firmware Image Package (FIP) that includes both the UEFI images. > ./uefi-tools/edk2-build.sh -a ./arm-tf -b DEBUG fvp_mm_normal > > Boot Loader Stage 1 (BL1) binary and combined arm-tf/uefi firmware image > package (fip) binary will be generated at: > > Build Output > Build/ArmVExpress-FVP-AArch64-MM-Normal/DEBUG_GCC5/FV/bl1.bin > Build/ArmVExpress-FVP-AArch64-MM-Normal/DEBUG_GCC5/FV/fip.bin > > Steps to run MM Standalone image > 1. Download the ARMv8 Architecture FVP from > > https://silver.arm.com/download/download.tm?pv=3744408&p=1424570 > For more information, please refer > > https://developer.arm.com/products/system-design/fixed-virtual-platforms > 2. Install FVP into preferred "work" directory. > 3. Create a shell script "run_mm.sh" in the same folder where > "FVP_Base_AEMv8A-AEMv8A" is present. > Sample Shell script below: > ./FVP_Base_AEMv8A-AEMv8A > -C cache_state_modelled=0 > -C bp.secure_memory=1 > -C bp.tzc_400.diagnostics=1 > -C bp.pl011_uart0.untimed_fifos=0 > -C cluster1.NUM_CORES=4 > -C cluster0.NUM_CORES=4 > -C bp.pl011_uart0.out_file=uart0.output > -C bp.pl011_uart1.out_file=uart1.output > -C bp.pl011_uart2.out_file=uart2.output > -C bp.pl011_uart3.out_file=uart3.output > -C bp.secureflashloader.fname="" > -C bp.flashloader0.fname="" > -S -R > 4. ./run_mm.sh > 5. Output can be seen on FVP console. > 6. The normal world will boot to the UEFI shell. > > Sample Output > > MM Standalone Output (FVP UART2) > SPM Version: Major=0x0, Minor=0x1 > NumSpMemRegions - 0x6 > SpMemBase - 0xFF200000 > SpMemLimit - 0x100000000 > SpImageBase - 0xFF200000 > SpStackBase - 0xFF610000 > SpHeapBase - 0xFF620000 > SpNsCommBufBase - 0xFF600000 > SpSharedBufBase - 0xFF500000 > SpImageSize - 0x300000 > SpPcpuStackSize - 0x2000 > SpHeapSize - 0x9E0000 > SpNsCommBufSize - 0x10000 > SpPcpuSharedBufSize - 0x20000 > NumCpus - 0x8 > CpuInfo - 0xFF500680 > Mpidr - 0x80000000 > LinearId - 0x0 > Flags - 0x1 > Mpidr - 0x80000001 > LinearId - 0x1 > Flags - 0x0 > Mpidr - 0x80000002 > LinearId - 0x2 > Flags - 0x0 > Mpidr - 0x80000003 > LinearId - 0x3 > Flags - 0x0 > Mpidr - 0x80000100 > LinearId - 0x4 > Flags - 0x0 > Mpidr - 0x80000101 > LinearId - 0x5 > Flags - 0x0 > Mpidr - 0x80000102 > LinearId - 0x6 > Flags - 0x0 > Mpidr - 0x80000103 > LinearId - 0x7 > Flags - 0x0 > Found Standalone MM PE data - 0xFF201000 > Found Standalone MM PE data - 0xFF201000 > Standalone MM Core PE-COFF SectionHeaderOffset - 0xF60, NumberOfSections > - 3 > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 has > 0x60000020 permissions > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 > has .et name > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 has > 0xFF202000 address > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 has > 0x1000 data > UpdateMmFoundationPeCoffPermissions: Ignoring section 0 of image at > 0xFF201000 with 0x60000020 permissions > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 has > 0xC0000040 permissions > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 > has .aa name > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 has > 0xFF217000 address > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 has > 0x16000 data > UpdateMmFoundationPeCoffPermissions: Mapping section 1 of image at > 0xFF201000 with RW-XN permissions > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 has > 0x42000040 permissions > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 > has .eo name > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 has > 0xFF218000 address > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 has > 0x17000 data > UpdateMmFoundationPeCoffPermissions: Mapping section 2 of image at > 0xFF201000 with RO-XN permissions > StandaloneMmCoreMemoryAllocationLibConstructor - 0xFF620000 > MmramRangeCount - 0x6 > MmramRanges[0]: 0x00000000FF200000 - 0x0000000000300000 > MmramRanges[1]: 0x00000000FF500000 - 0x0000000000100000 > MmramRanges[2]: 0x00000000FF600000 - 0x0000000000010000 > MmramRanges[3]: 0x00000000FF610000 - 0x0000000000010000 > MmramRanges[4]: 0x00000000FF620000 - 0x00000000000002C8 > MmramRanges[5]: 0x00000000FF6202C8 - 0x00000000009DFD38 > MmInitializeMemoryServices > MmAddMemoryRegion 0 : 0x00000000FF200000 - 0x0000000000300000 > MmAddMemoryRegion 1 : 0x00000000FF500000 - 0x0000000000100000 > MmAddMemoryRegion 2 : 0x00000000FF600000 - 0x0000000000010000 > MmAddMemoryRegion 3 : 0x00000000FF610000 - 0x0000000000010000 > MmAddMemoryRegion 4 : 0x00000000FF620000 - 0x00000000000002C8 > MmAddMemoryRegion 5 : 0x00000000FF6202C8 - 0x00000000009DFD38 > mMmMemLibInternalMaximumSupportAddress = 0xFFFFFFFFF > MmMain - 0xFF620000 > MmramRangeCount - 0x6 > MmramRanges[0]: 0x00000000FF200000 - 0x300000 > MmramRanges[1]: 0x00000000FF500000 - 0x100000 > MmramRanges[2]: 0x00000000FF600000 - 0x10000 > MmramRanges[3]: 0x00000000FF610000 - 0x10000 > MmramRanges[4]: 0x00000000FF620000 - 0x2C8 > MmramRanges[5]: 0x00000000FF6202C8 - 0x9DFD38 > mMmramRangeCount - 0x6 > mMmramRanges - 0xFFFFEE10 > BFV address - 0xFF200000 > BFV size - 0x300000 > MmInstallConfigurationTable For HobList > HobSize - 0x2C8 > MmHobStart - 0xFFFFE810 > MmRegisterProtocolNotify - MmConfigurationMmProtocol > Mm Dispatch StandaloneBfvAddress - 0xFF200000 > MmCoreFfsFindMmDriver - 0xFF200000 > FvIsBeingProcesssed - 0xFF200000 > Check MmFileTypes - 0xA > Check MmFileTypes - 0xE > Find PE data - 0xFF219024 > MmAddToDriverList - 58F7A62B-6280-42A7-BC38-10535A64A92C > (0xFF219024) > MmDispatcher > Drain the Scheduled Queue > Search DriverList for items to place on Scheduled Queue > DriverEntry (Discovered) - 58F7A62B-6280-42A7-BC38-10535A64A92C > Evaluate MM DEPEX for FFS(58F7A62B-6280-42A7-BC38-10535A64A92C) > TRUE > END > RESULT = TRUE > Drain the Scheduled Queue > DriverEntry (Scheduled) - 58F7A62B-6280-42A7-BC38-10535A64A92C > MmLoadImage - 58F7A62B-6280-42A7-BC38-10535A64A92C > UpdatePeCoffPermissions: Mapping section 0 of image at 0xFFFE7000 with > RO-XN permissions and size 0x7000 > UpdatePeCoffPermissions: Mapping section 0 of image at 0xFFFE7000 with RO-X > permissions and size 0x7000 > UpdatePeCoffPermissions: Mapping section 1 of image at 0xFFFEE000 with > RW-XN permissions and size 0x1000 > UpdatePeCoffPermissions: Mapping section 2 of image at 0xFFFEF000 with > RO-XN permissions and size 0x1000 > add-symbol-file > /home/supven01/work/mm_upstream/Build/StandaloneMmPkg/DEBUG_GCC5 > /AARCH64/StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpu > Driver/DEBUG/PiMmStandloneArmTfCpuDriver.dll 0xFFFE7000 > Loading MM driver at 0x000FFFE6000 EntryPoint=0x000FFFE7000 > PiMmStandloneArmTfCpuDriver.efi > StartImage - 0xFFFE7000 (Standalone Mode) > MmInstallProtocolInterface: 26EEB3DE-B689-492E-80F0-BE8BD7DA4BA7 > FFFEE008 > MmConfigurationMmNotify(26EEB3DE-B689-492E-80F0-BE8BD7DA4BA7) - > FFFEE008 > MM Core registered MM Entry Point address FF2041C0 > MmInstallProtocolInterface: EB346B97-975F-4A9F-8B22-F8E92BB3D569 > FFFEE018 > Sharing Cpu Driver EP *0xFF217280 = 0xFFFE798C > mNsCommBuffer.PhysicalStart - 0xFF600000 > mNsCommBuffer.PhysicalSize - 0x10000 > mNsCommBuffer: 0x00000000FF600000 - 0x10000 > mMpInformationHobData: 0x0000000000000008 - 0x8 > mMpInformationHobData[0x80000000]: 0, 0, 0 > mMpInformationHobData[0x80000001]: 0, 1, 1 > mMpInformationHobData[0x80000002]: 0, 2, 2 > mMpInformationHobData[0x80000003]: 0, 3, 3 > mMpInformationHobData[0x80000100]: 1, 0, 0 > mMpInformationHobData[0x80000101]: 1, 1, 1 > mMpInformationHobData[0x80000102]: 1, 2, 2 > mMpInformationHobData[0x80000103]: 1, 3, 3 > MmiHandlerRegister - GUID B65694CC-09E3-4C3B-B5CD-05F44D3CDBFF - > Status 0 > MmiHandlerRegister - GUID 7081E22F-CAC6-4053-9468-675782CF88E5 - > Status 0 > MmiHandlerRegister - GUID 60FF8964-E906-41D0-AFED-F241E974E08E - Status > 0 > MmiHandlerRegister - GUID 02CE967A-DD7E-4FFC-9EE7-810CF0470880 - > Status 0 > MmiHandlerRegister - GUID 2A571201-4966-47F6-8B86-F31E41F32F10 - Status > 0 > MmiHandlerRegister - GUID 27ABF055-B1B8-4C26-8048-748F37BAA2DF - > Status 0 > MmiHandlerRegister - GUID 7CE88FB3-4BD7-4679-87A8-A8D8DEE50D2B - > Status 0 > MmMain Done! > Shared Cpu Driver EP 0xFFFE798C > > ARM TF (FVP UART0) > NOTICE: Booting Trusted Firmware > NOTICE: BL1: v1.4(debug):v1.4-96-gae48aad7-dirty > NOTICE: BL1: Built : 16:14:26, Nov 1 2017 > INFO: BL1: RAM 0x4036000 - 0x403c000 > INFO: BL1: Loading BL2 > INFO: Loading image id=1 at address 0x4027000 > INFO: Image id=1 loaded: 0x4027000 - 0x402c2a8 > NOTICE: BL1: Booting BL2 > INFO: Entry point address = 0x4027000 > INFO: SPSR = 0x3c5 > NOTICE: BL2: v1.4(debug):v1.4-96-gae48aad7-dirty > NOTICE: BL2: Built : 16:14:26, Nov 1 2017 > INFO: BL2: Doing platform setup > INFO: Configuring TrustZone Controller > INFO: BL2: Loading image id 3 > INFO: Loading image id=3 at address 0xff000000 > INFO: Image id=3 loaded: 0xff000000 - 0xff00c230 > INFO: BL2: Loading image id 4 > INFO: Loading image id=4 at address 0xff200000 > INFO: Image id=4 loaded: 0xff200000 - 0xff480000 > INFO: BL2: Loading image id 5 > INFO: Loading image id=5 at address 0x88000000 > INFO: Image id=5 loaded: 0x88000000 - 0x88280000 > NOTICE: BL1: Booting BL31 > INFO: Entry point address = 0xff000000 > INFO: SPSR = 0x3cd > NOTICE: BL31: v1.4(debug):v1.4-96-gae48aad7-dirty > NOTICE: BL31: Built : 16:14:26, Nov 1 2017 > INFO: GICv3 with legacy support detected. ARM GICV3 driver initialized in > EL3 > INFO: BL31: Initializing runtime services > INFO: BL31: Initializing BL32 > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xff217000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xff217000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x5 > NOTICE: (Equivalent TF attributes: 0x2a) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xff218000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xfffe7000 > NOTICE: Number of pages: 7 (28672 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xfffe7000 > NOTICE: Number of pages: 7 (28672 bytes) > NOTICE: Attributes : 0x3 > NOTICE: (Equivalent TF attributes: 0x2) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xfffef000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > INFO: BL31: Preparing for EL3 exit to normal world > INFO: Entry point address = 0x88000000 > INFO: SPSR = 0x3c9 > UEFI firmware (version built at 16:14:14 on Nov 1 2017) > *** > > Supreeth Venkatesh (18): > ArmPkg: Add PCDs needed for MM communication driver. > ArmPkg/Drivers: Add EFI_MM_COMMUNICATION_PROTOCOL DXE driver. > ArmPkg/Include: Add MM interface SVC return codes. > ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0. > ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-EL0. > StandaloneMmPkg: Add an AArch64 specific entry point library. > StandaloneMmPkg/FvLib: Add a common FV Library for management mode. > StandaloneMmPkg/MemLib: AARCH64 Specific instance of memory check > library. > StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library. > StandaloneMmPkg/HobLib: Add AARCH64 Specific HOB Library for > management mode. > StandaloneMmPkg: MM driver entry point library. > StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Platforms. > StandaloneMmPkg/Core: Implementation of Standalone MM Core Module. > StandaloneMmPkg: Describe the declaration, definition and fdf files. > ArmPkg: Extra action to update permissions for S-ELO MM Image. > BaseTools/AutoGen: Update header file for MM modules. > StandaloneMmPkg: Add application to test MM communication protocol. > StandaloneMmPkg: Add handler to handle event received from Normal > World. > > ArmPkg/ArmPkg.dec | 3 + > .../Drivers/MmCommunicationDxe/MmCommunication.c | 339 +++++++ > .../Drivers/MmCommunicationDxe/MmCommunication.inf | 50 + > ArmPkg/Include/IndustryStandard/ArmMmSvc.h | 9 +- > ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c | 146 +++ > ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf | 37 + > .../DebugPeCoffExtraActionLib.c | 185 +++- > .../DebugPeCoffExtraActionLib.inf | 7 + > BaseTools/Source/Python/AutoGen/GenC.py | 16 +- > .../Application/MmCommTestApp/MmCommTest.c | 81 ++ > .../Application/MmCommTestApp/MmCommTest.h | 37 + > .../Application/MmCommTestApp/MmCommTest.inf | 57 ++ > StandaloneMmPkg/Core/Dependency.c | 389 +++++++ > StandaloneMmPkg/Core/Dispatcher.c | 1071 > ++++++++++++++++++++ > StandaloneMmPkg/Core/FwVol.c | 104 ++ > StandaloneMmPkg/Core/Handle.c | 533 > ++++++++++ > StandaloneMmPkg/Core/InstallConfigurationTable.c | 178 ++++ > StandaloneMmPkg/Core/Locate.c | 496 +++++++++ > StandaloneMmPkg/Core/Mmi.c | 337 ++++++ > StandaloneMmPkg/Core/Notify.c | 203 ++++ > StandaloneMmPkg/Core/Page.c | 384 +++++++ > StandaloneMmPkg/Core/Pool.c | 287 ++++++ > StandaloneMmPkg/Core/StandaloneMmCore.c | 747 > ++++++++++++++ > StandaloneMmPkg/Core/StandaloneMmCore.h | 903 > +++++++++++++++++ > StandaloneMmPkg/Core/StandaloneMmCore.inf | 82 ++ > StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h | 66 ++ > StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S | 33 + > StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c | 231 +++++ > StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c | 229 +++++ > .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h | 89 ++ > .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf | 60 ++ > StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c | 51 + > StandaloneMmPkg/Include/Guid/MmCoreData.h | 132 +++ > StandaloneMmPkg/Include/Guid/MmFvDispatch.h | 38 + > StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h | 62 ++ > StandaloneMmPkg/Include/Guid/MpInformation.h | 41 + > .../Library/Arm/StandaloneMmCoreEntryPoint.h | 232 +++++ > StandaloneMmPkg/Include/Library/FvLib.h | 109 ++ > StandaloneMmPkg/Include/Library/MemLib.h | 140 +++ > .../Include/Library/MmCoreStandaloneEntryPoint.h | 101 ++ > .../Include/Library/MmDriverStandaloneEntryPoint.h | 148 +++ > StandaloneMmPkg/Include/StandaloneMm.h | 36 + > StandaloneMmPkg/Library/FvLib/FvLib.c | 366 +++++++ > StandaloneMmPkg/Library/FvLib/FvLib.inf | 57 ++ > StandaloneMmPkg/Library/HobLib/Arm/HobLib.c | 697 > +++++++++++++ > StandaloneMmPkg/Library/HobLib/HobLib.inf | 45 + > StandaloneMmPkg/Library/MemLib/Arm/MemLib.c | 276 +++++ > StandaloneMmPkg/Library/MemLib/MemLib.inf | 47 + > .../MemoryAllocationLib/MemoryAllocationLib.c | 907 > +++++++++++++++++ > .../MemoryAllocationLib/MemoryAllocationLib.inf | 49 + > .../MemoryAllocationLib/MemoryAllocationServices.h | 38 + > .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c | 200 ++++ > .../Arm/SetPermissions.c | 278 +++++ > .../Arm/StandaloneMmCoreEntryPoint.c | 264 +++++ > .../StandaloneMmCoreEntryPoint.inf | 53 + > .../StandaloneMmDriverEntryPoint.c | 102 ++ > .../StandaloneMmDriverEntryPoint.inf | 41 + > StandaloneMmPkg/StandaloneMmPkg.dec | 49 + > StandaloneMmPkg/StandaloneMmPkg.dsc | 132 +++ > StandaloneMmPkg/StandaloneMmPkg.fdf | 184 ++++ > StandaloneMmPkg => StandaloneMmPkg~HEAD | 0 > 61 files changed, 12244 insertions(+), 20 deletions(-) > create mode 100644 > ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c > create mode 100644 > ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf > create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c > create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf > create mode 100644 > StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c > create mode 100644 > StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h > create mode 100644 > StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf > create mode 100644 StandaloneMmPkg/Core/Dependency.c > create mode 100644 StandaloneMmPkg/Core/Dispatcher.c > create mode 100644 StandaloneMmPkg/Core/FwVol.c > create mode 100644 StandaloneMmPkg/Core/Handle.c > create mode 100644 StandaloneMmPkg/Core/InstallConfigurationTable.c > create mode 100644 StandaloneMmPkg/Core/Locate.c > create mode 100644 StandaloneMmPkg/Core/Mmi.c > create mode 100644 StandaloneMmPkg/Core/Notify.c > create mode 100644 StandaloneMmPkg/Core/Page.c > create mode 100644 StandaloneMmPkg/Core/Pool.c > create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.c > create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.h > create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.inf > create mode 100644 > StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c > create mode 100644 > StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h > create mode 100644 > StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c > create mode 100644 StandaloneMmPkg/Include/Guid/MmCoreData.h > create mode 100644 StandaloneMmPkg/Include/Guid/MmFvDispatch.h > create mode 100644 > StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h > create mode 100644 StandaloneMmPkg/Include/Guid/MpInformation.h > create mode 100644 > StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h > create mode 100644 StandaloneMmPkg/Include/Library/FvLib.h > create mode 100644 StandaloneMmPkg/Include/Library/MemLib.h > create mode 100644 > StandaloneMmPkg/Include/Library/MmCoreStandaloneEntryPoint.h > create mode 100644 > StandaloneMmPkg/Include/Library/MmDriverStandaloneEntryPoint.h > create mode 100644 StandaloneMmPkg/Include/StandaloneMm.h > create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.c > create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.inf > create mode 100644 StandaloneMmPkg/Library/HobLib/Arm/HobLib.c > create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf > create mode 100644 StandaloneMmPkg/Library/MemLib/Arm/MemLib.c > create mode 100644 StandaloneMmPkg/Library/MemLib/MemLib.inf > create mode 100644 > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.c > create mode 100644 > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.inf > create mode 100644 > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationServices.h > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobList.c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissions. > c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMm > CoreEntryPoint.c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreE > ntryPoint.inf > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriv > erEntryPoint.c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriv > erEntryPoint.inf > create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec > create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc > create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf > rename StandaloneMmPkg => StandaloneMmPkg~HEAD (100%) > > -- > 2.16.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
My response inline. -----Original Message----- From: Yao, Jiewen <jiewen.yao@intel.com> Sent: Sunday, April 8, 2018 1:02 AM To: Supreeth Venkatesh <Supreeth.Venkatesh@arm.com>; edk2-devel@lists.01.org Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>; Achin Gupta <Achin.Gupta@arm.com>; leif.lindholm@linaro.org; ard.biesheuvel@linaro.org Subject: RE: [PATCH v1 00/18] *** Standalone Management Mode Core Interface for AARCH64 Platforms *** Thank you for this great work. Comment below: 1) I don't have comment for ArmPkg update (0001~0005, 0015) - I expect Arm expert will help on that. :-) 2) BaseTool (0016), reviewed-by: Jiewen.yao@intel.com 3) StandaloneMmPkg 3.1) 0007 - I think we need add ExHeader check and alignment enforcement for FfsFileHeader. FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FwVolHeader + FwVolHeader->HeaderLength); You may refer to https://github.com/tianocore/edk2/blob/master/SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.c GetFfsByName() if (FvHeader->ExtHeaderOffset != 0) { FvExtHeader = (EFI_FIRMWARE_VOLUME_EXT_HEADER *)((UINT8 *)FvHeader + FvHeader->ExtHeaderOffset); FfsHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FvExtHeader + FvExtHeader->ExtHeaderSize); } else { FfsHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FvHeader + FvHeader->HeaderLength); } FfsHeader = (EFI_FFS_FILE_HEADER *)((UINTN)FvHeader + ALIGN_VALUE((UINTN)FfsHeader - (UINTN)FvHeader, 8)); [Supreeth] Ok. Done. Thanks. Please see version 2. 3.2) 0008 - I think we need rename MmCopyMemToSmram to MmCopyMemToMmram, and MmCopyMemFromSmram to MmCopyMemFromMmram. Also if this MemLib is only for MM_STANDALONE, we should name it StandaloneMmMemLib. [Supreeth] Ok. Done. Thanks. Please see version 2. 3.3) 0009 - If this MemoryAllocationLib is only for MM_CORE_STANDALONE, we should name it StandaloneMmCoreMemoryAllocationLib. Also do we need StandaloneMmMemoryAllocationLib (non-Core version) for MmDriver ? (You may find that my POC zip has both StandaloneSmmCoreMemoryAllocationLib and StandaloneSmmMemoryAllocationLib.) [Supreeth] Renaming Done. In Arm Reference code, there is no sample MM driver which uses this. Hence it can be added whenever a sample MM driver which uses this library will be up-streamed. 3.4) 0010 - If this HobLib is only for MM_STANDALONE, we should name it StandaloneMmHobLib. [Supreeth] Ok. Done. Thanks. Please see version 2. 3.5) 0014 - I do not believe we should add FDF file here. StandaloneMmPkg should only provide the component. (such as MdeModulePkg). The FDF file should be in a real project. [Supreeth] Ok. Thanks. I have moved into edk2-platforms where it belongs rightfully. Please see version 2. 3.6) 0017/0018 - they are only for unit test. I do not think we should check in them. Please discard them when you check in the series. [Supreeth] Ok. Thanks. I will not be sending these patches with version 2. 3.x) 0006/0011/0012/0013, they are good so far. We may do some enhancement to move common logic out of Arm directory. But that can be done later, when we add X86 content there. reviewed-by: Jiewen.yao@intel.com [Supreeth] Thanks. Thank you Yao Jiewen > -----Original Message----- > From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com] > Sent: Friday, April 6, 2018 10:42 PM > To: edk2-devel@lists.01.org > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming > <liming.gao@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; > achin.gupta@arm.com; leif.lindholm@linaro.org; > ard.biesheuvel@linaro.org; Supreeth Venkatesh > <supreeth.venkatesh@arm.com> > Subject: [PATCH v1 00/18] *** Standalone Management Mode Core > Interface for AARCH64 Platforms *** > > *** > PI Specification v1.5 "Volume 4: Management Mode Core Interface" > introduces the concept of MM Standalone Mode. Initialization of this > mode can be done during the SEC phase (Section 1.5.2). > On ARMv8-A systems, ARM Trusted Firmware is responsible for launching > the normal world firmware e.g. UEFI. > > The Standalone MM environment is instantiated in Secure EL0 as a > separate firmware volume. It executes as BL32 Image under control of > ARM TF which is instantiated in EL3. Both components execute in the > AArch64 execution state. > This patchset will build upon the StandaloneSmmPkg module originally > contributed by Intel. > > This package can be used in conjunction with ARM Trusted Firmware to > recreate a simple MM secure environment that demonstrates > communication between two UEFI images where one is executing in the > normal world and the other is executing in the secure world. > > The normal world image includes: > MM Communication DXE runtime driver that implements the protocol for > communication with the MM environment in the secure world. > > The secure world image includes: > The MM Standalone framework. > > This patchset includes the proposed organization/structure. > In order to be able to review the changes more effectively, the > changes are present here: > https://github.com/supven01/edk2.git (Branch: master) > > Steps to build MM Standalone images > In user preferred "work" directory, execute the following shell > commands > > git clone https://github.com/tianocore/edk2.git > git checkout master > > git clone https://github.com/tianocore/edk2-platforms.git > git checkout master > > mkdir arm-tf > cd arm-tf > git clone https://github.com/ARM-software/arm-trusted-firmware.git . > git checkout master > cd .. > > git clone https://git.linaro.org/uefi/uefi-tools.git . > git checkout master > > The following will build the MM Standalone image which runs in secure world. > ./uefi-tools/edk2-build.sh -b DEBUG fvp_mm_standalone > > The follwing will build the normal world UEFI image, ARM Trusted > Firmware and a Firmware Image Package (FIP) that includes both the UEFI images. > ./uefi-tools/edk2-build.sh -a ./arm-tf -b DEBUG fvp_mm_normal > > Boot Loader Stage 1 (BL1) binary and combined arm-tf/uefi firmware > image package (fip) binary will be generated at: > > Build Output > Build/ArmVExpress-FVP-AArch64-MM-Normal/DEBUG_GCC5/FV/bl1.bin > Build/ArmVExpress-FVP-AArch64-MM-Normal/DEBUG_GCC5/FV/fip.bin > > Steps to run MM Standalone image > 1. Download the ARMv8 Architecture FVP from > > https://silver.arm.com/download/download.tm?pv=3744408&p=1424570 > For more information, please refer > > https://developer.arm.com/products/system-design/fixed-virtual-platfor > ms 2. Install FVP into preferred "work" directory. > 3. Create a shell script "run_mm.sh" in the same folder where > "FVP_Base_AEMv8A-AEMv8A" is present. > Sample Shell script below: > ./FVP_Base_AEMv8A-AEMv8A > -C cache_state_modelled=0 > -C bp.secure_memory=1 > -C bp.tzc_400.diagnostics=1 > -C bp.pl011_uart0.untimed_fifos=0 > -C cluster1.NUM_CORES=4 > -C cluster0.NUM_CORES=4 > -C bp.pl011_uart0.out_file=uart0.output > -C bp.pl011_uart1.out_file=uart1.output > -C bp.pl011_uart2.out_file=uart2.output > -C bp.pl011_uart3.out_file=uart3.output > -C bp.secureflashloader.fname="" > -C bp.flashloader0.fname="" > -S -R > 4. ./run_mm.sh > 5. Output can be seen on FVP console. > 6. The normal world will boot to the UEFI shell. > > Sample Output > > MM Standalone Output (FVP UART2) > SPM Version: Major=0x0, Minor=0x1 > NumSpMemRegions - 0x6 > SpMemBase - 0xFF200000 > SpMemLimit - 0x100000000 > SpImageBase - 0xFF200000 > SpStackBase - 0xFF610000 > SpHeapBase - 0xFF620000 > SpNsCommBufBase - 0xFF600000 > SpSharedBufBase - 0xFF500000 > SpImageSize - 0x300000 > SpPcpuStackSize - 0x2000 > SpHeapSize - 0x9E0000 > SpNsCommBufSize - 0x10000 > SpPcpuSharedBufSize - 0x20000 > NumCpus - 0x8 > CpuInfo - 0xFF500680 > Mpidr - 0x80000000 > LinearId - 0x0 > Flags - 0x1 > Mpidr - 0x80000001 > LinearId - 0x1 > Flags - 0x0 > Mpidr - 0x80000002 > LinearId - 0x2 > Flags - 0x0 > Mpidr - 0x80000003 > LinearId - 0x3 > Flags - 0x0 > Mpidr - 0x80000100 > LinearId - 0x4 > Flags - 0x0 > Mpidr - 0x80000101 > LinearId - 0x5 > Flags - 0x0 > Mpidr - 0x80000102 > LinearId - 0x6 > Flags - 0x0 > Mpidr - 0x80000103 > LinearId - 0x7 > Flags - 0x0 > Found Standalone MM PE data - 0xFF201000 Found Standalone MM PE data - > 0xFF201000 Standalone MM Core PE-COFF SectionHeaderOffset - 0xF60, > NumberOfSections > - 3 > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 > has > 0x60000020 permissions > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 > has .et name > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 > has > 0xFF202000 address > UpdateMmFoundationPeCoffPermissions: Section 0 of image at 0xFF201000 > has > 0x1000 data > UpdateMmFoundationPeCoffPermissions: Ignoring section 0 of image at > 0xFF201000 with 0x60000020 permissions > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 > has > 0xC0000040 permissions > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 > has .aa name > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 > has > 0xFF217000 address > UpdateMmFoundationPeCoffPermissions: Section 1 of image at 0xFF201000 > has > 0x16000 data > UpdateMmFoundationPeCoffPermissions: Mapping section 1 of image at > 0xFF201000 with RW-XN permissions > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 > has > 0x42000040 permissions > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 > has .eo name > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 > has > 0xFF218000 address > UpdateMmFoundationPeCoffPermissions: Section 2 of image at 0xFF201000 > has > 0x17000 data > UpdateMmFoundationPeCoffPermissions: Mapping section 2 of image at > 0xFF201000 with RO-XN permissions > StandaloneMmCoreMemoryAllocationLibConstructor - 0xFF620000 > MmramRangeCount - 0x6 > MmramRanges[0]: 0x00000000FF200000 - 0x0000000000300000 > MmramRanges[1]: 0x00000000FF500000 - 0x0000000000100000 > MmramRanges[2]: 0x00000000FF600000 - 0x0000000000010000 > MmramRanges[3]: 0x00000000FF610000 - 0x0000000000010000 > MmramRanges[4]: 0x00000000FF620000 - 0x00000000000002C8 > MmramRanges[5]: 0x00000000FF6202C8 - 0x00000000009DFD38 > MmInitializeMemoryServices MmAddMemoryRegion 0 : 0x00000000FF200000 - > 0x0000000000300000 MmAddMemoryRegion 1 : 0x00000000FF500000 - > 0x0000000000100000 MmAddMemoryRegion 2 : 0x00000000FF600000 - > 0x0000000000010000 MmAddMemoryRegion 3 : 0x00000000FF610000 - > 0x0000000000010000 MmAddMemoryRegion 4 : 0x00000000FF620000 - > 0x00000000000002C8 MmAddMemoryRegion 5 : 0x00000000FF6202C8 - > 0x00000000009DFD38 mMmMemLibInternalMaximumSupportAddress = > 0xFFFFFFFFF MmMain - 0xFF620000 MmramRangeCount - 0x6 > MmramRanges[0]: 0x00000000FF200000 - 0x300000 > MmramRanges[1]: 0x00000000FF500000 - 0x100000 > MmramRanges[2]: 0x00000000FF600000 - 0x10000 > MmramRanges[3]: 0x00000000FF610000 - 0x10000 > MmramRanges[4]: 0x00000000FF620000 - 0x2C8 > MmramRanges[5]: 0x00000000FF6202C8 - 0x9DFD38 mMmramRangeCount - 0x6 > mMmramRanges - 0xFFFFEE10 BFV address - 0xFF200000 > BFV size - 0x300000 > MmInstallConfigurationTable For HobList HobSize - 0x2C8 MmHobStart - > 0xFFFFE810 MmRegisterProtocolNotify - MmConfigurationMmProtocol Mm > Dispatch StandaloneBfvAddress - 0xFF200000 MmCoreFfsFindMmDriver - > 0xFF200000 FvIsBeingProcesssed - 0xFF200000 Check MmFileTypes - 0xA > Check MmFileTypes - 0xE Find PE data - 0xFF219024 MmAddToDriverList - > 58F7A62B-6280-42A7-BC38-10535A64A92C > (0xFF219024) > MmDispatcher > Drain the Scheduled Queue > Search DriverList for items to place on Scheduled Queue > DriverEntry (Discovered) - 58F7A62B-6280-42A7-BC38-10535A64A92C > Evaluate MM DEPEX for FFS(58F7A62B-6280-42A7-BC38-10535A64A92C) > TRUE > END > RESULT = TRUE > Drain the Scheduled Queue > DriverEntry (Scheduled) - 58F7A62B-6280-42A7-BC38-10535A64A92C > MmLoadImage - 58F7A62B-6280-42A7-BC38-10535A64A92C > UpdatePeCoffPermissions: Mapping section 0 of image at 0xFFFE7000 with > RO-XN permissions and size 0x7000 > UpdatePeCoffPermissions: Mapping section 0 of image at 0xFFFE7000 with > RO-X permissions and size 0x7000 > UpdatePeCoffPermissions: Mapping section 1 of image at 0xFFFEE000 with > RW-XN permissions and size 0x1000 > UpdatePeCoffPermissions: Mapping section 2 of image at 0xFFFEF000 with > RO-XN permissions and size 0x1000 add-symbol-file > /home/supven01/work/mm_upstream/Build/StandaloneMmPkg/DEBUG_GCC5 > /AARCH64/StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpu > Driver/DEBUG/PiMmStandloneArmTfCpuDriver.dll 0xFFFE7000 Loading MM > driver at 0x000FFFE6000 EntryPoint=0x000FFFE7000 > PiMmStandloneArmTfCpuDriver.efi StartImage - 0xFFFE7000 (Standalone > Mode) > MmInstallProtocolInterface: 26EEB3DE-B689-492E-80F0-BE8BD7DA4BA7 > FFFEE008 > MmConfigurationMmNotify(26EEB3DE-B689-492E-80F0-BE8BD7DA4BA7) - > FFFEE008 > MM Core registered MM Entry Point address FF2041C0 > MmInstallProtocolInterface: EB346B97-975F-4A9F-8B22-F8E92BB3D569 > FFFEE018 > Sharing Cpu Driver EP *0xFF217280 = 0xFFFE798C > mNsCommBuffer.PhysicalStart - 0xFF600000 mNsCommBuffer.PhysicalSize - > 0x10000 > mNsCommBuffer: 0x00000000FF600000 - 0x10000 > mMpInformationHobData: 0x0000000000000008 - 0x8 > mMpInformationHobData[0x80000000]: 0, 0, 0 > mMpInformationHobData[0x80000001]: 0, 1, 1 > mMpInformationHobData[0x80000002]: 0, 2, 2 > mMpInformationHobData[0x80000003]: 0, 3, 3 > mMpInformationHobData[0x80000100]: 1, 0, 0 > mMpInformationHobData[0x80000101]: 1, 1, 1 > mMpInformationHobData[0x80000102]: 1, 2, 2 > mMpInformationHobData[0x80000103]: 1, 3, 3 MmiHandlerRegister - GUID > B65694CC-09E3-4C3B-B5CD-05F44D3CDBFF - Status 0 MmiHandlerRegister - > GUID 7081E22F-CAC6-4053-9468-675782CF88E5 - Status 0 > MmiHandlerRegister - GUID 60FF8964-E906-41D0-AFED-F241E974E08E - > Status > 0 > MmiHandlerRegister - GUID 02CE967A-DD7E-4FFC-9EE7-810CF0470880 - > Status 0 MmiHandlerRegister - GUID > 2A571201-4966-47F6-8B86-F31E41F32F10 - Status > 0 > MmiHandlerRegister - GUID 27ABF055-B1B8-4C26-8048-748F37BAA2DF - > Status 0 MmiHandlerRegister - GUID > 7CE88FB3-4BD7-4679-87A8-A8D8DEE50D2B - Status 0 MmMain Done! > Shared Cpu Driver EP 0xFFFE798C > > ARM TF (FVP UART0) > NOTICE: Booting Trusted Firmware > NOTICE: BL1: v1.4(debug):v1.4-96-gae48aad7-dirty > NOTICE: BL1: Built : 16:14:26, Nov 1 2017 > INFO: BL1: RAM 0x4036000 - 0x403c000 > INFO: BL1: Loading BL2 > INFO: Loading image id=1 at address 0x4027000 > INFO: Image id=1 loaded: 0x4027000 - 0x402c2a8 > NOTICE: BL1: Booting BL2 > INFO: Entry point address = 0x4027000 > INFO: SPSR = 0x3c5 > NOTICE: BL2: v1.4(debug):v1.4-96-gae48aad7-dirty > NOTICE: BL2: Built : 16:14:26, Nov 1 2017 > INFO: BL2: Doing platform setup > INFO: Configuring TrustZone Controller > INFO: BL2: Loading image id 3 > INFO: Loading image id=3 at address 0xff000000 > INFO: Image id=3 loaded: 0xff000000 - 0xff00c230 > INFO: BL2: Loading image id 4 > INFO: Loading image id=4 at address 0xff200000 > INFO: Image id=4 loaded: 0xff200000 - 0xff480000 > INFO: BL2: Loading image id 5 > INFO: Loading image id=5 at address 0x88000000 > INFO: Image id=5 loaded: 0x88000000 - 0x88280000 > NOTICE: BL1: Booting BL31 > INFO: Entry point address = 0xff000000 > INFO: SPSR = 0x3cd > NOTICE: BL31: v1.4(debug):v1.4-96-gae48aad7-dirty > NOTICE: BL31: Built : 16:14:26, Nov 1 2017 > INFO: GICv3 with legacy support detected. ARM GICV3 driver initialized in > EL3 > INFO: BL31: Initializing runtime services > INFO: BL31: Initializing BL32 > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xff217000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xff217000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x5 > NOTICE: (Equivalent TF attributes: 0x2a) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xff218000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xfffe7000 > NOTICE: Number of pages: 7 (28672 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xfffe7000 > NOTICE: Number of pages: 7 (28672 bytes) > NOTICE: Attributes : 0x3 > NOTICE: (Equivalent TF attributes: 0x2) > NOTICE: Received SPM_MEMORY_ATTRIBUTES_SET SMC > NOTICE: Start address : 0xfffef000 > NOTICE: Number of pages: 1 (4096 bytes) > NOTICE: Attributes : 0x7 > NOTICE: (Equivalent TF attributes: 0x22) > INFO: BL31: Preparing for EL3 exit to normal world > INFO: Entry point address = 0x88000000 > INFO: SPSR = 0x3c9 > UEFI firmware (version built at 16:14:14 on Nov 1 2017) > *** > > Supreeth Venkatesh (18): > ArmPkg: Add PCDs needed for MM communication driver. > ArmPkg/Drivers: Add EFI_MM_COMMUNICATION_PROTOCOL DXE driver. > ArmPkg/Include: Add MM interface SVC return codes. > ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0. > ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-EL0. > StandaloneMmPkg: Add an AArch64 specific entry point library. > StandaloneMmPkg/FvLib: Add a common FV Library for management mode. > StandaloneMmPkg/MemLib: AARCH64 Specific instance of memory check > library. > StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library. > StandaloneMmPkg/HobLib: Add AARCH64 Specific HOB Library for > management mode. > StandaloneMmPkg: MM driver entry point library. > StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Platforms. > StandaloneMmPkg/Core: Implementation of Standalone MM Core Module. > StandaloneMmPkg: Describe the declaration, definition and fdf files. > ArmPkg: Extra action to update permissions for S-ELO MM Image. > BaseTools/AutoGen: Update header file for MM modules. > StandaloneMmPkg: Add application to test MM communication protocol. > StandaloneMmPkg: Add handler to handle event received from Normal > World. > > ArmPkg/ArmPkg.dec | 3 + > .../Drivers/MmCommunicationDxe/MmCommunication.c | 339 +++++++ > .../Drivers/MmCommunicationDxe/MmCommunication.inf | 50 + > ArmPkg/Include/IndustryStandard/ArmMmSvc.h | 9 +- > ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c | 146 +++ > ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf | 37 + > .../DebugPeCoffExtraActionLib.c | 185 +++- > .../DebugPeCoffExtraActionLib.inf | 7 + > BaseTools/Source/Python/AutoGen/GenC.py | 16 +- > .../Application/MmCommTestApp/MmCommTest.c | 81 ++ > .../Application/MmCommTestApp/MmCommTest.h | 37 + > .../Application/MmCommTestApp/MmCommTest.inf | 57 ++ > StandaloneMmPkg/Core/Dependency.c | 389 +++++++ > StandaloneMmPkg/Core/Dispatcher.c | 1071 > ++++++++++++++++++++ > StandaloneMmPkg/Core/FwVol.c | 104 ++ > StandaloneMmPkg/Core/Handle.c | 533 > ++++++++++ > StandaloneMmPkg/Core/InstallConfigurationTable.c | 178 ++++ > StandaloneMmPkg/Core/Locate.c | 496 +++++++++ > StandaloneMmPkg/Core/Mmi.c | 337 ++++++ > StandaloneMmPkg/Core/Notify.c | 203 ++++ > StandaloneMmPkg/Core/Page.c | 384 +++++++ > StandaloneMmPkg/Core/Pool.c | 287 ++++++ > StandaloneMmPkg/Core/StandaloneMmCore.c | 747 > ++++++++++++++ > StandaloneMmPkg/Core/StandaloneMmCore.h | 903 > +++++++++++++++++ > StandaloneMmPkg/Core/StandaloneMmCore.inf | 82 ++ > StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h | 66 ++ > StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S | 33 + > StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c | 231 +++++ > StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c | 229 +++++ > .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h | 89 ++ > .../CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf | 60 ++ > StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c | 51 + > StandaloneMmPkg/Include/Guid/MmCoreData.h | 132 +++ > StandaloneMmPkg/Include/Guid/MmFvDispatch.h | 38 + > StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h | 62 ++ > StandaloneMmPkg/Include/Guid/MpInformation.h | 41 + > .../Library/Arm/StandaloneMmCoreEntryPoint.h | 232 +++++ > StandaloneMmPkg/Include/Library/FvLib.h | 109 ++ > StandaloneMmPkg/Include/Library/MemLib.h | 140 +++ > .../Include/Library/MmCoreStandaloneEntryPoint.h | 101 ++ > .../Include/Library/MmDriverStandaloneEntryPoint.h | 148 +++ > StandaloneMmPkg/Include/StandaloneMm.h | 36 + > StandaloneMmPkg/Library/FvLib/FvLib.c | 366 +++++++ > StandaloneMmPkg/Library/FvLib/FvLib.inf | 57 ++ > StandaloneMmPkg/Library/HobLib/Arm/HobLib.c | 697 > +++++++++++++ > StandaloneMmPkg/Library/HobLib/HobLib.inf | 45 + > StandaloneMmPkg/Library/MemLib/Arm/MemLib.c | 276 +++++ > StandaloneMmPkg/Library/MemLib/MemLib.inf | 47 + > .../MemoryAllocationLib/MemoryAllocationLib.c | 907 > +++++++++++++++++ > .../MemoryAllocationLib/MemoryAllocationLib.inf | 49 + > .../MemoryAllocationLib/MemoryAllocationServices.h | 38 + > .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c | 200 ++++ > .../Arm/SetPermissions.c | 278 +++++ > .../Arm/StandaloneMmCoreEntryPoint.c | 264 +++++ > .../StandaloneMmCoreEntryPoint.inf | 53 + > .../StandaloneMmDriverEntryPoint.c | 102 ++ > .../StandaloneMmDriverEntryPoint.inf | 41 + > StandaloneMmPkg/StandaloneMmPkg.dec | 49 + > StandaloneMmPkg/StandaloneMmPkg.dsc | 132 +++ > StandaloneMmPkg/StandaloneMmPkg.fdf | 184 ++++ > StandaloneMmPkg => StandaloneMmPkg~HEAD | 0 > 61 files changed, 12244 insertions(+), 20 deletions(-) create mode > 100644 ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c > create mode 100644 > ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf > create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c > create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf > create mode 100644 > StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c > create mode 100644 > StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h > create mode 100644 > StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf > create mode 100644 StandaloneMmPkg/Core/Dependency.c create mode > 100644 StandaloneMmPkg/Core/Dispatcher.c create mode 100644 > StandaloneMmPkg/Core/FwVol.c create mode 100644 > StandaloneMmPkg/Core/Handle.c create mode 100644 > StandaloneMmPkg/Core/InstallConfigurationTable.c > create mode 100644 StandaloneMmPkg/Core/Locate.c create mode 100644 > StandaloneMmPkg/Core/Mmi.c create mode 100644 > StandaloneMmPkg/Core/Notify.c create mode 100644 > StandaloneMmPkg/Core/Page.c create mode 100644 > StandaloneMmPkg/Core/Pool.c create mode 100644 > StandaloneMmPkg/Core/StandaloneMmCore.c > create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.h > create mode 100644 StandaloneMmPkg/Core/StandaloneMmCore.inf > create mode 100644 > StandaloneMmPkg/Core/StandaloneMmCorePrivateData.h > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Entry.S > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/EventHandle.c > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/Init.c > create mode 100644 > StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.h > create mode 100644 > StandaloneMmPkg/Drivers/CpuMm/Arm/PiMmStandloneArmTfCpuDriver.inf > create mode 100644 StandaloneMmPkg/Drivers/CpuMm/Arm/StateSave.c > create mode 100644 StandaloneMmPkg/Include/Guid/MmCoreData.h > create mode 100644 StandaloneMmPkg/Include/Guid/MmFvDispatch.h > create mode 100644 > StandaloneMmPkg/Include/Guid/MmramMemoryReserve.h > create mode 100644 StandaloneMmPkg/Include/Guid/MpInformation.h > create mode 100644 > StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h > create mode 100644 StandaloneMmPkg/Include/Library/FvLib.h > create mode 100644 StandaloneMmPkg/Include/Library/MemLib.h > create mode 100644 > StandaloneMmPkg/Include/Library/MmCoreStandaloneEntryPoint.h > create mode 100644 > StandaloneMmPkg/Include/Library/MmDriverStandaloneEntryPoint.h > create mode 100644 StandaloneMmPkg/Include/StandaloneMm.h > create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.c > create mode 100644 StandaloneMmPkg/Library/FvLib/FvLib.inf > create mode 100644 StandaloneMmPkg/Library/HobLib/Arm/HobLib.c > create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf > create mode 100644 StandaloneMmPkg/Library/MemLib/Arm/MemLib.c > create mode 100644 StandaloneMmPkg/Library/MemLib/MemLib.inf > create mode 100644 > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.c > create mode 100644 > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationLib.inf > create mode 100644 > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationServices.h > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobList.c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissions. > c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMm > CoreEntryPoint.c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreE > ntryPoint.inf > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriv > erEntryPoint.c > create mode 100644 > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriv > erEntryPoint.inf > create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec > create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc > create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf > rename StandaloneMmPkg => StandaloneMmPkg~HEAD (100%) > > -- > 2.16.2 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. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2024 Red Hat, Inc.