MdeModulePkg: SmmLockBoxSmmLib: Support StandaloneMm for SmmLockBoxLib

This change added support of StandaloneMm for SmmLockBoxLib. It replaces
gSmst with gMmst to support both traditional MM and standalone MM. The
contructor and desctructor functions are abstracted to support different
function prototype definitions.

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Eric Dong <eric.dong@intel.com>

Signed-off-by: Kun Qin <kun.q@outlook.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
Kun Qin 2020-12-17 13:18:51 -08:00
parent 037ccb09a2
commit e35fce8ada
7 changed files with 230 additions and 53 deletions

View File

@ -43,5 +43,30 @@ typedef struct {
#pragma pack() #pragma pack()
/**
Constructor for SmmLockBox library.
This is used to set SmmLockBox context, which will be used in PEI phase in S3 boot path later.
@retval EFI_SUCEESS
@return Others Some error occurs.
**/
EFI_STATUS
SmmLockBoxMmConstructor (
VOID
);
/**
Destructor for SmmLockBox library.
This is used to uninstall SmmLockBoxCommunication configuration table
if it has been installed in Constructor.
@retval EFI_SUCEESS The destructor always returns EFI_SUCCESS.
**/
EFI_STATUS
SmmLockBoxMmDestructor (
VOID
);
#endif #endif

View File

@ -6,16 +6,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
#include <PiSmm.h> #include <PiMm.h>
#include <Library/SmmServicesTableLib.h> #include <Library/MmServicesTableLib.h>
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#include <Library/LockBoxLib.h> #include <Library/LockBoxLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Guid/SmmLockBox.h> #include <Guid/SmmLockBox.h>
#include <Guid/EndOfS3Resume.h> #include <Guid/EndOfS3Resume.h>
#include <Protocol/SmmReadyToLock.h> #include <Protocol/MmReadyToLock.h>
#include <Protocol/SmmEndOfDxe.h> #include <Protocol/MmEndOfDxe.h>
#include <Protocol/SmmSxDispatch2.h> #include <Protocol/SmmSxDispatch2.h>
#include "SmmLockBoxLibPrivate.h" #include "SmmLockBoxLibPrivate.h"
@ -49,13 +49,13 @@ InternalGetSmmLockBoxContext (
// //
// Check if gEfiSmmLockBoxCommunicationGuid is installed by someone // Check if gEfiSmmLockBoxCommunicationGuid is installed by someone
// //
for (Index = 0; Index < gSmst->NumberOfTableEntries; Index++) { for (Index = 0; Index < gMmst->NumberOfTableEntries; Index++) {
if (CompareGuid (&gSmst->SmmConfigurationTable[Index].VendorGuid, &gEfiSmmLockBoxCommunicationGuid)) { if (CompareGuid (&gMmst->MmConfigurationTable[Index].VendorGuid, &gEfiSmmLockBoxCommunicationGuid)) {
// //
// Found. That means some other library instance is already run. // Found. That means some other library instance is already run.
// No need to install again, just return. // No need to install again, just return.
// //
return (SMM_LOCK_BOX_CONTEXT *)gSmst->SmmConfigurationTable[Index].VendorTable; return (SMM_LOCK_BOX_CONTEXT *)gMmst->MmConfigurationTable[Index].VendorTable;
} }
} }
@ -142,8 +142,8 @@ SmmLockBoxSmmEndOfDxeNotify (
// //
// Locate SmmSxDispatch2 protocol. // Locate SmmSxDispatch2 protocol.
// //
Status = gSmst->SmmLocateProtocol ( Status = gMmst->MmLocateProtocol (
&gEfiSmmSxDispatch2ProtocolGuid, &gEfiMmSxDispatchProtocolGuid,
NULL, NULL,
(VOID **)&SxDispatch (VOID **)&SxDispatch
); );
@ -191,29 +191,24 @@ SmmLockBoxEndOfS3ResumeNotify (
Constructor for SmmLockBox library. Constructor for SmmLockBox library.
This is used to set SmmLockBox context, which will be used in PEI phase in S3 boot path later. This is used to set SmmLockBox context, which will be used in PEI phase in S3 boot path later.
@param[in] ImageHandle Image handle of this driver.
@param[in] SystemTable A Pointer to the EFI System Table.
@retval EFI_SUCEESS @retval EFI_SUCEESS
@return Others Some error occurs. @return Others Some error occurs.
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI SmmLockBoxMmConstructor (
SmmLockBoxSmmConstructor ( VOID
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
SMM_LOCK_BOX_CONTEXT *SmmLockBoxContext; SMM_LOCK_BOX_CONTEXT *SmmLockBoxContext;
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxSmmConstructor - Enter\n")); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxMmConstructor - Enter\n"));
// //
// Register SmmReadyToLock notification. // Register SmmReadyToLock notification.
// //
Status = gSmst->SmmRegisterProtocolNotify ( Status = gMmst->MmRegisterProtocolNotify (
&gEfiSmmReadyToLockProtocolGuid, &gEfiMmReadyToLockProtocolGuid,
SmmLockBoxSmmReadyToLockNotify, SmmLockBoxSmmReadyToLockNotify,
&mSmmLockBoxRegistrationSmmReadyToLock &mSmmLockBoxRegistrationSmmReadyToLock
); );
@ -222,8 +217,8 @@ SmmLockBoxSmmConstructor (
// //
// Register SmmEndOfDxe notification. // Register SmmEndOfDxe notification.
// //
Status = gSmst->SmmRegisterProtocolNotify ( Status = gMmst->MmRegisterProtocolNotify (
&gEfiSmmEndOfDxeProtocolGuid, &gEfiMmEndOfDxeProtocolGuid,
SmmLockBoxSmmEndOfDxeNotify, SmmLockBoxSmmEndOfDxeNotify,
&mSmmLockBoxRegistrationSmmEndOfDxe &mSmmLockBoxRegistrationSmmEndOfDxe
); );
@ -232,7 +227,7 @@ SmmLockBoxSmmConstructor (
// //
// Register EndOfS3Resume notification. // Register EndOfS3Resume notification.
// //
Status = gSmst->SmmRegisterProtocolNotify ( Status = gMmst->MmRegisterProtocolNotify (
&gEdkiiEndOfS3ResumeGuid, &gEdkiiEndOfS3ResumeGuid,
SmmLockBoxEndOfS3ResumeNotify, SmmLockBoxEndOfS3ResumeNotify,
&mSmmLockBoxRegistrationEndOfS3Resume &mSmmLockBoxRegistrationEndOfS3Resume
@ -249,7 +244,7 @@ SmmLockBoxSmmConstructor (
// No need to install again, just return. // No need to install again, just return.
// //
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxContext - already installed\n")); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxContext - already installed\n"));
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxSmmConstructor - Exit\n")); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxMmConstructor - Exit\n"));
return EFI_SUCCESS; return EFI_SUCCESS;
} }
@ -263,8 +258,8 @@ SmmLockBoxSmmConstructor (
} }
mSmmLockBoxContext.LockBoxDataAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)&mLockBoxQueue; mSmmLockBoxContext.LockBoxDataAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)&mLockBoxQueue;
Status = gSmst->SmmInstallConfigurationTable ( Status = gMmst->MmInstallConfigurationTable (
gSmst, gMmst,
&gEfiSmmLockBoxCommunicationGuid, &gEfiSmmLockBoxCommunicationGuid,
&mSmmLockBoxContext, &mSmmLockBoxContext,
sizeof(mSmmLockBoxContext) sizeof(mSmmLockBoxContext)
@ -274,7 +269,7 @@ SmmLockBoxSmmConstructor (
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxContext - %x\n", (UINTN)&mSmmLockBoxContext)); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxContext - %x\n", (UINTN)&mSmmLockBoxContext));
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib LockBoxDataAddress - %x\n", (UINTN)&mLockBoxQueue)); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib LockBoxDataAddress - %x\n", (UINTN)&mLockBoxQueue));
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxSmmConstructor - Exit\n")); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxMmConstructor - Exit\n"));
return Status; return Status;
} }
@ -284,26 +279,21 @@ SmmLockBoxSmmConstructor (
This is used to uninstall SmmLockBoxCommunication configuration table This is used to uninstall SmmLockBoxCommunication configuration table
if it has been installed in Constructor. if it has been installed in Constructor.
@param[in] ImageHandle Image handle of this driver.
@param[in] SystemTable A Pointer to the EFI System Table.
@retval EFI_SUCEESS The destructor always returns EFI_SUCCESS. @retval EFI_SUCEESS The destructor always returns EFI_SUCCESS.
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI SmmLockBoxMmDestructor (
SmmLockBoxSmmDestructor ( VOID
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxSmmDestructor in %a module\n", gEfiCallerBaseName)); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SmmLockBoxMmDestructor in %a module\n", gEfiCallerBaseName));
if (mSmmConfigurationTableInstalled) { if (mSmmConfigurationTableInstalled) {
Status = gSmst->SmmInstallConfigurationTable ( Status = gMmst->MmInstallConfigurationTable (
gSmst, gMmst,
&gEfiSmmLockBoxCommunicationGuid, &gEfiSmmLockBoxCommunicationGuid,
NULL, NULL,
0 0
@ -316,8 +306,8 @@ SmmLockBoxSmmDestructor (
// //
// Unregister SmmReadyToLock notification. // Unregister SmmReadyToLock notification.
// //
Status = gSmst->SmmRegisterProtocolNotify ( Status = gMmst->MmRegisterProtocolNotify (
&gEfiSmmReadyToLockProtocolGuid, &gEfiMmReadyToLockProtocolGuid,
NULL, NULL,
&mSmmLockBoxRegistrationSmmReadyToLock &mSmmLockBoxRegistrationSmmReadyToLock
); );
@ -327,8 +317,8 @@ SmmLockBoxSmmDestructor (
// //
// Unregister SmmEndOfDxe notification. // Unregister SmmEndOfDxe notification.
// //
Status = gSmst->SmmRegisterProtocolNotify ( Status = gMmst->MmRegisterProtocolNotify (
&gEfiSmmEndOfDxeProtocolGuid, &gEfiMmEndOfDxeProtocolGuid,
NULL, NULL,
&mSmmLockBoxRegistrationSmmEndOfDxe &mSmmLockBoxRegistrationSmmEndOfDxe
); );
@ -338,7 +328,7 @@ SmmLockBoxSmmDestructor (
// //
// Unregister EndOfS3Resume notification. // Unregister EndOfS3Resume notification.
// //
Status = gSmst->SmmRegisterProtocolNotify ( Status = gMmst->MmRegisterProtocolNotify (
&gEdkiiEndOfS3ResumeGuid, &gEdkiiEndOfS3ResumeGuid,
NULL, NULL,
&mSmmLockBoxRegistrationEndOfS3Resume &mSmmLockBoxRegistrationEndOfS3Resume
@ -453,7 +443,7 @@ SaveLockBox (
// //
// Allocate SMRAM buffer // Allocate SMRAM buffer
// //
Status = gSmst->SmmAllocatePages ( Status = gMmst->MmAllocatePages (
AllocateAnyPages, AllocateAnyPages,
EfiRuntimeServicesData, EfiRuntimeServicesData,
EFI_SIZE_TO_PAGES (Length), EFI_SIZE_TO_PAGES (Length),
@ -468,14 +458,14 @@ SaveLockBox (
// //
// Allocate LockBox // Allocate LockBox
// //
Status = gSmst->SmmAllocatePool ( Status = gMmst->MmAllocatePool (
EfiRuntimeServicesData, EfiRuntimeServicesData,
sizeof(*LockBox), sizeof(*LockBox),
(VOID **)&LockBox (VOID **)&LockBox
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
gSmst->SmmFreePages (SmramBuffer, EFI_SIZE_TO_PAGES (Length)); gMmst->MmFreePages (SmramBuffer, EFI_SIZE_TO_PAGES (Length));
DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SaveLockBox - Exit (%r)\n", EFI_OUT_OF_RESOURCES)); DEBUG ((DEBUG_INFO, "SmmLockBoxSmmLib SaveLockBox - Exit (%r)\n", EFI_OUT_OF_RESOURCES));
return EFI_OUT_OF_RESOURCES; return EFI_OUT_OF_RESOURCES;
} }
@ -662,7 +652,7 @@ UpdateLockBox (
DEBUG_INFO, DEBUG_INFO,
"SmmLockBoxSmmLib UpdateLockBox - Allocate new buffer to enlarge.\n" "SmmLockBoxSmmLib UpdateLockBox - Allocate new buffer to enlarge.\n"
)); ));
Status = gSmst->SmmAllocatePages ( Status = gMmst->MmAllocatePages (
AllocateAnyPages, AllocateAnyPages,
EfiRuntimeServicesData, EfiRuntimeServicesData,
EFI_SIZE_TO_PAGES (Offset + Length), EFI_SIZE_TO_PAGES (Offset + Length),
@ -679,7 +669,7 @@ UpdateLockBox (
// //
CopyMem ((VOID *)(UINTN)SmramBuffer, (VOID *)(UINTN)LockBox->SmramBuffer, (UINTN)LockBox->Length); CopyMem ((VOID *)(UINTN)SmramBuffer, (VOID *)(UINTN)LockBox->SmramBuffer, (UINTN)LockBox->Length);
ZeroMem ((VOID *)(UINTN)LockBox->SmramBuffer, (UINTN)LockBox->Length); ZeroMem ((VOID *)(UINTN)LockBox->SmramBuffer, (UINTN)LockBox->Length);
gSmst->SmmFreePages (LockBox->SmramBuffer, EFI_SIZE_TO_PAGES ((UINTN)LockBox->Length)); gMmst->MmFreePages (LockBox->SmramBuffer, EFI_SIZE_TO_PAGES ((UINTN)LockBox->Length));
LockBox->SmramBuffer = SmramBuffer; LockBox->SmramBuffer = SmramBuffer;
} }

View File

@ -15,8 +15,8 @@
MODULE_TYPE = DXE_SMM_DRIVER MODULE_TYPE = DXE_SMM_DRIVER
VERSION_STRING = 1.0 VERSION_STRING = 1.0
LIBRARY_CLASS = LockBoxLib|DXE_SMM_DRIVER LIBRARY_CLASS = LockBoxLib|DXE_SMM_DRIVER
CONSTRUCTOR = SmmLockBoxSmmConstructor CONSTRUCTOR = SmmLockBoxTraditionalConstructor
DESTRUCTOR = SmmLockBoxSmmDestructor DESTRUCTOR = SmmLockBoxTraditionalDestructor
# #
# The following information is for reference only and not required by the build tools. # The following information is for reference only and not required by the build tools.
@ -25,7 +25,8 @@
# #
[Sources] [Sources]
SmmLockBoxSmmLib.c SmmLockBoxTraditionalMmLib.c
SmmLockBoxMmLib.c
SmmLockBoxLibPrivate.h SmmLockBoxLibPrivate.h
[Packages] [Packages]
@ -33,14 +34,14 @@
MdeModulePkg/MdeModulePkg.dec MdeModulePkg/MdeModulePkg.dec
[LibraryClasses] [LibraryClasses]
SmmServicesTableLib MmServicesTableLib
BaseLib BaseLib
DebugLib DebugLib
[Protocols] [Protocols]
gEfiSmmReadyToLockProtocolGuid ## NOTIFY gEfiMmReadyToLockProtocolGuid ## NOTIFY
gEfiSmmEndOfDxeProtocolGuid ## NOTIFY gEfiMmEndOfDxeProtocolGuid ## NOTIFY
gEfiSmmSxDispatch2ProtocolGuid ## NOTIFY gEfiMmSxDispatchProtocolGuid ## NOTIFY
[Guids] [Guids]
## SOMETIMES_CONSUMES ## UNDEFINED # SmmSystemTable ## SOMETIMES_CONSUMES ## UNDEFINED # SmmSystemTable

View File

@ -0,0 +1,53 @@
/** @file
Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <PiMm.h>
#include "SmmLockBoxLibPrivate.h"
/**
Constructor for SmmLockBox library.
This is used to set SmmLockBox context, which will be used in PEI phase in S3 boot path later.
@param[in] ImageHandle Image handle of this driver.
@param[in] SystemTable A Pointer to the EFI System Table.
@retval EFI_SUCEESS
@return Others Some error occurs.
**/
EFI_STATUS
EFIAPI
SmmLockBoxStandaloneMmConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_MM_SYSTEM_TABLE *SystemTable
)
{
return SmmLockBoxMmConstructor ();
}
/**
Destructor for SmmLockBox library.
This is used to uninstall SmmLockBoxCommunication configuration table
if it has been installed in Constructor.
@param[in] ImageHandle Image handle of this driver.
@param[in] SystemTable A Pointer to the EFI System Table.
@retval EFI_SUCEESS The destructor always returns EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
SmmLockBoxStandaloneMmDestructor (
IN EFI_HANDLE ImageHandle,
IN EFI_MM_SYSTEM_TABLE *SystemTable
)
{
return SmmLockBoxMmDestructor ();
}

View File

@ -0,0 +1,53 @@
## @file
# SMM LockBox library instance.
#
# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = SmmLockBoxStandaloneMmLib
FILE_GUID = 3C05978B-30CA-4544-9C5A-AB99265EFC31
MODULE_TYPE = MM_STANDALONE
VERSION_STRING = 1.0
PI_SPECIFICATION_VERSION = 0x00010032
LIBRARY_CLASS = LockBoxLib|MM_STANDALONE
CONSTRUCTOR = SmmLockBoxStandaloneMmConstructor
DESTRUCTOR = SmmLockBoxStandaloneMmDestructor
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64
#
[Sources]
SmmLockBoxStandaloneMmLib.c
SmmLockBoxMmLib.c
SmmLockBoxLibPrivate.h
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
MmServicesTableLib
BaseLib
DebugLib
[Protocols]
gEfiMmReadyToLockProtocolGuid ## NOTIFY
gEfiMmEndOfDxeProtocolGuid ## NOTIFY
gEfiMmSxDispatchProtocolGuid ## NOTIFY
[Guids]
## SOMETIMES_CONSUMES ## UNDEFINED # SmmSystemTable
## SOMETIMES_PRODUCES ## UNDEFINED # SmmSystemTable
gEfiSmmLockBoxCommunicationGuid
## CONSUMES ## UNDEFINED # Protocol notify
gEdkiiEndOfS3ResumeGuid

View File

@ -0,0 +1,53 @@
/** @file
Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <PiSmm.h>
#include "SmmLockBoxLibPrivate.h"
/**
Constructor for SmmLockBox library.
This is used to set SmmLockBox context, which will be used in PEI phase in S3 boot path later.
@param[in] ImageHandle Image handle of this driver.
@param[in] SystemTable A Pointer to the EFI System Table.
@retval EFI_SUCEESS
@return Others Some error occurs.
**/
EFI_STATUS
EFIAPI
SmmLockBoxTraditionalConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
return SmmLockBoxMmConstructor ();
}
/**
Destructor for SmmLockBox library.
This is used to uninstall SmmLockBoxCommunication configuration table
if it has been installed in Constructor.
@param[in] ImageHandle Image handle of this driver.
@param[in] SystemTable A Pointer to the EFI System Table.
@retval EFI_SUCEESS The destructor always returns EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
SmmLockBoxTraditionalDestructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
return SmmLockBoxMmDestructor ();
}

View File

@ -167,6 +167,7 @@
MemoryAllocationLib|MdeModulePkg/Library/BaseMemoryAllocationLibNull/BaseMemoryAllocationLibNull.inf MemoryAllocationLib|MdeModulePkg/Library/BaseMemoryAllocationLibNull/BaseMemoryAllocationLibNull.inf
StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.inf StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.inf
MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxStandaloneMmLib.inf
[LibraryClasses.ARM, LibraryClasses.AARCH64] [LibraryClasses.ARM, LibraryClasses.AARCH64]
ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
@ -484,6 +485,7 @@
MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf
MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxStandaloneMmLib.inf
MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf
MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.inf MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.inf
MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaArchCustomDecompressLib.inf MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaArchCustomDecompressLib.inf