[edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***

Supreeth Venkatesh posted 15 patches 6 years, 5 months ago
Only 1 patches received!
ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146 +++
ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
.../DebugPeCoffExtraActionLib.c                    |  167 ++-
.../DebugPeCoffExtraActionLib.inf                  |    7 +
BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
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            |  708 +++++++++++++
StandaloneMmPkg/Core/StandaloneMmCore.h            |  903 +++++++++++++++++
StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
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           |  225 ++++
.../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/HobLib.c            |  697 +++++++++++++
StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
StandaloneMmPkg/Library/MemLib/MemLib.c            |  276 +++++
StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
.../MemoryAllocationLib/MemoryAllocationLib.c      |  901 ++++++++++++++++
.../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
.../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
.../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
.../Arm/SetPermissions.c                           |  278 +++++
.../Arm/StandaloneMmCoreEntryPoint.c               |  265 +++++
.../StandaloneMmCoreEntryPoint.inf                 |   53 +
.../StandaloneMmDriverEntryPoint.c                 |  102 ++
.../StandaloneMmDriverEntryPoint.inf               |   41 +
StandaloneMmPkg/StandaloneMmPkg.dec                |   47 +
StandaloneMmPkg/StandaloneMmPkg.dsc                |  132 +++
StandaloneMmPkg/StandaloneMmPkg.fdf                |  184 ++++
55 files changed, 11699 insertions(+), 11 deletions(-)
create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
create mode 100644 StandaloneMmPkg/Library/MemLib/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
[edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Supreeth Venkatesh 6 years, 5 months ago
***
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 RFC patchset includes the proposed organization/structure and 
has architecture agnostic core changes only as a first pass. 
Once the organization/structure have been agreed upon, patchset for 
supporting libraries and AARCH64 implementation will be sent.

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 (15):
  ArmPkg/Include: Add MM interface SVC return codes.
  BaseTools/AutoGen: Update header file for MM modules.
  ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
  ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-EL0.
  MdePkg/Include: Add management mode FV file type and depex.
  StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64 specific
    entry point library.
  StandaloneMmPkg/HobLib: Add a common HOB Library for management mode.
  StandaloneMmPkg/FvLib: Add a common FV Library for management mode.
  StandaloneMmPkg/MemLib: Instance of management mode memory check
    library.
  StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library.
  StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry point
    library.
  StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
    Platforms.
  StandaloneMmPkg/Core: Implementation of Standalone MM Core Module.
  StandaloneMmPkg: Describe the package declaration, definition and fdf
    files.
  ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions for
    S-ELO MM.

 ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146 +++
 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
 .../DebugPeCoffExtraActionLib.c                    |  167 ++-
 .../DebugPeCoffExtraActionLib.inf                  |    7 +
 BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
 MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
 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            |  708 +++++++++++++
 StandaloneMmPkg/Core/StandaloneMmCore.h            |  903 +++++++++++++++++
 StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
 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           |  225 ++++
 .../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/HobLib.c            |  697 +++++++++++++
 StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
 StandaloneMmPkg/Library/MemLib/MemLib.c            |  276 +++++
 StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
 .../MemoryAllocationLib/MemoryAllocationLib.c      |  901 ++++++++++++++++
 .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
 .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
 .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
 .../Arm/SetPermissions.c                           |  278 +++++
 .../Arm/StandaloneMmCoreEntryPoint.c               |  265 +++++
 .../StandaloneMmCoreEntryPoint.inf                 |   53 +
 .../StandaloneMmDriverEntryPoint.c                 |  102 ++
 .../StandaloneMmDriverEntryPoint.inf               |   41 +
 StandaloneMmPkg/StandaloneMmPkg.dec                |   47 +
 StandaloneMmPkg/StandaloneMmPkg.dsc                |  132 +++
 StandaloneMmPkg/StandaloneMmPkg.fdf                |  184 ++++
 55 files changed, 11699 insertions(+), 11 deletions(-)
 create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
 create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
 create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
 create mode 100644 StandaloneMmPkg/Library/MemLib/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

-- 
2.14.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Rebecca Cran 6 years, 5 months ago
Could there be any confusion between 'MM' meaning Management Mode and 
Memory Management?


-- 
Rebecca


On 11/17/2017 4:07 PM, Supreeth Venkatesh wrote:
> ***
> 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 RFC patchset includes the proposed organization/structure and
> has architecture agnostic core changes only as a first pass.
> Once the organization/structure have been agreed upon, patchset for
> supporting libraries and AARCH64 implementation will be sent.
>
> 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 (15):
>    ArmPkg/Include: Add MM interface SVC return codes.
>    BaseTools/AutoGen: Update header file for MM modules.
>    ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
>    ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-EL0.
>    MdePkg/Include: Add management mode FV file type and depex.
>    StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64 specific
>      entry point library.
>    StandaloneMmPkg/HobLib: Add a common HOB Library for management mode.
>    StandaloneMmPkg/FvLib: Add a common FV Library for management mode.
>    StandaloneMmPkg/MemLib: Instance of management mode memory check
>      library.
>    StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library.
>    StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry point
>      library.
>    StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
>      Platforms.
>    StandaloneMmPkg/Core: Implementation of Standalone MM Core Module.
>    StandaloneMmPkg: Describe the package declaration, definition and fdf
>      files.
>    ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions for
>      S-ELO MM.
>
>   ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
>   ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146 +++
>   ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
>   .../DebugPeCoffExtraActionLib.c                    |  167 ++-
>   .../DebugPeCoffExtraActionLib.inf                  |    7 +
>   BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
>   MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
>   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            |  708 +++++++++++++
>   StandaloneMmPkg/Core/StandaloneMmCore.h            |  903 +++++++++++++++++
>   StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
>   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           |  225 ++++
>   .../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/HobLib.c            |  697 +++++++++++++
>   StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
>   StandaloneMmPkg/Library/MemLib/MemLib.c            |  276 +++++
>   StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
>   .../MemoryAllocationLib/MemoryAllocationLib.c      |  901 ++++++++++++++++
>   .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
>   .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
>   .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
>   .../Arm/SetPermissions.c                           |  278 +++++
>   .../Arm/StandaloneMmCoreEntryPoint.c               |  265 +++++
>   .../StandaloneMmCoreEntryPoint.inf                 |   53 +
>   .../StandaloneMmDriverEntryPoint.c                 |  102 ++
>   .../StandaloneMmDriverEntryPoint.inf               |   41 +
>   StandaloneMmPkg/StandaloneMmPkg.dec                |   47 +
>   StandaloneMmPkg/StandaloneMmPkg.dsc                |  132 +++
>   StandaloneMmPkg/StandaloneMmPkg.fdf                |  184 ++++
>   55 files changed, 11699 insertions(+), 11 deletions(-)
>   create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
>   create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
>   create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
>   create mode 100644 StandaloneMmPkg/Library/MemLib/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
>

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Supreeth Venkatesh 6 years, 4 months ago
Rebecca,

Thanks for your comment. I too did wonder that.
However, "MM" abbreviation is used multiple times
in PI Specification v1.5  "Volume 4: Management Mode Core Interface"
Also, since the package is going to be called "StandaloneMmPkg" and not just MM, thereby avoiding
intersection with Memory Management.

Supreeth

-----Original Message-----
From: Rebecca Cran [mailto:rebecca@bluestop.org]
Sent: Saturday, November 18, 2017 2:11 PM
To: Supreeth Venkatesh <Supreeth.Venkatesh@arm.com>; edk2-devel@lists.01.org
Cc: jiewen.yao@intel.com; leif.lindholm@linaro.org
Subject: Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***

Could there be any confusion between 'MM' meaning Management Mode and Memory Management?


--
Rebecca


On 11/17/2017 4:07 PM, Supreeth Venkatesh wrote:
> ***
> 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 RFC patchset includes the proposed organization/structure and
> has architecture agnostic core changes only as a first pass.
> Once the organization/structure have been agreed upon, patchset for
> supporting libraries and AARCH64 implementation will be sent.
>
> 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 (15):
>    ArmPkg/Include: Add MM interface SVC return codes.
>    BaseTools/AutoGen: Update header file for MM modules.
>    ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
>    ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-EL0.
>    MdePkg/Include: Add management mode FV file type and depex.
>    StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64 specific
>      entry point library.
>    StandaloneMmPkg/HobLib: Add a common HOB Library for management mode.
>    StandaloneMmPkg/FvLib: Add a common FV Library for management mode.
>    StandaloneMmPkg/MemLib: Instance of management mode memory check
>      library.
>    StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library.
>    StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry point
>      library.
>    StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
>      Platforms.
>    StandaloneMmPkg/Core: Implementation of Standalone MM Core Module.
>    StandaloneMmPkg: Describe the package declaration, definition and fdf
>      files.
>    ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions for
>      S-ELO MM.
>
>   ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
>   ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146 +++
>   ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
>   .../DebugPeCoffExtraActionLib.c                    |  167 ++-
>   .../DebugPeCoffExtraActionLib.inf                  |    7 +
>   BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
>   MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
>   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            |  708 +++++++++++++
>   StandaloneMmPkg/Core/StandaloneMmCore.h            |  903 +++++++++++++++++
>   StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
>   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           |  225 ++++
>   .../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/HobLib.c            |  697 +++++++++++++
>   StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
>   StandaloneMmPkg/Library/MemLib/MemLib.c            |  276 +++++
>   StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
>   .../MemoryAllocationLib/MemoryAllocationLib.c      |  901 ++++++++++++++++
>   .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
>   .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
>   .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
>   .../Arm/SetPermissions.c                           |  278 +++++
>   .../Arm/StandaloneMmCoreEntryPoint.c               |  265 +++++
>   .../StandaloneMmCoreEntryPoint.inf                 |   53 +
>   .../StandaloneMmDriverEntryPoint.c                 |  102 ++
>   .../StandaloneMmDriverEntryPoint.inf               |   41 +
>   StandaloneMmPkg/StandaloneMmPkg.dec                |   47 +
>   StandaloneMmPkg/StandaloneMmPkg.dsc                |  132 +++
>   StandaloneMmPkg/StandaloneMmPkg.fdf                |  184 ++++
>   55 files changed, 11699 insertions(+), 11 deletions(-)
>   create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
>   create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
>   create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
>   create mode 100644 StandaloneMmPkg/Library/MemLib/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
>

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
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Yao, Jiewen 6 years, 4 months ago
HI
I am sorry that I missed this mail before.

I found only 0/15 and 13/15 are in my mail box. :-(
I do not know why others are filtered.

Is that possible to post the whole patch to your private git?
As such, we can review it in more efficient way.

Basically, I think it is a good idea to have StandaloneMmPkg to hold all these features.

Thank you
Yao Jiewen

> -----Original Message-----
> From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com]
> Sent: Saturday, November 18, 2017 7:08 AM
> To: edk2-devel@lists.01.org
> Cc: leif.lindholm@linaro.org; Yao, Jiewen <jiewen.yao@intel.com>; Supreeth
> Venkatesh <supreeth.venkatesh@arm.com>
> Subject: [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> 
> ***
> 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 RFC patchset includes the proposed organization/structure and
> has architecture agnostic core changes only as a first pass.
> Once the organization/structure have been agreed upon, patchset for
> supporting libraries and AARCH64 implementation will be sent.
> 
> 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 (15):
>   ArmPkg/Include: Add MM interface SVC return codes.
>   BaseTools/AutoGen: Update header file for MM modules.
>   ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
>   ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-EL0.
>   MdePkg/Include: Add management mode FV file type and depex.
>   StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64 specific
>     entry point library.
>   StandaloneMmPkg/HobLib: Add a common HOB Library for management
> mode.
>   StandaloneMmPkg/FvLib: Add a common FV Library for management mode.
>   StandaloneMmPkg/MemLib: Instance of management mode memory check
>     library.
>   StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library.
>   StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry point
>     library.
>   StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
>     Platforms.
>   StandaloneMmPkg/Core: Implementation of Standalone MM Core Module.
>   StandaloneMmPkg: Describe the package declaration, definition and fdf
>     files.
>   ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions for
>     S-ELO MM.
> 
>  ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
>  ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146 +++
>  ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
>  .../DebugPeCoffExtraActionLib.c                    |  167 ++-
>  .../DebugPeCoffExtraActionLib.inf                  |    7 +
>  BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
>  MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
>  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            |  708
> +++++++++++++
>  StandaloneMmPkg/Core/StandaloneMmCore.h            |  903
> +++++++++++++++++
>  StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
>  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           |  225 ++++
>  .../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/HobLib.c            |  697
> +++++++++++++
>  StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
>  StandaloneMmPkg/Library/MemLib/MemLib.c            |  276 +++++
>  StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
>  .../MemoryAllocationLib/MemoryAllocationLib.c      |  901
> ++++++++++++++++
>  .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
>  .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
>  .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
>  .../Arm/SetPermissions.c                           |  278 +++++
>  .../Arm/StandaloneMmCoreEntryPoint.c               |  265 +++++
>  .../StandaloneMmCoreEntryPoint.inf                 |   53 +
>  .../StandaloneMmDriverEntryPoint.c                 |  102 ++
>  .../StandaloneMmDriverEntryPoint.inf               |   41 +
>  StandaloneMmPkg/StandaloneMmPkg.dec                |   47 +
>  StandaloneMmPkg/StandaloneMmPkg.dsc                |  132 +++
>  StandaloneMmPkg/StandaloneMmPkg.fdf                |  184 ++++
>  55 files changed, 11699 insertions(+), 11 deletions(-)
>  create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
>  create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
>  create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
>  create mode 100644 StandaloneMmPkg/Library/MemLib/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
> 
> --
> 2.14.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Supreeth Venkatesh 6 years, 4 months ago
On Tue, 2017-11-28 at 07:00 +0000, Yao, Jiewen wrote:
> HI
> I am sorry that I missed this mail before.
> 
> I found only 0/15 and 13/15 are in my mail box. :-(
> I do not know why others are filtered.
This was deliberate as PATCH 13/15 implements MM core code.
Rest of them are/were AARCH64 Specific excluding the MM libraries.
> 
> Is that possible to post the whole patch to your private git?
> As such, we can review it in more efficient way.
I have created a github repo below to review it in more efficient way.

EDK2
https://github.com/supven01/edk2.git
(Branch: AArch64StandaloneMm)

EDK2-PLATFORMS
https://github.com/supven01/edk2-platforms.git
(Branch: master)

Also, we are in the process of updating these changes into edk2 Staging
repository here:
https://github.com/tianocore/edk2-staging/tree/AArch64StandaloneMm

I will send out PATCH set once you/team completes the review and give
feedback/comments. 

> 
> Basically, I think it is a good idea to have StandaloneMmPkg to hold
> all these features.
Thank you for acknowledging this.

> 
> Thank you
> Yao Jiewen
> 
> > 
> > -----Original Message-----
> > From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com]
> > Sent: Saturday, November 18, 2017 7:08 AM
> > To: edk2-devel@lists.01.org
> > Cc: leif.lindholm@linaro.org; Yao, Jiewen <jiewen.yao@intel.com>;
> > Supreeth
> > Venkatesh <supreeth.venkatesh@arm.com>
> > Subject: [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> > 
> > ***
> > 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 RFC patchset includes the proposed organization/structure and
> > has architecture agnostic core changes only as a first pass.
> > Once the organization/structure have been agreed upon, patchset for
> > supporting libraries and AARCH64 implementation will be sent.
> > 
> > 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-plat
> > forms
> > 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 (15):
> >   ArmPkg/Include: Add MM interface SVC return codes.
> >   BaseTools/AutoGen: Update header file for MM modules.
> >   ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
> >   ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-
> > EL0.
> >   MdePkg/Include: Add management mode FV file type and depex.
> >   StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64
> > specific
> >     entry point library.
> >   StandaloneMmPkg/HobLib: Add a common HOB Library for management
> > mode.
> >   StandaloneMmPkg/FvLib: Add a common FV Library for management
> > mode.
> >   StandaloneMmPkg/MemLib: Instance of management mode memory check
> >     library.
> >   StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation
> > library.
> >   StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry
> > point
> >     library.
> >   StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
> >     Platforms.
> >   StandaloneMmPkg/Core: Implementation of Standalone MM Core
> > Module.
> >   StandaloneMmPkg: Describe the package declaration, definition and
> > fdf
> >     files.
> >   ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions for
> >     S-ELO MM.
> > 
> >  ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
> >  ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146 +++
> >  ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
> >  .../DebugPeCoffExtraActionLib.c                    |  167 ++-
> >  .../DebugPeCoffExtraActionLib.inf                  |    7 +
> >  BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
> >  MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
> >  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            |  708
> > +++++++++++++
> >  StandaloneMmPkg/Core/StandaloneMmCore.h            |  903
> > +++++++++++++++++
> >  StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
> >  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           |  225 ++++
> >  .../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/HobLib.c            |  697
> > +++++++++++++
> >  StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
> >  StandaloneMmPkg/Library/MemLib/MemLib.c            |  276 +++++
> >  StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
> >  .../MemoryAllocationLib/MemoryAllocationLib.c      |  901
> > ++++++++++++++++
> >  .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
> >  .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
> >  .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
> >  .../Arm/SetPermissions.c                           |  278 +++++
> >  .../Arm/StandaloneMmCoreEntryPoint.c               |  265 +++++
> >  .../StandaloneMmCoreEntryPoint.inf                 |   53 +
> >  .../StandaloneMmDriverEntryPoint.c                 |  102 ++
> >  .../StandaloneMmDriverEntryPoint.inf               |   41 +
> >  StandaloneMmPkg/StandaloneMmPkg.dec                |   47 +
> >  StandaloneMmPkg/StandaloneMmPkg.dsc                |  132 +++
> >  StandaloneMmPkg/StandaloneMmPkg.fdf                |  184 ++++
> >  55 files changed, 11699 insertions(+), 11 deletions(-)
> >  create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
> >  create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
> >  create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
> >  create mode 100644 StandaloneMmPkg/Library/MemLib/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/MemoryAllocationService
> > s.h
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobLis
> > t.c
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissio
> > ns.
> > c
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMm
> > CoreEntryPoint.c
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCore
> > E
> > ntryPoint.inf
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > iv
> > erEntryPoint.c
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > iv
> > erEntryPoint.inf
> >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec
> >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc
> >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf
> > 
> > --
> > 2.14.1
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Yao, Jiewen 6 years, 4 months ago
Thanks you very much.

Thanks for your patient. I have reviewed https://github.com/supven01/edk2.git (Branch: AArch64StandaloneMm)

Below is my thougth:
1) I do not have comment for ArmPkg related change. - I expect Arm expert can review that.

2) For "BaseTools/AutoGen: Update header file for MM modules."
I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com)
Would you please send separate patch for BaseTools owner to review?

3) For "MdePkg/Include: Add management mode FV file type and depex."
I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com)
Would you please send separate patch for MdePkg owner to review?

