This patch adds a simple handler to handle event received from "mmcommtest" shell application. It prints the version information from the copy of the UEFI system table received from normal world.
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Achin Gupta <achin.gu...@arm.com> Signed-off-by: Supreeth Venkatesh <supreeth.venkat...@arm.com> --- StandaloneMmPkg/Core/StandaloneMmCore.c | 39 +++++++++++++++++++++++++++++++ StandaloneMmPkg/Core/StandaloneMmCore.inf | 2 ++ StandaloneMmPkg/StandaloneMmPkg.dec | 2 ++ 3 files changed, 43 insertions(+) diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.c b/StandaloneMmPkg/Core/StandaloneMmCore.c index 0bb99b9710..4aaecdb2ea 100644 --- a/StandaloneMmPkg/Core/StandaloneMmCore.c +++ b/StandaloneMmPkg/Core/StandaloneMmCore.c @@ -95,6 +95,15 @@ EFI_MM_SYSTEM_TABLE gMmCoreMmst = { // BOOLEAN mInLegacyBoot = FALSE; +EFI_STATUS +EFIAPI +MmCommTestHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + // // Table of MMI Handlers that are registered by the MM Core when it is initialized // @@ -106,6 +115,7 @@ MM_CORE_MMI_HANDLERS mMmCoreMmiHandlers[] = { { MmLegacyBootHandler, &gEfiEventLegacyBootGuid, NULL, FALSE }, { MmExitBootServiceHandler,&gEfiEventExitBootServicesGuid, NULL, FALSE }, { MmReadyToBootHandler, &gEfiEventReadyToBootGuid, NULL, FALSE }, + { MmCommTestHandler, &gMmCommTestGuid, NULL, TRUE }, { NULL, NULL, NULL, FALSE }, }; @@ -379,7 +389,36 @@ MmEndOfDxeHandler ( return Status; } +/** + This function is the main entry point for communicate-based callback. + + @param DispatchHandle The unique handle assigned to this handler by MmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-MM environment into an MM environment. + @param CommBufferSize The size of the CommBuffer. + @return Status Code +**/ +EFI_STATUS +EFIAPI +MmCommTestHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ) +{ + EFI_SYSTEM_TABLE SystemTable; + + DEBUG ((DEBUG_INFO, "MmUefiInfoHandler\n")); + + CopyMem (&SystemTable, CommBuffer, sizeof(EFI_SYSTEM_TABLE)); + + DEBUG ((DEBUG_INFO, " UEFI Firmware Version - 0x%x\n", SystemTable.FirmwareRevision)); + + return EFI_SUCCESS; +} /** The main entry point to MM Foundation. diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf b/StandaloneMmPkg/Core/StandaloneMmCore.inf index c5eaa14ba3..b35870732c 100644 --- a/StandaloneMmPkg/Core/StandaloneMmCore.inf +++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf @@ -78,3 +78,5 @@ gEfiEventLegacyBootGuid gEfiEventExitBootServicesGuid gEfiEventReadyToBootGuid + gMmCommTestGuid + diff --git a/StandaloneMmPkg/StandaloneMmPkg.dec b/StandaloneMmPkg/StandaloneMmPkg.dec index 36521bb039..d88be3ce5e 100644 --- a/StandaloneMmPkg/StandaloneMmPkg.dec +++ b/StandaloneMmPkg/StandaloneMmPkg.dec @@ -39,6 +39,8 @@ gEfiStandaloneMmNonSecureBufferGuid = { 0xf00497e3, 0xbfa2, 0x41a1, { 0x9d, 0x29, 0x54, 0xc2, 0xe9, 0x37, 0x21, 0xc5 }} gEfiArmTfCpuDriverEpDescriptorGuid = { 0x6ecbd5a1, 0xc0f8, 0x4702, { 0x83, 0x01, 0x4f, 0xc2, 0xc5, 0x47, 0x0a, 0x51 }} + gMmCommTestGuid = { 0xa37721e4, 0x8c0b, 0x4bca, { 0xb5, 0xe8, 0xe9, 0x2, 0xa0, 0x25, 0x51, 0x4e }} + [PcdsFeatureFlag] gStandaloneMmPkgTokenSpaceGuid.PcdStandaloneMmEnable|FALSE|BOOLEAN|0x00000001 -- 2.16.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel