From 9d9bbb6f5f44cfccaf8a7aadf89cbe22edea58e5 Mon Sep 17 00:00:00 2001 From: Jiaxin Wu Date: Tue, 25 Jun 2024 01:00:26 +0800 Subject: [PATCH] UefiCpuPkg/PiSmmCpuDxeSmm: Move GetSmiCommandPort into DxeSmm Code MM can not call the EfiLocateFirstAcpiTable(), so, move the function into DxeSmm Code. This will make InitSmmProfileCallBack() to be common function for both SMM and MM. Signed-off-by: Jiaxin Wu Cc: Ray Ni Cc: Rahul Kumar Cc: Gerd Hoffmann Cc: Star Zeng Cc: Dun Tan Cc: Hongbin1 Zhang Cc: Wei6 Xu Cc: Yuanhao Xie --- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuCommon.h | 2 -- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 31 +++++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 25 --------------- UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h | 4 +++ .../PiSmmCpuDxeSmm/SmmProfileInternal.h | 2 -- 5 files changed, 35 insertions(+), 29 deletions(-) diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuCommon.h b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuCommon.h index e662f2dc45..4b0d5fb08b 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuCommon.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuCommon.h @@ -40,8 +40,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include #include -#include -#include #include #include #include diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c index 22b0de13c7..8995b54226 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c @@ -10,6 +10,27 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "PiSmmCpuCommon.h" +#include + +/** + To get system port address of the SMI Command Port in FADT table. + +**/ +VOID +GetSmiCommandPort ( + VOID + ) +{ + EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt; + + Fadt = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *)EfiLocateFirstAcpiTable ( + EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE + ); + ASSERT (Fadt != NULL); + + mSmiCommandPort = Fadt->SmiCmd; + DEBUG ((DEBUG_INFO, "mSmiCommandPort = %x\n", mSmiCommandPort)); +} /** SMM Ready To Lock event notification handler. @@ -36,6 +57,16 @@ SmmReadyToLockEventNotify ( // GetUefiMemoryMap (); + // + // Skip SMM profile initialization if feature is disabled + // + if (FeaturePcdGet (PcdCpuSmmProfileEnable)) { + // + // Get Software SMI from FADT + // + GetSmiCommandPort (); + } + // // Set SMM ready to lock flag and return // diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c index a6f7697c63..f38e8e8e40 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c @@ -678,26 +678,6 @@ InitPaging ( PERF_FUNCTION_END (); } -/** - To get system port address of the SMI Command Port in FADT table. - -**/ -VOID -GetSmiCommandPort ( - VOID - ) -{ - EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt; - - Fadt = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *)EfiLocateFirstAcpiTable ( - EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE - ); - ASSERT (Fadt != NULL); - - mSmiCommandPort = Fadt->SmiCmd; - DEBUG ((DEBUG_INFO, "mSmiCommandPort = %x\n", mSmiCommandPort)); -} - /** Updates page table to make some memory ranges (like system memory) absent and make some memory ranges (like MMIO) present and execute disable. It also @@ -757,11 +737,6 @@ InitSmmProfileCallBack ( &mSmmProfileBase ); - // - // Get Software SMI from FADT - // - GetSmiCommandPort (); - // // Initialize protected memory range for patching page table later. // diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h index 1a82ac05ce..7a0f006d77 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h @@ -130,5 +130,9 @@ extern BOOLEAN mXdEnabled; // The flag indicates if #DB will be setup in #PF handler. // extern BOOLEAN mSetupDebugTrap; +// +// SMI command port. +// +extern UINT32 mSmiCommandPort; #endif // _SMM_PROFILE_H_ diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h index 42a6effe52..2edfd7a8b2 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h @@ -11,8 +11,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define _SMM_PROFILE_INTERNAL_H_ #include -#include -#include #include #include