mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 07:34:06 +02:00
MdeModulePkg/SmmCorePerformanceLib: Disable perf-logging at runtime
Because SMM perf-logging is migrated to non-SMRAM at ReadyToBoot by DxeCorePerformanceLib, the perf-logging after ExitBS is useless and impact the SMI latency at runtime. Hence the SmmCorePerformanceLib is updated to disable perf-logging after ExitBS. Signed-off-by: Ray Ni <ray.ni@intel.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Jian J Wang <jian.j.wang@intel.com> Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
This commit is contained in:
parent
92759eeb0c
commit
2d3974a351
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
SmmPerformanceHandlerEx(), SmmPerformanceHandler() will receive untrusted input and do basic validation.
|
SmmPerformanceHandlerEx(), SmmPerformanceHandler() will receive untrusted input and do basic validation.
|
||||||
|
|
||||||
Copyright (c) 2011 - 2021, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2011 - 2023, Intel Corporation. All rights reserved.<BR>
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
**/
|
**/
|
||||||
@ -48,6 +48,7 @@ SPIN_LOCK mSmmFpdtLock;
|
|||||||
PERFORMANCE_PROPERTY mPerformanceProperty;
|
PERFORMANCE_PROPERTY mPerformanceProperty;
|
||||||
UINT32 mCachedLength = 0;
|
UINT32 mCachedLength = 0;
|
||||||
UINT32 mBootRecordSize = 0;
|
UINT32 mBootRecordSize = 0;
|
||||||
|
BOOLEAN mPerformanceMeasurementEnabled;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Interfaces for SMM PerformanceMeasurement Protocol.
|
// Interfaces for SMM PerformanceMeasurement Protocol.
|
||||||
@ -929,6 +930,35 @@ FpdtSmiHandler (
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This is the Event call back function is triggered in SMM to notify the Library
|
||||||
|
the system is entering runtime phase.
|
||||||
|
|
||||||
|
@param[in] Protocol Points to the protocol's unique identifier
|
||||||
|
@param[in] Interface Points to the interface instance
|
||||||
|
@param[in] Handle The handle on which the interface was installed
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS SmmAtRuntimeCallBack runs successfully
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
SmmCorePerformanceLibExitBootServicesCallback (
|
||||||
|
IN CONST EFI_GUID *Protocol,
|
||||||
|
IN VOID *Interface,
|
||||||
|
IN EFI_HANDLE Handle
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Disable performance measurement after ExitBootServices because
|
||||||
|
// 1. Performance measurement might impact SMI latency at runtime;
|
||||||
|
// 2. Performance log is copied to non SMRAM at ReadyToBoot so runtime performance
|
||||||
|
// log is not useful.
|
||||||
|
//
|
||||||
|
mPerformanceMeasurementEnabled = FALSE;
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
SmmBase2 protocol notify callback function, when SMST and SMM memory service get initialized
|
SmmBase2 protocol notify callback function, when SMST and SMM memory service get initialized
|
||||||
this function is callbacked to initialize the Smm Performance Lib
|
this function is callbacked to initialize the Smm Performance Lib
|
||||||
@ -948,6 +978,7 @@ InitializeSmmCorePerformanceLib (
|
|||||||
EFI_HANDLE SmiHandle;
|
EFI_HANDLE SmiHandle;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
PERFORMANCE_PROPERTY *PerformanceProperty;
|
PERFORMANCE_PROPERTY *PerformanceProperty;
|
||||||
|
VOID *Registration;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize spin lock
|
// Initialize spin lock
|
||||||
@ -987,6 +1018,16 @@ InitializeSmmCorePerformanceLib (
|
|||||||
Status = gBS->InstallConfigurationTable (&gPerformanceProtocolGuid, &mPerformanceProperty);
|
Status = gBS->InstallConfigurationTable (&gPerformanceProtocolGuid, &mPerformanceProperty);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Register callback function for ExitBootServices event.
|
||||||
|
//
|
||||||
|
Status = gSmst->SmmRegisterProtocolNotify (
|
||||||
|
&gEdkiiSmmExitBootServicesProtocolGuid,
|
||||||
|
SmmCorePerformanceLibExitBootServicesCallback,
|
||||||
|
&Registration
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1011,6 +1052,8 @@ SmmCorePerformanceLibConstructor (
|
|||||||
EFI_EVENT Event;
|
EFI_EVENT Event;
|
||||||
VOID *Registration;
|
VOID *Registration;
|
||||||
|
|
||||||
|
mPerformanceMeasurementEnabled = (BOOLEAN)((PcdGet8 (PcdPerformanceLibraryPropertyMask) & PERFORMANCE_LIBRARY_PROPERTY_MEASUREMENT_ENABLED) != 0);
|
||||||
|
|
||||||
if (!PerformanceMeasurementEnabled ()) {
|
if (!PerformanceMeasurementEnabled ()) {
|
||||||
//
|
//
|
||||||
// Do not initialize performance infrastructure if not required.
|
// Do not initialize performance infrastructure if not required.
|
||||||
@ -1383,7 +1426,7 @@ PerformanceMeasurementEnabled (
|
|||||||
VOID
|
VOID
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return (BOOLEAN)((PcdGet8 (PcdPerformanceLibraryPropertyMask) & PERFORMANCE_LIBRARY_PROPERTY_MEASUREMENT_ENABLED) != 0);
|
return mPerformanceMeasurementEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# This library is mainly used by SMM Core to start performance logging to ensure that
|
# This library is mainly used by SMM Core to start performance logging to ensure that
|
||||||
# SMM Performance and PerformanceEx Protocol are installed at the very beginning of SMM phase.
|
# SMM Performance and PerformanceEx Protocol are installed at the very beginning of SMM phase.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011 - 2021, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2011 - 2023, Intel Corporation. All rights reserved.<BR>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
@ -58,6 +58,7 @@
|
|||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiSmmBase2ProtocolGuid ## CONSUMES
|
gEfiSmmBase2ProtocolGuid ## CONSUMES
|
||||||
|
gEdkiiSmmExitBootServicesProtocolGuid ## CONSUMES
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
## PRODUCES ## SystemTable
|
## PRODUCES ## SystemTable
|
||||||
|
Loading…
x
Reference in New Issue
Block a user