4) For "MdeModulePkg: Add application to test MM communication protocol."
Can we put UefiInfoApp to StandaloneMmPkg?
The gMmUefiInfoGuid is consumed by StandaloneMmPkg\Core\StandaloneMmCore.c, so I believe it more tights to StandaloneMmPkg.
I do not want to bother MdeModulePkg on that.

5) The rest are all StandaloneMmPkg.
5.1) For "StandaloneMmPkg: Add an AArch64 specific entry point library."
This seems not a generic lib.
Can we rename it to be: StandaloneMmCoreEntryPointArm?
If so, we do not need create Arm sub-folder there.

5.2) For "StandaloneMmPkg/HobLib: Add a common HOB Library for management mode."
This seems not a generic way to get the Hob.

Below API seems private one. It is not defined in HobLib. But a contract between StandaloneMmPkg\Library\StandaloneMmCoreEntryPoint\Arm\CreateHobList.c and StandaloneMmPkg\Library\HobLib\HobLib.c

EFI_HOB_HANDOFF_INFO_TABLE*
HobConstructor (
  IN VOID   *EfiMemoryBegin,
  IN UINTN  EfiMemoryLength,
  IN VOID   *EfiFreeMemoryBottom,
  IN VOID   *EfiFreeMemoryTop
  )

