> -----Original Message----- > From: Kun Qin <ku...@outlook.com> > Sent: Wednesday, January 27, 2021 3:47 AM > To: devel@edk2.groups.io > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com> > Subject: [PATCH v4 11/20] MdeModulePkg: SmmSmiHandlerProfileLib: > Support StandaloneMm Instance > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3185 > > This change added support of SMI handler profile library router under > StandaloneMm. This change replaces gSmst with gMmst. It also abstracts > standalone and traditional MM driver entrypoints into separate files to allow > maximal common implementations. > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Eric Dong <eric.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > > Signed-off-by: Kun Qin <ku...@outlook.com> > --- > > Notes: > v4: > - Newly created for SmmSmiHandlerProfileLib coverage.
Reviewed-by: Hao A Wu <hao.a...@intel.com> Best Regards, Hao Wu > > > MdeModulePkg/Library/SmmSmiHandlerProfileLib/{SmmSmiHandlerProfileL > ib.c => MmSmiHandlerProfileLib.c} | 20 ++--- > > MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLi > b.c | 90 ++------------------ > > MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandl > erProfileLib.c | 31 +++++++ > > MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib > .h | 23 +++++ > > MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLi > b.inf | 4 +- > > MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandl > erProfileLib.inf | 44 ++++++++++ > MdeModulePkg/MdeModulePkg.dsc > | 1 > + > 7 files changed, 117 insertions(+), 96 deletions(-) > > diff --git > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfile > Lib.c > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfile > Lib.c > similarity index 86% > copy from > MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLi > b.c > copy to > MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib > .c > index b76e8f0dc132..f800220b549c 100644 > --- > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfile > Lib.c > +++ > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfile > Li > +++ b.c > @@ -1,14 +1,15 @@ > /** @file > - SMM driver instance of SmiHandlerProfile Library. > + MM driver instance of SmiHandlerProfile Library. > > Copyright (c) 2017, Intel Corporation. All rights reserved.<BR> > + Copyright (c) Microsoft Corporation. > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > > -#include <PiSmm.h> > +#include <PiMm.h> > #include <Library/SmiHandlerProfileLib.h> -#include > <Library/SmmServicesTableLib.h> > +#include <Library/MmServicesTableLib.h> > #include <Guid/SmiHandlerProfile.h> > > SMI_HANDLER_PROFILE_PROTOCOL *mSmiHandlerProfile; @@ -82,21 > +83,16 @@ SmiHandlerProfileUnregisterHandler ( } > > /** > - The constructor function for SMI handler profile. > - > - @param ImageHandle The firmware allocated handle for the EFI image. > - @param SystemTable A pointer to the EFI System Table. > + The common constructor function for SMI handler profile. > > @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. > **/ > EFI_STATUS > -EFIAPI > -SmmSmiHandlerProfileLibConstructor ( > - IN EFI_HANDLE ImageHandle, > - IN EFI_SYSTEM_TABLE *SystemTable > +MmSmiHandlerProfileLibInitialization ( > + VOID > ) > { > - gSmst->SmmLocateProtocol ( > + gMmst->MmLocateProtocol ( > &gSmiHandlerProfileGuid, > NULL, > (VOID **) &mSmiHandlerProfile diff --git > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfile > Lib.c > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfil > eLib.c > index b76e8f0dc132..0167d81b880d 100644 > --- > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfile > Lib.c > +++ > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfil > eL > +++ ib.c > @@ -2,87 +2,17 @@ > SMM driver instance of SmiHandlerProfile Library. > > Copyright (c) 2017, Intel Corporation. All rights reserved.<BR> > + Copyright (c) Microsoft Corporation. > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > > -#include <PiSmm.h> > -#include <Library/SmiHandlerProfileLib.h> -#include > <Library/SmmServicesTableLib.h> -#include <Guid/SmiHandlerProfile.h> > +#include <PiMm.h> > > -SMI_HANDLER_PROFILE_PROTOCOL *mSmiHandlerProfile; > +#include "MmSmiHandlerProfileLib.h" > > /** > - This function is called by SmmChildDispatcher module to report > - a new SMI handler is registered, to SmmCore. > - > - @param HandlerGuid The GUID to identify the type of the handler. > - For the SmmChildDispatch protocol, the HandlerGuid > - must be the GUID of SmmChildDispatch protocol. > - @param Handler The SMI handler. > - @param CallerAddress The address of the module who registers the SMI > handler. > - @param Context The context of the SMI handler. > - For the SmmChildDispatch protocol, the Context > - must match the one defined for SmmChildDispatch > protocol. > - @param ContextSize The size of the context in bytes. > - For the SmmChildDispatch protocol, the Context > - must match the one defined for SmmChildDispatch > protocol. > - > - @retval EFI_SUCCESS The information is recorded. > - @retval EFI_UNSUPPORTED The feature is unsupported. > - @retval EFI_OUT_OF_RESOURCES There is no enough resource to record > the information. > -**/ > -EFI_STATUS > -EFIAPI > -SmiHandlerProfileRegisterHandler ( > - IN EFI_GUID *HandlerGuid, > - IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, > - IN PHYSICAL_ADDRESS CallerAddress, > - IN VOID *Context, OPTIONAL > - IN UINTN ContextSize OPTIONAL > - ) > -{ > - if (mSmiHandlerProfile != NULL) { > - return mSmiHandlerProfile->RegisterHandler (mSmiHandlerProfile, > HandlerGuid, Handler, CallerAddress, Context, ContextSize); > - } > - return EFI_UNSUPPORTED; > -} > - > -/** > - This function is called by SmmChildDispatcher module to report > - an existing SMI handler is unregistered, to SmmCore. > - > - @param HandlerGuid The GUID to identify the type of the handler. > - For the SmmChildDispatch protocol, the HandlerGuid > - must be the GUID of SmmChildDispatch protocol. > - @param Handler The SMI handler. > - @param Context The context of the SMI handler. > - If it is NOT NULL, it will be used to check what is > registered. > - @param ContextSize The size of the context in bytes. > - If Context is NOT NULL, it will be used to check > what is > registered. > - > - @retval EFI_SUCCESS The original record is removed. > - @retval EFI_UNSUPPORTED The feature is unsupported. > - @retval EFI_NOT_FOUND There is no record for the HandlerGuid and > handler. > -**/ > -EFI_STATUS > -EFIAPI > -SmiHandlerProfileUnregisterHandler ( > - IN EFI_GUID *HandlerGuid, > - IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, > - IN VOID *Context, OPTIONAL > - IN UINTN ContextSize OPTIONAL > - ) > -{ > - if (mSmiHandlerProfile != NULL) { > - return mSmiHandlerProfile->UnregisterHandler (mSmiHandlerProfile, > HandlerGuid, Handler, Context, ContextSize); > - } > - return EFI_UNSUPPORTED; > -} > - > -/** > - The constructor function for SMI handler profile. > + The constructor function for traditional MM SMI handler profile. > > @param ImageHandle The firmware allocated handle for the EFI image. > @param SystemTable A pointer to the EFI System Table. > @@ -92,15 +22,9 @@ SmiHandlerProfileUnregisterHandler ( EFI_STATUS > EFIAPI SmmSmiHandlerProfileLibConstructor ( > - IN EFI_HANDLE ImageHandle, > - IN EFI_SYSTEM_TABLE *SystemTable > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > ) > { > - gSmst->SmmLocateProtocol ( > - &gSmiHandlerProfileGuid, > - NULL, > - (VOID **) &mSmiHandlerProfile > - ); > - return EFI_SUCCESS; > + return MmSmiHandlerProfileLibInitialization (); > } > - > diff --git > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHan > dlerProfileLib.c > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHan > dlerProfileLib.c > new file mode 100644 > index 000000000000..a7714390e5b1 > --- /dev/null > +++ > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHan > dle > +++ rProfileLib.c > @@ -0,0 +1,31 @@ > +/** @file > + Standalone MM driver instance of SmiHandlerProfile Library. > + > + Copyright (c) 2017, Intel Corporation. All rights reserved.<BR> > + Copyright (c) Microsoft Corporation. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include <PiMm.h> > + > +#include "MmSmiHandlerProfileLib.h" > + > +/** > + The constructor function for standalone MM SMI handler profile. > + > + @param ImageHandle The firmware allocated handle for the EFI image. > + @param SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. > +**/ > +EFI_STATUS > +EFIAPI > +StandaloneMmSmiHandlerProfileLibConstructor ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_MM_SYSTEM_TABLE *SystemTable > + ) > +{ > + return MmSmiHandlerProfileLibInitialization (); } > + > diff --git > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileL > ib.h > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfile > Lib.h > new file mode 100644 > index 000000000000..8e390590ee7b > --- /dev/null > +++ > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfile > Li > +++ b.h > @@ -0,0 +1,23 @@ > +/** @file > + MM driver instance of SmiHandlerProfile Library. > + > + Copyright (c) 2017, Intel Corporation. All rights reserved.<BR> > + Copyright (c) Microsoft Corporation. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef _MM_SMI_HANDLER_PROFILE_LIB_H_ > +#define _MM_SMI_HANDLER_PROFILE_LIB_H_ > + > +/** > + The common constructor function for SMI handler profile. > + > + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. > +**/ > +EFI_STATUS > +MmSmiHandlerProfileLibInitialization ( > + VOID > + ); > + > +#endif //_SMM_SMI_HANDLER_PROFILE_LIB_H_ > diff --git > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfile > Lib.inf > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfil > eLib.inf > index 1d738c7087c6..56007d502134 100644 > --- > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfile > Lib.inf > +++ > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfil > eL > +++ ib.inf > @@ -27,6 +27,8 @@ [Defines] > # > > [Sources] > + MmSmiHandlerProfileLib.c > + MmSmiHandlerProfileLib.h > SmmSmiHandlerProfileLib.c > > [Packages] > @@ -34,7 +36,7 @@ [Packages] > MdeModulePkg/MdeModulePkg.dec > > [LibraryClasses] > - SmmServicesTableLib > + MmServicesTableLib > > [Guids] > gSmiHandlerProfileGuid ## CONSUMES ## GUID # Locate protocol > diff --git > a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHan > dlerProfileLib.inf > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHan > dlerProfileLib.inf > new file mode 100644 > index 000000000000..a885cc2b2ae1 > --- /dev/null > +++ > b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHan > dle > +++ rProfileLib.inf > @@ -0,0 +1,44 @@ > +## @file > +# Standalone MM driver instance of SmiHandlerProfile Library. > +# > +# This library instance provides real functionality for SmmChildDispatcher > module. > +# > +# Copyright (c) 2017, Intel Corporation. All rights reserved.<BR> # > +Copyright (c) Microsoft Corporation. > +# > +# SPDX-License-Identifier: BSD-2-Clause-Patent # # ## > + > +[Defines] > + INF_VERSION = 0x00010005 > + BASE_NAME = StandaloneMmSmiHandlerProfileLib > + FILE_GUID = 1F2ED27B-A01D-4867-B993-9B710E5926C5 > + MODULE_TYPE = MM_STANDALONE > + VERSION_STRING = 1.0 > + PI_SPECIFICATION_VERSION = 0x10000032 > + LIBRARY_CLASS = SmiHandlerProfileLib|MM_STANDALONE > + CONSTRUCTOR = > StandaloneMmSmiHandlerProfileLibConstructor > + > +# > +# The following information is for reference only and not required by the > build tools. > +# > +# VALID_ARCHITECTURES = IA32 X64 > +# > + > +[Sources] > + MmSmiHandlerProfileLib.c > + MmSmiHandlerProfileLib.h > + StandaloneMmSmiHandlerProfileLib.c > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + > +[LibraryClasses] > + MmServicesTableLib > + > +[Guids] > + gSmiHandlerProfileGuid ## CONSUMES ## GUID # Locate protocol > + > diff --git a/MdeModulePkg/MdeModulePkg.dsc > b/MdeModulePkg/MdeModulePkg.dsc index f95c7cd69ee1..7ca4a1bb3080 > 100644 > --- a/MdeModulePkg/MdeModulePkg.dsc > +++ b/MdeModulePkg/MdeModulePkg.dsc > @@ -492,6 +492,7 @@ [Components.IA32, Components.X64] > > MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxStandaloneMmLib.inf > > MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformH > ookLibNull.inf > > MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLi > b.inf > + > + > MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandl > erPro > + fileLib.inf > > MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaArchCustomDeco > mpressLib.inf > > MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutor > Dxe.inf > MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf > -- > 2.30.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#70817): https://edk2.groups.io/g/devel/message/70817 Mute This Topic: https://groups.io/mt/80139784/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-