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