diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index 34ca571ca6..f95c7cd69e 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -479,6 +479,7 @@ MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf + MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.inf MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf MdeModulePkg/Library/SmmMemoryAllocationProfileLib/SmmMemoryAllocationProfileLib.inf MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationProfileLib.inf diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.c b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterCommon.c similarity index 74% rename from MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.c rename to MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterCommon.c index c3ab5cd050..c4843a745d 100644 --- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.c +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterCommon.c @@ -7,7 +7,7 @@ **/ -#include "ReportStatusCodeRouterSmm.h" +#include "ReportStatusCodeRouterCommon.h" LIST_ENTRY mCallbackListHead = INITIALIZE_LIST_HEAD_VARIABLE (mCallbackListHead); @@ -17,11 +17,11 @@ LIST_ENTRY mCallbackListHead = INITIALIZE_LIST_HEAD_VARIABLE (mCallba // UINT32 mStatusCodeNestStatus = 0; -EFI_SMM_STATUS_CODE_PROTOCOL mSmmStatusCodeProtocol = { +EFI_MM_STATUS_CODE_PROTOCOL mSmmStatusCodeProtocol = { ReportDispatcher }; -EFI_SMM_RSC_HANDLER_PROTOCOL mSmmRscHandlerProtocol = { +EFI_MM_RSC_HANDLER_PROTOCOL mSmmRscHandlerProtocol = { Register, Unregister }; @@ -45,18 +45,18 @@ EFI_SMM_RSC_HANDLER_PROTOCOL mSmmRscHandlerProtocol = { EFI_STATUS EFIAPI Register ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ) { LIST_ENTRY *Link; - SMM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; + MM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; if (Callback == NULL) { return EFI_INVALID_PARAMETER; } for (Link = GetFirstNode (&mCallbackListHead); !IsNull (&mCallbackListHead, Link); Link = GetNextNode (&mCallbackListHead, Link)) { - CallbackEntry = CR (Link, SMM_RSC_HANDLER_CALLBACK_ENTRY, Node, SMM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); + CallbackEntry = CR (Link, MM_RSC_HANDLER_CALLBACK_ENTRY, Node, MM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); if (CallbackEntry->RscHandlerCallback == Callback) { // // If the function was already registered. It can't be registered again. @@ -65,10 +65,10 @@ Register ( } } - CallbackEntry = (SMM_RSC_HANDLER_CALLBACK_ENTRY *)AllocatePool (sizeof (SMM_RSC_HANDLER_CALLBACK_ENTRY)); + CallbackEntry = (MM_RSC_HANDLER_CALLBACK_ENTRY *)AllocatePool (sizeof (MM_RSC_HANDLER_CALLBACK_ENTRY)); ASSERT (CallbackEntry != NULL); - CallbackEntry->Signature = SMM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE; + CallbackEntry->Signature = MM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE; CallbackEntry->RscHandlerCallback = Callback; InsertTailList (&mCallbackListHead, &CallbackEntry->Node); @@ -92,18 +92,18 @@ Register ( EFI_STATUS EFIAPI Unregister ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ) { LIST_ENTRY *Link; - SMM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; + MM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; if (Callback == NULL) { return EFI_INVALID_PARAMETER; } for (Link = GetFirstNode (&mCallbackListHead); !IsNull (&mCallbackListHead, Link); Link = GetNextNode (&mCallbackListHead, Link)) { - CallbackEntry = CR (Link, SMM_RSC_HANDLER_CALLBACK_ENTRY, Node, SMM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); + CallbackEntry = CR (Link, MM_RSC_HANDLER_CALLBACK_ENTRY, Node, MM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); if (CallbackEntry->RscHandlerCallback == Callback) { // // If the function is found in list, delete it and return. @@ -121,8 +121,8 @@ Unregister ( /** Provides an interface that a software module can call to report a status code. - @param This EFI_SMM_STATUS_CODE_PROTOCOL instance. - @param Type Indicates the type of status code being reported. + @param This EFI_MM_STATUS_CODE_PROTOCOL instance. + @param CodeType Indicates the type of status code being reported. @param Value Describes the current status of a hardware or software entity. This included information about the class and subclass that is used to classify the entity as well as an operation. @@ -140,16 +140,16 @@ Unregister ( EFI_STATUS EFIAPI ReportDispatcher ( - IN CONST EFI_SMM_STATUS_CODE_PROTOCOL *This, - IN EFI_STATUS_CODE_TYPE Type, + IN CONST EFI_MM_STATUS_CODE_PROTOCOL *This, + IN EFI_STATUS_CODE_TYPE CodeType, IN EFI_STATUS_CODE_VALUE Value, IN UINT32 Instance, - IN CONST EFI_GUID *CallerId OPTIONAL, + IN CONST EFI_GUID *CallerId, IN EFI_STATUS_CODE_DATA *Data OPTIONAL ) { LIST_ENTRY *Link; - SMM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; + MM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; // // Use atom operation to avoid the reentant of report. @@ -160,13 +160,13 @@ ReportDispatcher ( } for (Link = GetFirstNode (&mCallbackListHead); !IsNull (&mCallbackListHead, Link);) { - CallbackEntry = CR (Link, SMM_RSC_HANDLER_CALLBACK_ENTRY, Node, SMM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); + CallbackEntry = CR (Link, MM_RSC_HANDLER_CALLBACK_ENTRY, Node, MM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); // // The handler may remove itself, so get the next handler in advance. // Link = GetNextNode (&mCallbackListHead, Link); CallbackEntry->RscHandlerCallback ( - Type, + CodeType, Value, Instance, (EFI_GUID*)CallerId, @@ -186,20 +186,15 @@ ReportDispatcher ( /** Entry point of Generic Status Code Driver. - This function is the entry point of SMM Status Code Router . - It produces SMM Report Stataus Code Handler and Status Code protocol. - - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. + This function is the common entry point of MM Status Code Router. + It produces MM Report Status Code Handler and Status Code protocol. @retval EFI_SUCCESS The entry point is executed successfully. **/ EFI_STATUS -EFIAPI -GenericStatusCodeSmmEntry ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable +GenericStatusCodeCommonEntry ( + VOID ) { EFI_STATUS Status; @@ -210,9 +205,9 @@ GenericStatusCodeSmmEntry ( // // Install SmmRscHandler Protocol // - Status = gSmst->SmmInstallProtocolInterface ( + Status = gMmst->MmInstallProtocolInterface ( &Handle, - &gEfiSmmRscHandlerProtocolGuid, + &gEfiMmRscHandlerProtocolGuid, EFI_NATIVE_INTERFACE, &mSmmRscHandlerProtocol ); @@ -221,9 +216,9 @@ GenericStatusCodeSmmEntry ( // // Install SmmStatusCode Protocol // - Status = gSmst->SmmInstallProtocolInterface ( + Status = gMmst->MmInstallProtocolInterface ( &Handle, - &gEfiSmmStatusCodeProtocolGuid, + &gEfiMmStatusCodeProtocolGuid, EFI_NATIVE_INTERFACE, &mSmmStatusCodeProtocol ); diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.h b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterCommon.h similarity index 72% rename from MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.h rename to MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterCommon.h index f8c48c62e7..4f4d055222 100644 --- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.h +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterCommon.h @@ -6,28 +6,26 @@ **/ -#ifndef __REPORT_STATUS_CODE_ROUTER_SMM_H__ -#define __REPORT_STATUS_CODE_ROUTER_SMM_H__ +#ifndef __REPORT_STATUS_CODE_ROUTER_COMMON_H__ +#define __REPORT_STATUS_CODE_ROUTER_COMMON_H__ - -#include -#include +#include +#include #include #include #include #include -#include -#include +#include #include -#define SMM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE SIGNATURE_32 ('s', 'h', 'c', 'e') +#define MM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE SIGNATURE_32 ('s', 'h', 'c', 'e') typedef struct { UINTN Signature; - EFI_SMM_RSC_HANDLER_CALLBACK RscHandlerCallback; + EFI_MM_RSC_HANDLER_CALLBACK RscHandlerCallback; LIST_ENTRY Node; -} SMM_RSC_HANDLER_CALLBACK_ENTRY; +} MM_RSC_HANDLER_CALLBACK_ENTRY; /** Register the callback function for ReportStatusCode() notification. @@ -48,7 +46,7 @@ typedef struct { EFI_STATUS EFIAPI Register ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ); /** @@ -67,14 +65,14 @@ Register ( EFI_STATUS EFIAPI Unregister ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ); /** Provides an interface that a software module can call to report a status code. - @param This EFI_SMM_STATUS_CODE_PROTOCOL instance. - @param Type Indicates the type of status code being reported. + @param This EFI_MM_STATUS_CODE_PROTOCOL instance. + @param CodeType Indicates the type of status code being reported. @param Value Describes the current status of a hardware or software entity. This included information about the class and subclass that is used to classify the entity as well as an operation. @@ -92,12 +90,26 @@ Unregister ( EFI_STATUS EFIAPI ReportDispatcher ( - IN CONST EFI_SMM_STATUS_CODE_PROTOCOL *This, - IN EFI_STATUS_CODE_TYPE Type, + IN CONST EFI_MM_STATUS_CODE_PROTOCOL *This, + IN EFI_STATUS_CODE_TYPE CodeType, IN EFI_STATUS_CODE_VALUE Value, IN UINT32 Instance, - IN CONST EFI_GUID *CallerId OPTIONAL, + IN CONST EFI_GUID *CallerId, IN EFI_STATUS_CODE_DATA *Data OPTIONAL ); +/** + Entry point of Generic Status Code Driver. + + This function is the common entry point of MM Status Code Router. + It produces MM Report Status Code Handler and Status Code protocol. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +GenericStatusCodeCommonEntry ( + VOID + ); + #endif diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf index 46fdcb7bf9..539badc4c7 100644 --- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf @@ -16,7 +16,7 @@ MODULE_TYPE = DXE_SMM_DRIVER PI_SPECIFICATION_VERSION = 0x0001000A VERSION_STRING = 1.0 - ENTRY_POINT = GenericStatusCodeSmmEntry + ENTRY_POINT = GenericStatusCodeTraditionalEntry # # The following information is for reference only and not required by the build tools. @@ -25,15 +25,16 @@ # [Sources] - ReportStatusCodeRouterSmm.c - ReportStatusCodeRouterSmm.h + ReportStatusCodeRouterCommon.c + ReportStatusCodeRouterCommon.h + ReportStatusCodeRouterTraditional.c [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec [LibraryClasses] - SmmServicesTableLib + MmServicesTableLib UefiDriverEntryPoint DebugLib BaseLib @@ -41,8 +42,8 @@ MemoryAllocationLib [Protocols] - gEfiSmmRscHandlerProtocolGuid ## PRODUCES - gEfiSmmStatusCodeProtocolGuid ## PRODUCES + gEfiMmRscHandlerProtocolGuid ## PRODUCES + gEfiMmStatusCodeProtocolGuid ## PRODUCES [Depex] TRUE diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.c b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.c new file mode 100644 index 0000000000..bd1519fa15 --- /dev/null +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.c @@ -0,0 +1,33 @@ +/** @file + Report Status Code Router Driver which produces MM Report Stataus Code Handler Protocol + and MM Status Code Protocol. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "ReportStatusCodeRouterCommon.h" + +/** + Entry point of Generic Status Code Driver. + + This function is the entry point of MM Status Code Router . + It produces MM Report Stataus Code Handler and Status Code protocol. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +GenericStatusCodeStandaloneMmEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_MM_SYSTEM_TABLE *SystemTable + ) +{ + return GenericStatusCodeCommonEntry (); +} diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.inf new file mode 100644 index 0000000000..7aa0127e0b --- /dev/null +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.inf @@ -0,0 +1,49 @@ +## @file +# Report Status Code Router Driver which produces MM Report Stataus Code Handler Protocol and MM Status Code Protocol. +# +# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = ReportStatusCodeRouterStandaloneMm + FILE_GUID = EAEEDEF9-ABE7-4B95-82B0-5A534C899B46 + MODULE_TYPE = MM_STANDALONE + PI_SPECIFICATION_VERSION = 0x00010032 + VERSION_STRING = 1.0 + ENTRY_POINT = GenericStatusCodeStandaloneMmEntry + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + ReportStatusCodeRouterCommon.c + ReportStatusCodeRouterCommon.h + ReportStatusCodeRouterStandaloneMm.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + MmServicesTableLib + StandaloneMmDriverEntryPoint + DebugLib + BaseLib + SynchronizationLib + MemoryAllocationLib + +[Protocols] + gEfiMmRscHandlerProtocolGuid ## PRODUCES + gEfiMmStatusCodeProtocolGuid ## PRODUCES + +[Depex] + TRUE diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterTraditional.c b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterTraditional.c new file mode 100644 index 0000000000..360a0eef6b --- /dev/null +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterTraditional.c @@ -0,0 +1,33 @@ +/** @file + Report Status Code Router Driver which produces MM Report Stataus Code Handler Protocol + and MM Status Code Protocol. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "ReportStatusCodeRouterCommon.h" + +/** + Entry point of Generic Status Code Driver. + + This function is the entry point of SMM Status Code Router . + It produces SMM Report Stataus Code Handler and Status Code protocol. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +GenericStatusCodeTraditionalEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + return GenericStatusCodeCommonEntry (); +}