This is typically not encourage. I am not sure if we have better way to resolve the issue.
But if there is not, I prefer we move it to be ArmSpecific HobLib, such as HobLibArmStandaloneMm.

5.3) For "StandaloneMmPkg/FvLib: Add a common FV Library for management mode."
Looks good.

5.4) For "StandaloneMmPkg/MemLib: Instance of memory check library."
It seems a compatibility issue, that we rename SmmMemLib to MmMemLib.

Maybe, we can add MmMemLib.h API, and move SmmMemLib content to MmMemLib, then let SmmMemLib call MmMemLib.

5.5) For "StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library."
May I know why you change " gSmst->SmmAllocatePool ();" to "MmAllocatePool ();"

An MM driver should not know the detail implementation of MmCore.

Can we just use gMmst->MmAllocatePool() here?

5.6) For "StandaloneMmPkg: MM driver entry point library."
Looks good.

5.7) For "StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Platforms."
It seems Arm specific. Can we rename to ArmCpuMm?

5.8) For "StandaloneMmPkg/Core: Implementation of Standalone MM Core Module."
I have not gone through all detail.
It seems quite similar to my previous one. So it is good.

5.9) For "StandaloneMmPkg: Add handler to handle event received from "uefiinfo"."
Looks good.


Thank you
Yao Jiewen

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Supreeth Venkatesh
> Sent: Friday, December 1, 2017 6:55 AM
> To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
> Cc: leif.lindholm@linaro.org
> Subject: Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> 
> On Tue, 2017-11-28 at 07:00 +0000, Yao, Jiewen wrote:
> > HI
> > I am sorry that I missed this mail before.
> >
> > I found only 0/15 and 13/15 are in my mail box. :-(
> > I do not know why others are filtered.
> This was deliberate as PATCH 13/15 implements MM core code.
> Rest of them are/were AARCH64 Specific excluding the MM libraries.
> >
> > Is that possible to post the whole patch to your private git?
> > As such, we can review it in more efficient way.
> I have created a github repo below to review it in more efficient way.
> 
> EDK2
> https://github.com/supven01/edk2.git
> (Branch: AArch64StandaloneMm)
> 
> EDK2-PLATFORMS
> https://github.com/supven01/edk2-platforms.git
> (Branch: master)
> 
> Also, we are in the process of updating these changes into edk2 Staging
> repository here:
> https://github.com/tianocore/edk2-staging/tree/AArch64StandaloneMm
> 
> I will send out PATCH set once you/team completes the review and give
> feedback/comments.
> 
> >
> > Basically, I think it is a good idea to have StandaloneMmPkg to hold
> > all these features.
> Thank you for acknowledging this.
> 
> >
> > Thank you
> > Yao Jiewen
> >
> > >
> > > -----Original Message-----
> > > From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com]
> > > Sent: Saturday, November 18, 2017 7:08 AM
> > > To: edk2-devel@lists.01.org
> > > Cc: leif.lindholm@linaro.org; Yao, Jiewen <jiewen.yao@intel.com>;
> > > Supreeth
> > > Venkatesh <supreeth.venkatesh@arm.com>
> > > Subject: [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> > >
> > > ***
> > > 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 RFC patchset includes the proposed organization/structure and
> > > has architecture agnostic core changes only as a first pass.
> > > Once the organization/structure have been agreed upon, patchset for
> > > supporting libraries and AARCH64 implementation will be sent.
> > >
> > > 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-plat
> > > forms
> > > 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 (15):
> > >   ArmPkg/Include: Add MM interface SVC return codes.
> > >   BaseTools/AutoGen: Update header file for MM modules.
> > >   ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
> > >   ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in S-
> > > EL0.
> > >   MdePkg/Include: Add management mode FV file type and depex.
> > >   StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64
> > > specific
> > >     entry point library.
> > >   StandaloneMmPkg/HobLib: Add a common HOB Library for management
> > > mode.
> > >   StandaloneMmPkg/FvLib: Add a common FV Library for management
> > > mode.
> > >   StandaloneMmPkg/MemLib: Instance of management mode memory
> check
> > >     library.
> > >   StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation
> > > library.
> > >   StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry
> > > point
> > >     library.
> > >   StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
> > >     Platforms.
> > >   StandaloneMmPkg/Core: Implementation of Standalone MM Core
> > > Module.
> > >   StandaloneMmPkg: Describe the package declaration, definition and
> > > fdf
> > >     files.
> > >   ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions for
> > >     S-ELO MM.
> > >
> > >  ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
> > >  ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146
> +++
> > >  ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
> > >  .../DebugPeCoffExtraActionLib.c                    |  167 ++-
> > >  .../DebugPeCoffExtraActionLib.inf                  |    7 +
> > >  BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
> > >  MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
> > >  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                         |  33
> 7 ++++++
> > >  StandaloneMmPkg/Core/Notify.c                      |  203
> ++++
> > >  StandaloneMmPkg/Core/Page.c                        |  384
> +++++++
> > >  StandaloneMmPkg/Core/Pool.c                        |  287
> ++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.c            |  708
> > > +++++++++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.h            |  903
> > > +++++++++++++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
> > >  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           |  225
> ++++
> > >  .../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/HobLib.c            |  697
> > > +++++++++++++
> > >  StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
> > >  StandaloneMmPkg/Library/MemLib/MemLib.c            |  276
> +++++
> > >  StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
> > >  .../MemoryAllocationLib/MemoryAllocationLib.c      |  901
> > > ++++++++++++++++
> > >  .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
> > >  .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
> > >  .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
> > >  .../Arm/SetPermissions.c                           |  278
> +++++
> > >  .../Arm/StandaloneMmCoreEntryPoint.c               |  265
> +++++
> > >  .../StandaloneMmCoreEntryPoint.inf                 |   53 +
> > >  .../StandaloneMmDriverEntryPoint.c                 |  102 ++
> > >  .../StandaloneMmDriverEntryPoint.inf               |   41 +
> > >  StandaloneMmPkg/StandaloneMmPkg.dec                |   47
> +
> > >  StandaloneMmPkg/StandaloneMmPkg.dsc                |  132
> +++
> > >  StandaloneMmPkg/StandaloneMmPkg.fdf                |  184
> ++++
> > >  55 files changed, 11699 insertions(+), 11 deletions(-)
> > >  create mode 100644
> ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
> > >  create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
> > >  create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
> > >  create mode 100644 StandaloneMmPkg/Library/MemLib/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/MemoryAllocationService
> > > s.h
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobLis
> > > t.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissio
> > > ns.
> > > c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMm
> > > CoreEntryPoint.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCore
> > > E
> > > ntryPoint.inf
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > iv
> > > erEntryPoint.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > iv
> > > erEntryPoint.inf
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf
> > >
> > > --
> > > 2.14.1
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Supreeth Venkatesh 6 years, 4 months ago
Thank you for reviewing it.
I agree with all your comments.
I will work on them and send the patch set out on the mailing list sometime in the first week of Jan.

Supreeth

-----Original Message-----
From: Yao, Jiewen [mailto:jiewen.yao@intel.com]
Sent: Monday, December 4, 2017 12:36 AM
To: Supreeth Venkatesh <Supreeth.Venkatesh@arm.com>; edk2-devel@lists.01.org
Cc: leif.lindholm@linaro.org
Subject: RE: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***

Thanks you very much.

Thanks for your patient. I have reviewed https://github.com/supven01/edk2.git (Branch: AArch64StandaloneMm)

Below is my thougth:
1) I do not have comment for ArmPkg related change. - I expect Arm expert can review that.

