Hi Hao, Thanks for the feedback, I will remove the EFIAPI for this patch (as well as others you noted in other patches). As per listing the driver under [Component.X64], this is because listing the driver under other section will trigger IA32 build, which needs a IA32 version of `MemLib`. I will modify “[PATCH v1 04/15] StandaloneMmPkg: StandaloneMmMemLib: Extends support for X64 architecture” accordingly to make MemLib cover IA32 architecture as well. Thanks, Kun From: devel@edk2.groups.io on behalf of Wu, Hao A Sent: Tuesday, December 22, 2020 12:36:03 AM To: Kun Qin ; devel@edk2.groups.io Cc: Wang, Jian J ; Bi, Dandan ; Liming Gao ; Yao, Jiewen Subject: Re: [edk2-devel] [PATCH v1 07/15] MdeModulePkg: FirmwarePerformanceDataTable: Added StandaloneMm support > -----Original Message----- > From: Kun Qin > Sent: Saturday, December 19, 2020 2:50 AM > To: devel@edk2.groups.io > Cc: Wang, Jian J ; Wu, Hao A ; > Bi, Dandan ; Liming Gao > Subject: [PATCH v1 07/15] MdeModulePkg: FirmwarePerformanceDataTable: > Added StandaloneMm support > > This change added support of FPDT driver under StandaloneMm. It replaces > SMM version ReportStatusCode protocol with MM version. This patch also > abstracts standalone and traditional MM interfaces into separate files to > support each corresponding function prototypes and implementations. Could you help to remove the 'EFIAPI' for functions: FirmwarePerformanceCommonEntryPoint() IsBufferOutsideMmValid() I found that they are internal functions. Another question I have is that is there any special consideration to list FirmwarePerformanceStandaloneMm.inf under the [Components.X64] section in the DSC file? Best Regards, Hao Wu > > Cc: Jian J Wang > Cc: Hao A Wu > Cc: Dandan Bi > Cc: Liming Gao > > Signed-off-by: Kun Qin > --- > > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/{Firm > warePerformanceSmm.c => FirmwarePerformanceCommon.c} | 72 > ++++++++++---------- > > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceStandaloneMm.c | 62 > +++++++++++++++++ > > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceTraditional.c | 62 +++++++++++++++++ > MdeModulePkg/MdeModulePkg.dsc > | 2 + > > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceCommon.h | 55 +++++++++++++++ > > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceSmm.inf | 11 +-- > > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/{Firm > warePerformanceSmm.inf => FirmwarePerformanceStandaloneMm.inf} | 31 > ++++----- > 7 files changed, 237 insertions(+), 58 deletions(-) > > diff --git > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceSmm.c > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceCommon.c > similarity index 77% > rename from > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceSmm.c > rename to > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceCommon.c > index d6c6e7693e4d..c2aa9455f9c4 100644 > --- > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceSmm.c > +++ > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwa > +++ rePerformanceCommon.c > @@ -1,11 +1,11 @@ > /** @file > - This module collects performance data for SMM driver boot records and S3 > Suspend Performance Record. > + This module collects performance data for MM driver boot records and S3 > Suspend Performance Record. > > This module registers report status code listener to collect performance > data > - for SMM driver boot records and S3 Suspend Performance Record. > + for MM driver boot records and S3 Suspend Performance Record. > > Caution: This module requires additional review when modified. > - This driver will have external input - communicate buffer in SMM mode. > + This driver will have external input - communicate buffer in MM mode. > This external input must be validated carefully to avoid security issue like > buffer overflow, integer overflow. > > @@ -16,13 +16,13 @@ > > **/ > > -#include > +#include > > -#include > +#include > > #include > > -#include > +#include > #include > #include > #include > @@ -30,23 +30,22 @@ > #include > #include > #include -#include > > #include -#include > +#include "FirmwarePerformanceCommon.h" > > -SMM_BOOT_PERFORMANCE_TABLE *mSmmBootPerformanceTable = > NULL; > +SMM_BOOT_PERFORMANCE_TABLE *mMmBootPerformanceTable = > NULL; > > -EFI_SMM_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol = NULL; > +EFI_MM_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol = NULL; > UINT64 mSuspendStartTime = 0; > BOOLEAN mS3SuspendLockBoxSaved = FALSE; > UINT32 mBootRecordSize = 0; > UINT8 *mBootRecordBuffer = NULL; > > -SPIN_LOCK mSmmFpdtLock; > -BOOLEAN mSmramIsOutOfResource = FALSE; > +SPIN_LOCK mMmFpdtLock; > +BOOLEAN mMmramIsOutOfResource = FALSE; > > /** > - Report status code listener for SMM. This is used to record the > performance > + Report status code listener for MM. This is used to record the > + performance > data for S3 Suspend Start and S3 Suspend End in FPDT. > > @param[in] CodeType Indicates the type of status code being > reported. > @@ -66,7 +65,7 @@ BOOLEAN mSmramIsOutOfResource = FALSE; > **/ > EFI_STATUS > EFIAPI > -FpdtStatusCodeListenerSmm ( > +FpdtStatusCodeListenerMm ( > IN EFI_STATUS_CODE_TYPE CodeType, > IN EFI_STATUS_CODE_VALUE Value, > IN UINT32 Instance, > @@ -89,19 +88,19 @@ FpdtStatusCodeListenerSmm ( > // Collect one or more Boot records in boot time > // > if (Data != NULL && CompareGuid (&Data->Type, > &gEdkiiFpdtExtendedFirmwarePerformanceGuid)) { > - AcquireSpinLock (&mSmmFpdtLock); > + AcquireSpinLock (&mMmFpdtLock); > // > // Get the boot performance data. > // > - CopyMem (&mSmmBootPerformanceTable, Data + 1, Data->Size); > - mBootRecordBuffer = ((UINT8 *) (mSmmBootPerformanceTable)) + > sizeof (SMM_BOOT_PERFORMANCE_TABLE); > + CopyMem (&mMmBootPerformanceTable, Data + 1, Data->Size); > + mBootRecordBuffer = ((UINT8 *) (mMmBootPerformanceTable)) + sizeof > + (SMM_BOOT_PERFORMANCE_TABLE); > > - ReleaseSpinLock (&mSmmFpdtLock); > + ReleaseSpinLock (&mMmFpdtLock); > return EFI_SUCCESS; > } > > if (Data != NULL && CompareGuid (&Data->Type, > &gEfiFirmwarePerformanceGuid)) { > - DEBUG ((DEBUG_ERROR, "FpdtStatusCodeListenerSmm: Performance > data reported through gEfiFirmwarePerformanceGuid will not be collected > by FirmwarePerformanceDataTableSmm\n")); > + DEBUG ((DEBUG_ERROR, "FpdtStatusCodeListenerMm: Performance > data > + reported through gEfiFirmwarePerformanceGuid will not be collected by > + FirmwarePerformanceDataTableMm\n")); > return EFI_UNSUPPORTED; > } > > @@ -157,7 +156,7 @@ FpdtStatusCodeListenerSmm ( > /** > Communication service SMI Handler entry. > > - This SMI handler provides services for report SMM boot records. > + This SMI handler provides services for report MM boot records. > > Caution: This function may receive untrusted input. > Communicate buffer and buffer size are external input, so this function will > do basic validation. > @@ -166,7 +165,7 @@ FpdtStatusCodeListenerSmm ( > @param[in] RegisterContext Points to an optional handler context which > was specified when the > handler was registered. > @param[in, out] CommBuffer A pointer to a collection of data in memory > that will > - be conveyed from a non-SMM environment into an SMM > environment. > + be conveyed from a non-MM environment into an MM > environment. > @param[in, out] CommBufferSize The size of the CommBuffer. > > @retval EFI_SUCCESS The interrupt was handled and quiesced. > No other handlers > @@ -207,8 +206,8 @@ FpdtSmiHandler ( > return EFI_SUCCESS; > } > > - if (!SmmIsBufferOutsideSmmValid ((UINTN)CommBuffer, > TempCommBufferSize)) { > - DEBUG ((EFI_D_ERROR, "FpdtSmiHandler: SMM communication data > buffer in SMRAM or overflow!\n")); > + if (!IsBufferOutsideMmValid ((UINTN)CommBuffer, > TempCommBufferSize)) { > + DEBUG ((DEBUG_ERROR, "FpdtSmiHandler: MM communication data > buffer > + in MMRAM or overflow!\n")); > return EFI_SUCCESS; > } > > @@ -218,8 +217,8 @@ FpdtSmiHandler ( > > switch (SmmCommData->Function) { > case SMM_FPDT_FUNCTION_GET_BOOT_RECORD_SIZE : > - if (mSmmBootPerformanceTable != NULL) { > - mBootRecordSize = mSmmBootPerformanceTable->Header.Length - > sizeof (SMM_BOOT_PERFORMANCE_TABLE); > + if (mMmBootPerformanceTable != NULL) { > + mBootRecordSize = mMmBootPerformanceTable->Header.Length - > + sizeof (SMM_BOOT_PERFORMANCE_TABLE); > } > SmmCommData->BootRecordSize = mBootRecordSize; > break; > @@ -244,8 +243,8 @@ FpdtSmiHandler ( > BootRecordSize = mBootRecordSize - BootRecordOffset; > } > SmmCommData->BootRecordSize = BootRecordSize; > - if (!SmmIsBufferOutsideSmmValid ((UINTN)BootRecordData, > BootRecordSize)) { > - DEBUG ((EFI_D_ERROR, "FpdtSmiHandler: SMM Data buffer in SMRAM > or overflow!\n")); > + if (!IsBufferOutsideMmValid ((UINTN)BootRecordData, BootRecordSize)) > { > + DEBUG ((DEBUG_ERROR, "FpdtSmiHandler: MM Data buffer in > MMRAM > + or overflow!\n")); > Status = EFI_ACCESS_DENIED; > break; > } > @@ -267,7 +266,7 @@ FpdtSmiHandler ( > } > > /** > - The module Entry Point of the Firmware Performance Data Table SMM > driver. > + The module Entry Point of the Firmware Performance Data Table MM > driver. > > @param[in] ImageHandle The firmware allocated handle for the EFI > image. > @param[in] SystemTable A pointer to the EFI System Table. > @@ -278,9 +277,8 @@ FpdtSmiHandler ( > **/ > EFI_STATUS > EFIAPI > -FirmwarePerformanceSmmEntryPoint ( > - IN EFI_HANDLE ImageHandle, > - IN EFI_SYSTEM_TABLE *SystemTable > +FirmwarePerformanceCommonEntryPoint ( > + VOID > ) > { > EFI_STATUS Status; > @@ -289,13 +287,13 @@ FirmwarePerformanceSmmEntryPoint ( > // > // Initialize spin lock > // > - InitializeSpinLock (&mSmmFpdtLock); > + InitializeSpinLock (&mMmFpdtLock); > > // > - // Get SMM Report Status Code Handler Protocol. > + // Get MM Report Status Code Handler Protocol. > // > - Status = gSmst->SmmLocateProtocol ( > - &gEfiSmmRscHandlerProtocolGuid, > + Status = gMmst->MmLocateProtocol ( > + &gEfiMmRscHandlerProtocolGuid, > NULL, > (VOID **) &mRscHandlerProtocol > ); > @@ -304,14 +302,14 @@ FirmwarePerformanceSmmEntryPoint ( > // > // Register report status code listener for BootRecords and S3 Suspend > Start and End. > // > - Status = mRscHandlerProtocol->Register (FpdtStatusCodeListenerSmm); > + Status = mRscHandlerProtocol->Register (FpdtStatusCodeListenerMm); > ASSERT_EFI_ERROR (Status); > > // > // Register SMI handler. > // > Handle = NULL; > - Status = gSmst->SmiHandlerRegister (FpdtSmiHandler, > &gEfiFirmwarePerformanceGuid, &Handle); > + Status = gMmst->MmiHandlerRegister (FpdtSmiHandler, > + &gEfiFirmwarePerformanceGuid, &Handle); > ASSERT_EFI_ERROR (Status); > > return Status; > diff --git > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceStandaloneMm.c > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceStandaloneMm.c > new file mode 100644 > index 000000000000..2c4f40eceaea > --- /dev/null > +++ > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwa > +++ rePerformanceStandaloneMm.c > @@ -0,0 +1,62 @@ > +/** @file > + This module collects performance data for MM driver boot records and S3 > Suspend Performance Record. > + > + This module registers report status code listener to collect > + performance data for MM driver boot records and S3 Suspend > Performance Record. > + > + Caution: This module requires additional review when modified. > + This driver will have external input - communicate buffer in MM mode. > + This external input must be validated carefully to avoid security > + issue like buffer overflow, integer overflow. > + > + FpdtSmiHandler() will receive untrusted input and do basic validation. > + > + Copyright (c) 2011 - 2018, Intel Corporation. All rights > + reserved.
Copyright (c), Microsoft Corporation. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > + > +#include #include > +"FirmwarePerformanceCommon.h" > + > +/** > + This function is an abstraction layer for implementation specific Mm buffer > validation routine. > + > + @param Buffer The buffer start address to be checked. > + @param Length The buffer length to be checked. > + > + @retval TRUE This buffer is valid per processor architecture and not > overlap with SMRAM. > + @retval FALSE This buffer is not valid per processor architecture or overlap > with SMRAM. > +**/ > +BOOLEAN > +EFIAPI > +IsBufferOutsideMmValid ( > + IN EFI_PHYSICAL_ADDRESS Buffer, > + IN UINT64 Length > + ) > +{ > + return MmIsBufferOutsideMmValid (Buffer, Length); } > + > +/** > + The module Entry Point of the Firmware Performance Data Table MM > driver. > + > + @param[in] ImageHandle The firmware allocated handle for the EFI > image. > + @param[in] SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval Other Some error occurs when executing this entry point. > + > +**/ > +EFI_STATUS > +EFIAPI > +FirmwarePerformanceStandaloneMmEntryPoint ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_MM_SYSTEM_TABLE *SystemTable > + ) > +{ > + return FirmwarePerformanceCommonEntryPoint (); } > diff --git > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceTraditional.c > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceTraditional.c > new file mode 100644 > index 000000000000..507aabcb4e88 > --- /dev/null > +++ > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwa > +++ rePerformanceTraditional.c > @@ -0,0 +1,62 @@ > +/** @file > + This module collects performance data for MM driver boot records and S3 > Suspend Performance Record. > + > + This module registers report status code listener to collect > + performance data for MM driver boot records and S3 Suspend > Performance Record. > + > + Caution: This module requires additional review when modified. > + This driver will have external input - communicate buffer in MM mode. > + This external input must be validated carefully to avoid security > + issue like buffer overflow, integer overflow. > + > + FpdtSmiHandler() will receive untrusted input and do basic validation. > + > + Copyright (c) 2011 - 2018, Intel Corporation. All rights > + reserved.
Copyright (c), Microsoft Corporation. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > + > +#include > +#include "FirmwarePerformanceCommon.h" > + > +/** > + This function is an abstraction layer for implementation specific Mm buffer > validation routine. > + > + @param Buffer The buffer start address to be checked. > + @param Length The buffer length to be checked. > + > + @retval TRUE This buffer is valid per processor architecture and not > overlap with SMRAM. > + @retval FALSE This buffer is not valid per processor architecture or overlap > with SMRAM. > +**/ > +BOOLEAN > +EFIAPI > +IsBufferOutsideMmValid ( > + IN EFI_PHYSICAL_ADDRESS Buffer, > + IN UINT64 Length > + ) > +{ > + return SmmIsBufferOutsideSmmValid (Buffer, Length); } > + > +/** > + The module Entry Point of the Firmware Performance Data Table MM > driver. > + > + @param[in] ImageHandle The firmware allocated handle for the EFI > image. > + @param[in] SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval Other Some error occurs when executing this entry point. > + > +**/ > +EFI_STATUS > +EFIAPI > +FirmwarePerformanceSmmEntryPoint ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + return FirmwarePerformanceCommonEntryPoint (); } > diff --git a/MdeModulePkg/MdeModulePkg.dsc > b/MdeModulePkg/MdeModulePkg.dsc index 05bf5fe08094..dc85d108d958 > 100644 > --- a/MdeModulePkg/MdeModulePkg.dsc > +++ b/MdeModulePkg/MdeModulePkg.dsc > @@ -168,6 +168,7 @@ [LibraryClasses.common.MM_STANDALONE] > > StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntry > Point/StandaloneMmDriverEntryPoint.inf > > MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/Stan > daloneMmServicesTableLib.inf > > LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxStandalo > neMmLib.inf > + > + > MemLib|StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMm > MemLib.i > + nf > > [LibraryClasses.ARM, LibraryClasses.AARCH64] > ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf > @@ -501,6 +502,7 @@ [Components.IA32, Components.X64] > > [Components.X64] > MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf > + > + > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePe > + rformanceStandaloneMm.inf > > [BuildOptions] > > diff --git > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceCommon.h > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceCommon.h > new file mode 100644 > index 000000000000..ba01e28f2493 > --- /dev/null > +++ > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwa > +++ rePerformanceCommon.h > @@ -0,0 +1,55 @@ > +/** @file > + This module collects performance data for SMM driver boot records and S3 > Suspend Performance Record. > + > + This module registers report status code listener to collect > + performance data for SMM driver boot records and S3 Suspend > Performance Record. > + > + Caution: This module requires additional review when modified. > + This driver will have external input - communicate buffer in SMM mode. > + This external input must be validated carefully to avoid security > + issue like buffer overflow, integer overflow. > + > + FpdtSmiHandler() will receive untrusted input and do basic validation. > + > + Copyright (c) 2011 - 2018, Intel Corporation. All rights > + reserved.
Copyright (c), Microsoft Corporation. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef _FW_PERF_COMMON_H_ > +#define _FW_PERF_COMMON_H_ > + > +/** > + This function is an abstraction layer for implementation specific Mm buffer > validation routine. > + > + @param Buffer The buffer start address to be checked. > + @param Length The buffer length to be checked. > + > + @retval TRUE This buffer is valid per processor architecture and not > overlap with SMRAM. > + @retval FALSE This buffer is not valid per processor architecture or overlap > with SMRAM. > +**/ > +BOOLEAN > +EFIAPI > +IsBufferOutsideMmValid ( > + IN EFI_PHYSICAL_ADDRESS Buffer, > + IN UINT64 Length > + ); > + > +/** > + The module Entry Point of the Firmware Performance Data Table MM > driver. > + > + @param[in] ImageHandle The firmware allocated handle for the EFI > image. > + @param[in] SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval Other Some error occurs when executing this entry point. > + > +**/ > +EFI_STATUS > +EFIAPI > +FirmwarePerformanceCommonEntryPoint ( > + VOID > + ); > + > +#endif // _FW_PERF_COMMON_H_ > diff --git > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceSmm.inf > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceSmm.inf > index 618cbd56ca59..b7194bd899dd 100644 > --- > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceSmm.inf > +++ > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwa > +++ rePerformanceSmm.inf > @@ -26,7 +26,9 @@ [Defines] > # > > [Sources] > - FirmwarePerformanceSmm.c > + FirmwarePerformanceCommon.c > + FirmwarePerformanceCommon.h > + FirmwarePerformanceTraditional.c > > [Packages] > MdePkg/MdePkg.dec > @@ -34,7 +36,7 @@ [Packages] > > [LibraryClasses] > UefiDriverEntryPoint > - SmmServicesTableLib > + MmServicesTableLib > BaseLib > DebugLib > TimerLib > @@ -42,12 +44,11 @@ [LibraryClasses] > PcdLib > BaseMemoryLib > MemoryAllocationLib > - UefiBootServicesTableLib > SynchronizationLib > SmmMemLib > > [Protocols] > - gEfiSmmRscHandlerProtocolGuid ## CONSUMES > + gEfiMmRscHandlerProtocolGuid ## CONSUMES > > [Guids] > ## SOMETIMES_PRODUCES ## UNDEFINED # SaveLockBox > @@ -61,7 +62,7 @@ [Pcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeS3SuspendEnd ## > CONSUMES > > [Depex] > - gEfiSmmRscHandlerProtocolGuid > + gEfiMmRscHandlerProtocolGuid > > [UserExtensions.TianoCore."ExtraFiles"] > FirmwarePerformanceSmmExtra.uni > diff --git > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceSmm.inf > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceStandaloneMm.inf > similarity index 65% > copy from > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceSmm.inf > copy to > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Firm > warePerformanceStandaloneMm.inf > index 618cbd56ca59..e6aad88be0ef 100644 > --- > a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwarePerformanceSmm.inf > +++ > b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/Fir > mwa > +++ rePerformanceStandaloneMm.inf > @@ -5,19 +5,19 @@ > # for SMM boot performance records and S3 Suspend Performance Record. > # > # Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
> +# Copyright (c) Microsoft Corporation. > # SPDX-License-Identifier: BSD-2-Clause-Patent # ## > > [Defines] > INF_VERSION = 0x00010005 > - BASE_NAME = FirmwarePerformanceSmm > - MODULE_UNI_FILE = FirmwarePerformanceSmm.uni > - FILE_GUID = 044310AB-77FD-402a-AF1A-87D4120E7329 > - MODULE_TYPE = DXE_SMM_DRIVER > + BASE_NAME = FirmwarePerformanceStandaloneMm > + FILE_GUID = 827AC29D-E52D-4B1A-874A-C6577E0699CF > + MODULE_TYPE = MM_STANDALONE > VERSION_STRING = 1.0 > - PI_SPECIFICATION_VERSION = 0x0001000A > - ENTRY_POINT = FirmwarePerformanceSmmEntryPoint > + PI_SPECIFICATION_VERSION = 0x00010032 > + ENTRY_POINT = FirmwarePerformanceStandaloneMmEntryPoint > > # > # The following information is for reference only and not required by the > build tools. > @@ -26,15 +26,18 @@ [Defines] > # > > [Sources] > - FirmwarePerformanceSmm.c > + FirmwarePerformanceCommon.c > + FirmwarePerformanceCommon.h > + FirmwarePerformanceStandaloneMm.c > > [Packages] > MdePkg/MdePkg.dec > MdeModulePkg/MdeModulePkg.dec > + StandaloneMmPkg/StandaloneMmPkg.dec > > [LibraryClasses] > - UefiDriverEntryPoint > - SmmServicesTableLib > + StandaloneMmDriverEntryPoint > + MmServicesTableLib > BaseLib > DebugLib > TimerLib > @@ -42,12 +45,11 @@ [LibraryClasses] > PcdLib > BaseMemoryLib > MemoryAllocationLib > - UefiBootServicesTableLib > SynchronizationLib > - SmmMemLib > + MemLib > > [Protocols] > - gEfiSmmRscHandlerProtocolGuid ## CONSUMES > + gEfiMmRscHandlerProtocolGuid ## CONSUMES > > [Guids] > ## SOMETIMES_PRODUCES ## UNDEFINED # SaveLockBox > @@ -61,7 +63,4 @@ [Pcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeS3SuspendEnd ## > CONSUMES > > [Depex] > - gEfiSmmRscHandlerProtocolGuid > - > -[UserExtensions.TianoCore."ExtraFiles"] > - FirmwarePerformanceSmmExtra.uni > + gEfiMmRscHandlerProtocolGuid > -- > 2.28.0.windows.1