summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRay Ni <ray.ni@intel.com>2023-05-26 22:32:00 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-06-21 04:37:17 +0000
commite4ff8521364062303cd93f87a0d9c0bacc9ebe65 (patch)
treea58854d17d9f1b09f764592dcb9102d5549da042
parentad6c8540cc9ce06235891cb6c4c713a5c8b272fc (diff)
downloadedk2-e4ff8521364062303cd93f87a0d9c0bacc9ebe65.tar.gz
edk2-e4ff8521364062303cd93f87a0d9c0bacc9ebe65.tar.bz2
edk2-e4ff8521364062303cd93f87a0d9c0bacc9ebe65.zip
MdeModulePkg/SmmCore: Add perf-logging for time-consuming procedures
Following procedures are perf-logged: * SmmReadyToBootHandler * SmmReadyToLockHandler * SmmEndOfDxeHandler * SmmEntryPoint (It's the main routine run in BSP when SMI happens.) * SmiManage Signed-off-by: Ray Ni <ray.ni@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Jiaxin Wu <jiaxin.wu@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>
-rw-r--r--MdeModulePkg/Core/PiSmmCore/PiSmmCore.c15
-rw-r--r--MdeModulePkg/Core/PiSmmCore/Smi.c6
2 files changed, 20 insertions, 1 deletions
diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c
index 875c7c0258..68af9ab81b 100644
--- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c
+++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c
@@ -1,7 +1,7 @@
/** @file
SMM Core Main Entry Point
- Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2023, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -305,6 +305,8 @@ SmmReadyToBootHandler (
EFI_STATUS Status;
EFI_HANDLE SmmHandle;
+ PERF_CALLBACK_BEGIN (&gEfiEventReadyToBootGuid);
+
//
// Install SMM Ready To Boot protocol.
//
@@ -318,6 +320,7 @@ SmmReadyToBootHandler (
SmiHandlerUnRegister (DispatchHandle);
+ PERF_CALLBACK_END (&gEfiEventReadyToBootGuid);
return Status;
}
@@ -352,6 +355,8 @@ SmmReadyToLockHandler (
EFI_HANDLE SmmHandle;
VOID *Interface;
+ PERF_CALLBACK_BEGIN (&gEfiDxeSmmReadyToLockProtocolGuid);
+
//
// Unregister SMI Handlers that are no required after the SMM driver dispatch is stopped
//
@@ -408,6 +413,7 @@ SmmReadyToLockHandler (
SmramProfileReadyToLock ();
+ PERF_CALLBACK_END (&gEfiDxeSmmReadyToLockProtocolGuid);
return Status;
}
@@ -442,6 +448,8 @@ SmmEndOfDxeHandler (
DEBUG ((DEBUG_INFO, "SmmEndOfDxeHandler\n"));
+ PERF_CALLBACK_BEGIN (&gEfiEndOfDxeEventGroupGuid);
+
//
// Install SMM EndOfDxe protocol
//
@@ -479,6 +487,7 @@ SmmEndOfDxeHandler (
}
}
+ PERF_CALLBACK_END (&gEfiEndOfDxeEventGroupGuid);
return EFI_SUCCESS;
}
@@ -669,6 +678,8 @@ SmmEntryPoint (
VOID *CommunicationBuffer;
UINTN BufferSize;
+ PERF_FUNCTION_BEGIN ();
+
//
// Update SMST with contents of the SmmEntryContext structure
//
@@ -769,6 +780,8 @@ SmmEntryPoint (
//
gSmmCorePrivate->InSmm = FALSE;
}
+
+ PERF_FUNCTION_END ();
}
/**
diff --git a/MdeModulePkg/Core/PiSmmCore/Smi.c b/MdeModulePkg/Core/PiSmmCore/Smi.c
index 6d13969979..2985f989c3 100644
--- a/MdeModulePkg/Core/PiSmmCore/Smi.c
+++ b/MdeModulePkg/Core/PiSmmCore/Smi.c
@@ -109,6 +109,8 @@ SmiManage (
BOOLEAN SuccessReturn;
EFI_STATUS Status;
+ PERF_FUNCTION_BEGIN ();
+
Status = EFI_NOT_FOUND;
SuccessReturn = FALSE;
if (HandlerType == NULL) {
@@ -125,6 +127,7 @@ SmiManage (
//
// There is no handler registered for this interrupt source
//
+ PERF_FUNCTION_END ();
return Status;
}
}
@@ -148,6 +151,7 @@ SmiManage (
// no additional handlers will be processed and EFI_INTERRUPT_PENDING will be returned.
//
if (HandlerType != NULL) {
+ PERF_FUNCTION_END ();
return EFI_INTERRUPT_PENDING;
}
@@ -160,6 +164,7 @@ SmiManage (
// additional handlers will be processed.
//
if (HandlerType != NULL) {
+ PERF_FUNCTION_END ();
return EFI_SUCCESS;
}
@@ -194,6 +199,7 @@ SmiManage (
Status = EFI_SUCCESS;
}
+ PERF_FUNCTION_END ();
return Status;
}