2) For "BaseTools/AutoGen: Update header file for MM modules."
I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com) Would you please send separate patch for BaseTools owner to review?

3) For "MdePkg/Include: Add management mode FV file type and depex."
I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com) Would you please send separate patch for MdePkg owner to review?

4) For "MdeModulePkg: Add application to test MM communication protocol."
Can we put UefiInfoApp to StandaloneMmPkg?
The gMmUefiInfoGuid is consumed by StandaloneMmPkg\Core\StandaloneMmCore.c, so I believe it more tights to StandaloneMmPkg.
I do not want to bother MdeModulePkg on that.

5) The rest are all StandaloneMmPkg.
5.1) For "StandaloneMmPkg: Add an AArch64 specific entry point library."
This seems not a generic lib.
Can we rename it to be: StandaloneMmCoreEntryPointArm?
If so, we do not need create Arm sub-folder there.

5.2) For "StandaloneMmPkg/HobLib: Add a common HOB Library for management mode."
This seems not a generic way to get the Hob.

Below API seems private one. It is not defined in HobLib. But a contract between StandaloneMmPkg\Library\StandaloneMmCoreEntryPoint\Arm\CreateHobList.c and StandaloneMmPkg\Library\HobLib\HobLib.c

EFI_HOB_HANDOFF_INFO_TABLE*
HobConstructor (
  IN VOID   *EfiMemoryBegin,
  IN UINTN  EfiMemoryLength,
  IN VOID   *EfiFreeMemoryBottom,
  IN VOID   *EfiFreeMemoryTop
  )

This is typically not encourage. I am not sure if we have better way to resolve the issue.
But if there is not, I prefer we move it to be ArmSpecific HobLib, such as HobLibArmStandaloneMm.

5.3) For "StandaloneMmPkg/FvLib: Add a common FV Library for management mode."
Looks good.

5.4) For "StandaloneMmPkg/MemLib: Instance of memory check library."
It seems a compatibility issue, that we rename SmmMemLib to MmMemLib.

Maybe, we can add MmMemLib.h API, and move SmmMemLib content to MmMemLib, then let SmmMemLib call MmMemLib.

5.5) For "StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library."
May I know why you change " gSmst->SmmAllocatePool ();" to "MmAllocatePool ();"

An MM driver should not know the detail implementation of MmCore.

