From 7d4da670ea7b3be1f8c3a8d6768f59c2c8d3752a Mon Sep 17 00:00:00 2001 From: Jiaxin Wu Date: Tue, 10 Sep 2024 11:52:36 +0800 Subject: [PATCH] UefiCpuPkg: Add SmmCpuPlatformHookBeforeMmiHandler This patch is to add SmmCpuPlatformHookBeforeMmiHandler interface in SmmCpuPlatformHookLib. The new API can be used to perform the platform specific items before executing MMI Handler. For example, Intel can leverage this API to clear the pending SMI bit after all CPUs finish the sync and before the MMI handlers. If so, the the redundant SMI can be avoided after CPU exit from current SMI. Signed-off-by: Jiaxin Wu --- .../Include/Library/SmmCpuPlatformHookLib.h | 17 +++++++++++++++- .../SmmCpuPlatformHookLibNull.c | 20 ++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/UefiCpuPkg/Include/Library/SmmCpuPlatformHookLib.h b/UefiCpuPkg/Include/Library/SmmCpuPlatformHookLib.h index f9cc3f7249..149a694891 100644 --- a/UefiCpuPkg/Include/Library/SmmCpuPlatformHookLib.h +++ b/UefiCpuPkg/Include/Library/SmmCpuPlatformHookLib.h @@ -1,7 +1,7 @@ /** @file Public include file for the SMM CPU Platform Hook Library. - Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.
+ Copyright (c) 2010 - 2024, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -100,4 +100,19 @@ GetPlatformPageTableAttribute ( OUT UINTN *PageAttribute ); +/** + SMM CPU Platform Hook before executing MMI Handler. + + This function can be used to perform the platform specific items before executing MMI Handler. + + @retval EFI_SUCCESS The smm cpu platform hook before executing MMI Handler is executed successfully. + @retval EFI_UNSUPPORTED The smm cpu platform hook before executing MMI Handler is unsupported. + +**/ +EFI_STATUS +EFIAPI +SmmCpuPlatformHookBeforeMmiHandler ( + VOID + ); + #endif diff --git a/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c b/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c index 085a03e52a..b03a72d177 100644 --- a/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c +++ b/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c @@ -1,7 +1,7 @@ /** @file SMM CPU Platform Hook NULL library instance. -Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2024, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -100,3 +100,21 @@ GetPlatformPageTableAttribute ( { return EFI_UNSUPPORTED; } + +/** + SMM CPU Platform Hook before executing MMI Handler. + + This function can be used to perform the platform specific items before executing MMI Handler. + + @retval EFI_SUCCESS The smm cpu platform hook before executing MMI Handler is executed successfully. + @retval EFI_UNSUPPORTED The smm cpu platform hook before executing MMI Handler is unsupported. + +**/ +EFI_STATUS +EFIAPI +SmmCpuPlatformHookBeforeMmiHandler ( + VOID + ) +{ + return EFI_UNSUPPORTED; +}