Can we just use gMmst->MmAllocatePool() here?

5.6) For "StandaloneMmPkg: MM driver entry point library."
Looks good.

5.7) For "StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Platforms."
It seems Arm specific. Can we rename to ArmCpuMm?

5.8) For "StandaloneMmPkg/Core: Implementation of Standalone MM Core Module."
I have not gone through all detail.
It seems quite similar to my previous one. So it is good.

5.9) For "StandaloneMmPkg: Add handler to handle event received from "uefiinfo"."
Looks good.


Thank you
Yao Jiewen

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Supreeth Venkatesh
> Sent: Friday, December 1, 2017 6:55 AM
> To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
> Cc: leif.lindholm@linaro.org
> Subject: Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg
> ***
>
> On Tue, 2017-11-28 at 07:00 +0000, Yao, Jiewen wrote:
> > HI
> > I am sorry that I missed this mail before.
> >
> > I found only 0/15 and 13/15 are in my mail box. :-( I do not know
> > why others are filtered.
> This was deliberate as PATCH 13/15 implements MM core code.
> Rest of them are/were AARCH64 Specific excluding the MM libraries.
> >
> > Is that possible to post the whole patch to your private git?
> > As such, we can review it in more efficient way.
> I have created a github repo below to review it in more efficient way.
>
> EDK2
> https://github.com/supven01/edk2.git
> (Branch: AArch64StandaloneMm)
>
> EDK2-PLATFORMS
> https://github.com/supven01/edk2-platforms.git
> (Branch: master)
>
> Also, we are in the process of updating these changes into edk2
> Staging repository here:
> https://github.com/tianocore/edk2-staging/tree/AArch64StandaloneMm
>
> I will send out PATCH set once you/team completes the review and give
> feedback/comments.
>
> >
> > Basically, I think it is a good idea to have StandaloneMmPkg to hold
> > all these features.
> Thank you for acknowledging this.
>
> >
> > Thank you
> > Yao Jiewen
> >
> > >
> > > -----Original Message-----
> > > From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com]
> > > Sent: Saturday, November 18, 2017 7:08 AM
> > > To: edk2-devel@lists.01.org
> > > Cc: leif.lindholm@linaro.org; Yao, Jiewen <jiewen.yao@intel.com>;
> > > Supreeth Venkatesh <supreeth.venkatesh@arm.com>
> > > Subject: [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> > >
> > > ***
> > > 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 RFC patchset includes the proposed organization/structure and
> > > has architecture agnostic core changes only as a first pass.
> > > Once the organization/structure have been agreed upon, patchset
> > > for supporting libraries and AARCH64 implementation will be sent.
> > >
> > > 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-pla
> > > t
> > > forms
> > > 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 (15):
> > >   ArmPkg/Include: Add MM interface SVC return codes.
> > >   BaseTools/AutoGen: Update header file for MM modules.
> > >   ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
> > >   ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in
> > > S- EL0.
> > >   MdePkg/Include: Add management mode FV file type and depex.
> > >   StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64
> > > specific
> > >     entry point library.
> > >   StandaloneMmPkg/HobLib: Add a common HOB Library for management
> > > mode.
> > >   StandaloneMmPkg/FvLib: Add a common FV Library for management
> > > mode.
> > >   StandaloneMmPkg/MemLib: Instance of management mode memory
> check
> > >     library.
> > >   StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation
> > > library.
> > >   StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry
> > > point
> > >     library.
> > >   StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
> > >     Platforms.
> > >   StandaloneMmPkg/Core: Implementation of Standalone MM Core
> > > Module.
> > >   StandaloneMmPkg: Describe the package declaration, definition
> > > and fdf
> > >     files.
> > >   ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions
> > > for
> > >     S-ELO MM.
> > >
> > >  ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
> > >  ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146
> +++
> > >  ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
> > >  .../DebugPeCoffExtraActionLib.c                    |  167 ++-
> > >  .../DebugPeCoffExtraActionLib.inf                  |    7 +
> > >  BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
> > >  MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
> > >  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                         |  33
> 7 ++++++
> > >  StandaloneMmPkg/Core/Notify.c                      |  203
> ++++
> > >  StandaloneMmPkg/Core/Page.c                        |  384
> +++++++
> > >  StandaloneMmPkg/Core/Pool.c                        |  287
> ++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.c            |  708
> > > +++++++++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.h            |  903
> > > +++++++++++++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
> > >  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           |  225
> ++++
> > >  .../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/HobLib.c            |  697
> > > +++++++++++++
> > >  StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
> > >  StandaloneMmPkg/Library/MemLib/MemLib.c            |  276
> +++++
> > >  StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
> > >  .../MemoryAllocationLib/MemoryAllocationLib.c      |  901
> > > ++++++++++++++++
> > >  .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
> > >  .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
> > >  .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
> > >  .../Arm/SetPermissions.c                           |  278
> +++++
> > >  .../Arm/StandaloneMmCoreEntryPoint.c               |  265
> +++++
> > >  .../StandaloneMmCoreEntryPoint.inf                 |   53 +
> > >  .../StandaloneMmDriverEntryPoint.c                 |  102 ++
> > >  .../StandaloneMmDriverEntryPoint.inf               |   41 +
> > >  StandaloneMmPkg/StandaloneMmPkg.dec                |   47
> +
> > >  StandaloneMmPkg/StandaloneMmPkg.dsc                |  132
> +++
> > >  StandaloneMmPkg/StandaloneMmPkg.fdf                |  184
> ++++
> > >  55 files changed, 11699 insertions(+), 11 deletions(-)
> > >  create mode 100644
> ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
> > >  create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
> > >  create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
> > >  create mode 100644 StandaloneMmPkg/Library/MemLib/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.in
> > > f
> > >  create mode 100644
> > > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationServic
> > > e
> > > s.h
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobLis
> > > t.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissio
> > > ns.
> > > c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMm
> > > CoreEntryPoint.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCore
> > > E
> > > ntryPoint.inf
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > iv
> > > erEntryPoint.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > iv
> > > erEntryPoint.inf
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf
> > >
> > > --
> > > 2.14.1
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
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
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Supreeth Venkatesh 6 years ago
Jiewen,

My response inline for some of the comments.
I have posted new series of patches. Please review them and provide feedback.

Thanks,
Supreeth

-----Original Message-----
From: Yao, Jiewen <jiewen.yao@intel.com>
Sent: Monday, December 4, 2017 12:36 AM
To: Supreeth Venkatesh <Supreeth.Venkatesh@arm.com>; edk2-devel@lists.01.org
Cc: leif.lindholm@linaro.org
Subject: RE: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***

Thanks you very much.

Thanks for your patient. I have reviewed https://github.com/supven01/edk2.git (Branch: AArch64StandaloneMm)

Below is my thougth:
1) I do not have comment for ArmPkg related change. - I expect Arm expert can review that.

2) For "BaseTools/AutoGen: Update header file for MM modules."
I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com) Would you please send separate patch for BaseTools owner to review?
[Supreeth] already Merged.

3) For "MdePkg/Include: Add management mode FV file type and depex."
I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com) Would you please send separate patch for MdePkg owner to review?
[Supreeth] Posted Patch. Maintainers waiting on StandaloneMmPkg changes to be merged.

4) For "MdeModulePkg: Add application to test MM communication protocol."
Can we put UefiInfoApp to StandaloneMmPkg?
The gMmUefiInfoGuid is consumed by StandaloneMmPkg\Core\StandaloneMmCore.c, so I believe it more tights to StandaloneMmPkg.
I do not want to bother MdeModulePkg on that.
[Supreeth] Modified. Done.

5) The rest are all StandaloneMmPkg.
5.1) For "StandaloneMmPkg: Add an AArch64 specific entry point library."
This seems not a generic lib.
Can we rename it to be: StandaloneMmCoreEntryPointArm?
If so, we do not need create Arm sub-folder there.
[Supreeth] I created an Arm sub-folder so that it can be extensible to other architectures, if some other architecture wants to reuse this ARM Specific library and extend it.
Also, In the inf file, Arm specific source files are under [Sources.AARCH64]. Let me know if you prefer renaming as opposed to creating a sub folder.

5.2) For "StandaloneMmPkg/HobLib: Add a common HOB Library for management mode."
This seems not a generic way to get the Hob.

Below API seems private one. It is not defined in HobLib. But a contract between StandaloneMmPkg\Library\StandaloneMmCoreEntryPoint\Arm\CreateHobList.c and StandaloneMmPkg\Library\HobLib\HobLib.c

EFI_HOB_HANDOFF_INFO_TABLE*
HobConstructor (
  IN VOID   *EfiMemoryBegin,
  IN UINTN  EfiMemoryLength,
  IN VOID   *EfiFreeMemoryBottom,
  IN VOID   *EfiFreeMemoryTop
  )

This is typically not encourage. I am not sure if we have better way to resolve the issue.
But if there is not, I prefer we move it to be ArmSpecific HobLib, such as HobLibArmStandaloneMm.
[Supreeth] For the moment, I don’t have a better way. I have made it Arm specific by creating a subfolder "Arm" and sources in inf file under [Sources.AARCH64].

5.3) For "StandaloneMmPkg/FvLib: Add a common FV Library for management mode."
Looks good.

5.4) For "StandaloneMmPkg/MemLib: Instance of memory check library."
It seems a compatibility issue, that we rename SmmMemLib to MmMemLib.

Maybe, we can add MmMemLib.h API, and move SmmMemLib content to MmMemLib, then let SmmMemLib call MmMemLib.
[Supreeth] MmMemLib differs significantly from SmmMemLib as SmmMemLib has some intel specific physical address bits, some memory map references.
So I have moved this as ARM specific library at this point with scope for refactoring.

5.5) For "StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation library."
May I know why you change " gSmst->SmmAllocatePool ();" to "MmAllocatePool ();"

An MM driver should not know the detail implementation of MmCore.

Can we just use gMmst->MmAllocatePool() here?
[Supreeth] I modified it to use gMmst->MmXXXXXXXXX() Apis.

5.6) For "StandaloneMmPkg: MM driver entry point library."
Looks good.

5.7) For "StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Platforms."
It seems Arm specific. Can we rename to ArmCpuMm?
[Supreeth]  I created an Arm sub-folder within CpuMm so that it can be extensible to other architectures, if some other architecture wants to reuse this ARM Specific cpu mm driver and extend it.
Also, in DSC file, this is included under [Components.AARCH64] . Let me know if you prefer renaming as opposed to creating a sub folder.

5.8) For "StandaloneMmPkg/Core: Implementation of Standalone MM Core Module."
I have not gone through all detail.
It seems quite similar to my previous one. So it is good.

5.9) For "StandaloneMmPkg: Add handler to handle event received from "uefiinfo"."
Looks good.


Thank you
Yao Jiewen

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Supreeth Venkatesh
> Sent: Friday, December 1, 2017 6:55 AM
> To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
> Cc: leif.lindholm@linaro.org
> Subject: Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg
> ***
>
> On Tue, 2017-11-28 at 07:00 +0000, Yao, Jiewen wrote:
> > HI
> > I am sorry that I missed this mail before.
> >
> > I found only 0/15 and 13/15 are in my mail box. :-( I do not know
> > why others are filtered.
> This was deliberate as PATCH 13/15 implements MM core code.
> Rest of them are/were AARCH64 Specific excluding the MM libraries.
> >
> > Is that possible to post the whole patch to your private git?
> > As such, we can review it in more efficient way.
> I have created a github repo below to review it in more efficient way.
>
> EDK2
> https://github.com/supven01/edk2.git
> (Branch: AArch64StandaloneMm)
>
> EDK2-PLATFORMS
> https://github.com/supven01/edk2-platforms.git
> (Branch: master)
>
> Also, we are in the process of updating these changes into edk2
> Staging repository here:
> https://github.com/tianocore/edk2-staging/tree/AArch64StandaloneMm
>
> I will send out PATCH set once you/team completes the review and give
> feedback/comments.
>
> >
> > Basically, I think it is a good idea to have StandaloneMmPkg to hold
> > all these features.
> Thank you for acknowledging this.
>
> >
> > Thank you
> > Yao Jiewen
> >
> > >
> > > -----Original Message-----
> > > From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com]
> > > Sent: Saturday, November 18, 2017 7:08 AM
> > > To: edk2-devel@lists.01.org
> > > Cc: leif.lindholm@linaro.org; Yao, Jiewen <jiewen.yao@intel.com>;
> > > Supreeth Venkatesh <supreeth.venkatesh@arm.com>
> > > Subject: [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> > >
> > > ***
> > > 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 RFC patchset includes the proposed organization/structure and
> > > has architecture agnostic core changes only as a first pass.
> > > Once the organization/structure have been agreed upon, patchset
> > > for supporting libraries and AARCH64 implementation will be sent.
> > >
> > > 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-pla
> > > t
> > > forms
> > > 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 (15):
> > >   ArmPkg/Include: Add MM interface SVC return codes.
> > >   BaseTools/AutoGen: Update header file for MM modules.
> > >   ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
> > >   ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in
> > > S- EL0.
> > >   MdePkg/Include: Add management mode FV file type and depex.
> > >   StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64
> > > specific
> > >     entry point library.
> > >   StandaloneMmPkg/HobLib: Add a common HOB Library for management
> > > mode.
> > >   StandaloneMmPkg/FvLib: Add a common FV Library for management
> > > mode.
> > >   StandaloneMmPkg/MemLib: Instance of management mode memory
> check
> > >     library.
> > >   StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation
> > > library.
> > >   StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry
> > > point
> > >     library.
> > >   StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
> > >     Platforms.
> > >   StandaloneMmPkg/Core: Implementation of Standalone MM Core
> > > Module.
> > >   StandaloneMmPkg: Describe the package declaration, definition
> > > and fdf
> > >     files.
> > >   ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions
> > > for
> > >     S-ELO MM.
> > >
> > >  ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
> > >  ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146
> +++
> > >  ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
> > >  .../DebugPeCoffExtraActionLib.c                    |  167 ++-
> > >  .../DebugPeCoffExtraActionLib.inf                  |    7 +
> > >  BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
> > >  MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
> > >  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                         |  33
> 7 ++++++
> > >  StandaloneMmPkg/Core/Notify.c                      |  203
> ++++
> > >  StandaloneMmPkg/Core/Page.c                        |  384
> +++++++
> > >  StandaloneMmPkg/Core/Pool.c                        |  287
> ++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.c            |  708
> > > +++++++++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.h            |  903
> > > +++++++++++++++++
> > >  StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
> > >  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           |  225
> ++++
> > >  .../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/HobLib.c            |  697
> > > +++++++++++++
> > >  StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
> > >  StandaloneMmPkg/Library/MemLib/MemLib.c            |  276
> +++++
> > >  StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
> > >  .../MemoryAllocationLib/MemoryAllocationLib.c      |  901
> > > ++++++++++++++++
> > >  .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
> > >  .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
> > >  .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
> > >  .../Arm/SetPermissions.c                           |  278
> +++++
> > >  .../Arm/StandaloneMmCoreEntryPoint.c               |  265
> +++++
> > >  .../StandaloneMmCoreEntryPoint.inf                 |   53 +
> > >  .../StandaloneMmDriverEntryPoint.c                 |  102 ++
> > >  .../StandaloneMmDriverEntryPoint.inf               |   41 +
> > >  StandaloneMmPkg/StandaloneMmPkg.dec                |   47
> +
> > >  StandaloneMmPkg/StandaloneMmPkg.dsc                |  132
> +++
> > >  StandaloneMmPkg/StandaloneMmPkg.fdf                |  184
> ++++
> > >  55 files changed, 11699 insertions(+), 11 deletions(-)
> > >  create mode 100644
> ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
> > >  create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
> > >  create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
> > >  create mode 100644 StandaloneMmPkg/Library/MemLib/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.in
> > > f
> > >  create mode 100644
> > > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationServic
> > > e
> > > s.h
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobLis
> > > t.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissio
> > > ns.
> > > c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMm
> > > CoreEntryPoint.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCore
> > > E
> > > ntryPoint.inf
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > iv
> > > erEntryPoint.c
> > >  create mode 100644
> > >
> StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > iv
> > > erEntryPoint.inf
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc
> > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf
> > >
> > > --
> > > 2.14.1
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
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
Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
Posted by Yao, Jiewen 6 years ago
Many thanks. The new series patch looks much better.

Some comments on the new patches.

> -----Original Message-----
> From: Supreeth Venkatesh [mailto:Supreeth.Venkatesh@arm.com]
> Sent: Friday, April 6, 2018 10:55 PM
> To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
> Cc: leif.lindholm@linaro.org; Achin Gupta <Achin.Gupta@arm.com>
> Subject: RE: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> 
> Jiewen,
> 
> My response inline for some of the comments.
> I have posted new series of patches. Please review them and provide feedback.
> 
> Thanks,
> Supreeth
> 
> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Monday, December 4, 2017 12:36 AM
> To: Supreeth Venkatesh <Supreeth.Venkatesh@arm.com>;
> edk2-devel@lists.01.org
> Cc: leif.lindholm@linaro.org
> Subject: RE: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> 
> Thanks you very much.
> 
> Thanks for your patient. I have reviewed https://github.com/supven01/edk2.git
> (Branch: AArch64StandaloneMm)
> 
> Below is my thougth:
> 1) I do not have comment for ArmPkg related change. - I expect Arm expert can
> review that.
> 
> 2) For "BaseTools/AutoGen: Update header file for MM modules."
> I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com) Would you
> please send separate patch for BaseTools owner to review?
> [Supreeth] already Merged.
> 
> 3) For "MdePkg/Include: Add management mode FV file type and depex."
> I agree with you on that. (Reviewed-by: Jiewen.yao@intel.com) Would you
> please send separate patch for MdePkg owner to review?
> [Supreeth] Posted Patch. Maintainers waiting on StandaloneMmPkg changes to
> be merged.
> 
> 4) For "MdeModulePkg: Add application to test MM communication protocol."
> Can we put UefiInfoApp to StandaloneMmPkg?
> The gMmUefiInfoGuid is consumed by
> StandaloneMmPkg\Core\StandaloneMmCore.c, so I believe it more tights to
> StandaloneMmPkg.
> I do not want to bother MdeModulePkg on that.
> [Supreeth] Modified. Done.
> 
> 5) The rest are all StandaloneMmPkg.
> 5.1) For "StandaloneMmPkg: Add an AArch64 specific entry point library."
> This seems not a generic lib.
> Can we rename it to be: StandaloneMmCoreEntryPointArm?
> If so, we do not need create Arm sub-folder there.
> [Supreeth] I created an Arm sub-folder so that it can be extensible to other
> architectures, if some other architecture wants to reuse this ARM Specific library
> and extend it.
> Also, In the inf file, Arm specific source files are under [Sources.AARCH64]. Let
> me know if you prefer renaming as opposed to creating a sub folder.
> 
> 5.2) For "StandaloneMmPkg/HobLib: Add a common HOB Library for
> management mode."
> This seems not a generic way to get the Hob.
> 
> Below API seems private one. It is not defined in HobLib. But a contract between
> StandaloneMmPkg\Library\StandaloneMmCoreEntryPoint\Arm\CreateHobList.c
> and StandaloneMmPkg\Library\HobLib\HobLib.c
> 
> EFI_HOB_HANDOFF_INFO_TABLE*
> HobConstructor (
>   IN VOID   *EfiMemoryBegin,
>   IN UINTN  EfiMemoryLength,
>   IN VOID   *EfiFreeMemoryBottom,
>   IN VOID   *EfiFreeMemoryTop
>   )
> 
> This is typically not encourage. I am not sure if we have better way to resolve the
> issue.
> But if there is not, I prefer we move it to be ArmSpecific HobLib, such as
> HobLibArmStandaloneMm.
> [Supreeth] For the moment, I don’t have a better way. I have made it Arm
> specific by creating a subfolder "Arm" and sources in inf file under
> [Sources.AARCH64].
> 
> 5.3) For "StandaloneMmPkg/FvLib: Add a common FV Library for management
> mode."
> Looks good.
> 
> 5.4) For "StandaloneMmPkg/MemLib: Instance of memory check library."
> It seems a compatibility issue, that we rename SmmMemLib to MmMemLib.
> 
> Maybe, we can add MmMemLib.h API, and move SmmMemLib content to
> MmMemLib, then let SmmMemLib call MmMemLib.
> [Supreeth] MmMemLib differs significantly from SmmMemLib as SmmMemLib
> has some intel specific physical address bits, some memory map references.
> So I have moved this as ARM specific library at this point with scope for
> refactoring.
> 
> 5.5) For "StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation
> library."
> May I know why you change " gSmst->SmmAllocatePool ();" to
> "MmAllocatePool ();"
> 
> An MM driver should not know the detail implementation of MmCore.
> 
> Can we just use gMmst->MmAllocatePool() here?
> [Supreeth] I modified it to use gMmst->MmXXXXXXXXX() Apis.
> 
> 5.6) For "StandaloneMmPkg: MM driver entry point library."
> Looks good.
> 
> 5.7) For "StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM
> Platforms."
> It seems Arm specific. Can we rename to ArmCpuMm?
> [Supreeth]  I created an Arm sub-folder within CpuMm so that it can be
> extensible to other architectures, if some other architecture wants to reuse this
> ARM Specific cpu mm driver and extend it.
> Also, in DSC file, this is included under [Components.AARCH64] . Let me know if
> you prefer renaming as opposed to creating a sub folder.
> 
> 5.8) For "StandaloneMmPkg/Core: Implementation of Standalone MM Core
> Module."
> I have not gone through all detail.
> It seems quite similar to my previous one. So it is good.
> 
> 5.9) For "StandaloneMmPkg: Add handler to handle event received from
> "uefiinfo"."
> Looks good.
> 
> 
> Thank you
> Yao Jiewen
> 
> > -----Original Message-----
> > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> > Supreeth Venkatesh
> > Sent: Friday, December 1, 2017 6:55 AM
> > To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
> > Cc: leif.lindholm@linaro.org
> > Subject: Re: [edk2] [RFC v1 00/15] *** Proposal for StandaloneMmPkg
> > ***
> >
> > On Tue, 2017-11-28 at 07:00 +0000, Yao, Jiewen wrote:
> > > HI
> > > I am sorry that I missed this mail before.
> > >
> > > I found only 0/15 and 13/15 are in my mail box. :-( I do not know
> > > why others are filtered.
> > This was deliberate as PATCH 13/15 implements MM core code.
> > Rest of them are/were AARCH64 Specific excluding the MM libraries.
> > >
> > > Is that possible to post the whole patch to your private git?
> > > As such, we can review it in more efficient way.
> > I have created a github repo below to review it in more efficient way.
> >
> > EDK2
> > https://github.com/supven01/edk2.git
> > (Branch: AArch64StandaloneMm)
> >
> > EDK2-PLATFORMS
> > https://github.com/supven01/edk2-platforms.git
> > (Branch: master)
> >
> > Also, we are in the process of updating these changes into edk2
> > Staging repository here:
> > https://github.com/tianocore/edk2-staging/tree/AArch64StandaloneMm
> >
> > I will send out PATCH set once you/team completes the review and give
> > feedback/comments.
> >
> > >
> > > Basically, I think it is a good idea to have StandaloneMmPkg to hold
> > > all these features.
> > Thank you for acknowledging this.
> >
> > >
> > > Thank you
> > > Yao Jiewen
> > >
> > > >
> > > > -----Original Message-----
> > > > From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com]
> > > > Sent: Saturday, November 18, 2017 7:08 AM
> > > > To: edk2-devel@lists.01.org
> > > > Cc: leif.lindholm@linaro.org; Yao, Jiewen <jiewen.yao@intel.com>;
> > > > Supreeth Venkatesh <supreeth.venkatesh@arm.com>
> > > > Subject: [RFC v1 00/15] *** Proposal for StandaloneMmPkg ***
> > > >
> > > > ***
> > > > 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 RFC patchset includes the proposed organization/structure and
> > > > has architecture agnostic core changes only as a first pass.
> > > > Once the organization/structure have been agreed upon, patchset
> > > > for supporting libraries and AARCH64 implementation will be sent.
> > > >
> > > > 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-pla
> > > > t
> > > > forms
> > > > 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 (15):
> > > >   ArmPkg/Include: Add MM interface SVC return codes.
> > > >   BaseTools/AutoGen: Update header file for MM modules.
> > > >   ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
> > > >   ArmPkg/ArmMmuLib: Add MMU library inf file suitable for use in
> > > > S- EL0.
> > > >   MdePkg/Include: Add management mode FV file type and depex.
> > > >   StandaloneMmPkg/StandaloneMmCoreEntryPoint: Add an AArch64
> > > > specific
> > > >     entry point library.
> > > >   StandaloneMmPkg/HobLib: Add a common HOB Library for
> management
> > > > mode.
> > > >   StandaloneMmPkg/FvLib: Add a common FV Library for management
> > > > mode.
> > > >   StandaloneMmPkg/MemLib: Instance of management mode memory
> > check
> > > >     library.
> > > >   StandaloneMmPkg/MemoryAllocationLib: Add MM memory allocation
> > > > library.
> > > >   StandaloneMmPkg/StandaloneMmDriverEntryPoint: MM driver entry
> > > > point
> > > >     library.
> > > >   StandaloneMmPkg/CpuMm: Add CPU driver suitable for ARM Standard
> > > >     Platforms.
> > > >   StandaloneMmPkg/Core: Implementation of Standalone MM Core
> > > > Module.
> > > >   StandaloneMmPkg: Describe the package declaration, definition
> > > > and fdf
> > > >     files.
> > > >   ArmPkg/DebugPeCoffExtraActionLib: Add UpdatePeCoffPermissions
> > > > for
> > > >     S-ELO MM.
> > > >
> > > >  ArmPkg/Include/IndustryStandard/ArmMmSvc.h         |    9 +-
> > > >  ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c    |  146
> > +++
> > > >  ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.inf          |   37 +
> > > >  .../DebugPeCoffExtraActionLib.c                    |  167 ++-
> > > >  .../DebugPeCoffExtraActionLib.inf                  |    7 +
> > > >  BaseTools/Source/Python/AutoGen/GenC.py            |   16 +-
> > > >  MdePkg/Include/Pi/PiFirmwareFile.h                 |    4 +
> > > >  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                         |  33
> > 7 ++++++
> > > >  StandaloneMmPkg/Core/Notify.c                      |  203
> > ++++
> > > >  StandaloneMmPkg/Core/Page.c                        |  384
> > +++++++
> > > >  StandaloneMmPkg/Core/Pool.c                        |  287
> > ++++++
> > > >  StandaloneMmPkg/Core/StandaloneMmCore.c            |  708
> > > > +++++++++++++
> > > >  StandaloneMmPkg/Core/StandaloneMmCore.h            |  903
> > > > +++++++++++++++++
> > > >  StandaloneMmPkg/Core/StandaloneMmCore.inf          |   80 ++
> > > >  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           |  225
> > ++++
> > > >  .../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/HobLib.c            |  697
> > > > +++++++++++++
> > > >  StandaloneMmPkg/Library/HobLib/HobLib.inf          |   45 +
> > > >  StandaloneMmPkg/Library/MemLib/MemLib.c            |  276
> > +++++
> > > >  StandaloneMmPkg/Library/MemLib/MemLib.inf          |   47 +
> > > >  .../MemoryAllocationLib/MemoryAllocationLib.c      |  901
> > > > ++++++++++++++++
> > > >  .../MemoryAllocationLib/MemoryAllocationLib.inf    |   49 +
> > > >  .../MemoryAllocationLib/MemoryAllocationServices.h |  117 +++
> > > >  .../StandaloneMmCoreEntryPoint/Arm/CreateHobList.c |  200 ++++
> > > >  .../Arm/SetPermissions.c                           |  278
> > +++++
> > > >  .../Arm/StandaloneMmCoreEntryPoint.c               |  265
> > +++++
> > > >  .../StandaloneMmCoreEntryPoint.inf                 |   53 +
> > > >  .../StandaloneMmDriverEntryPoint.c                 |  102 ++
> > > >  .../StandaloneMmDriverEntryPoint.inf               |   41 +
> > > >  StandaloneMmPkg/StandaloneMmPkg.dec                |   47
> > +
> > > >  StandaloneMmPkg/StandaloneMmPkg.dsc                |  132
> > +++
> > > >  StandaloneMmPkg/StandaloneMmPkg.fdf                |  184
> > ++++
> > > >  55 files changed, 11699 insertions(+), 11 deletions(-)
> > > >  create mode 100644
> > ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuSecLib.c
> > > >  create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuSecLib.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/HobLib.c
> > > >  create mode 100644 StandaloneMmPkg/Library/HobLib/HobLib.inf
> > > >  create mode 100644 StandaloneMmPkg/Library/MemLib/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.in
> > > > f
> > > >  create mode 100644
> > > > StandaloneMmPkg/Library/MemoryAllocationLib/MemoryAllocationServic
> > > > e
> > > > s.h
> > > >  create mode 100644
> > > >
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobLis
> > > > t.c
> > > >  create mode 100644
> > > >
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissio
> > > > ns.
> > > > c
> > > >  create mode 100644
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneMm
> > > > CoreEntryPoint.c
> > > >  create mode 100644
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCore
> > > > E
> > > > ntryPoint.inf
> > > >  create mode 100644
> > > >
> > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > > iv
> > > > erEntryPoint.c
> > > >  create mode 100644
> > > >
> > StandaloneMmPkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDr
> > > > iv
> > > > erEntryPoint.inf
> > > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dec
> > > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.dsc
> > > >  create mode 100644 StandaloneMmPkg/StandaloneMmPkg.fdf
> > > >
> > > > --
> > > > 2.14.1
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
> 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