Hi Abdul,
Because SmmCpuFeatureLib is expected to only be used by X86 vendors, we can
just have SmmCpuFeaturesLib under the root of module directory and rename it to
AmdSmmCpuFeaturesLib.c
Thanks
Abner
On Tue, Dec 6, 2022 at 09:23 PM, Abdul Lateef Attar wrote:
>
> From: Abdul Lateef Attar
>
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4182
>
> Adds initial defination for AMD's SmmCpuFeaturesLib
> library implementation.
> All function's body either empty or just returns
> value. Its initial skeleton of library implementation.
>
> Cc: Paul Grimes
> Cc: Garrett Kirkendall
> Cc: Abner Chang
> Cc: Eric Dong
> Cc: Ray Ni
> Cc: Rahul Kumar
> Signed-off-by: Abdul Lateef Attar
> ---
> UefiCpuPkg/UefiCpuPkg.dsc | 9 +
> .../AmdSmmCpuFeaturesLib.inf | 37 ++
> .../SmmCpuFeaturesLib/Amd/SmmCpuFeaturesLib.c | 357 ++
> 3 files changed, 403 insertions(+)
> create mode 100644
> UefiCpuPkg/Library/SmmCpuFeaturesLib/AmdSmmCpuFeaturesLib.inf
> create mode 100644
> UefiCpuPkg/Library/SmmCpuFeaturesLib/Amd/SmmCpuFeaturesLib.c
>
> diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc
> index 67b0ce46e455..8aeaf992af9b 100644
> --- a/UefiCpuPkg/UefiCpuPkg.dsc
> +++ b/UefiCpuPkg/UefiCpuPkg.dsc
> @@ -2,6 +2,7 @@
> # UefiCpuPkg Package
> #
> # Copyright (c) 2007 - 2022, Intel Corporation. All rights reserved.
> +# Copyright (C) 2022 Advanced Micro Devices, Inc. All rights
> reserved.
> #
> # SPDX-License-Identifier: BSD-2-Clause-Patent
> #
> @@ -160,6 +161,7 @@ [Components.IA32, Components.X64]
> UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.inf
> UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.inf
> UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
>
> + UefiCpuPkg/Library/SmmCpuFeaturesLib/AmdSmmCpuFeaturesLib.inf
> UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
> UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLibStm.inf
> UefiCpuPkg/Library/SmmCpuFeaturesLib/StandaloneMmCpuFeaturesLib.inf
> @@ -176,6 +178,13 @@ [Components.IA32, Components.X64]
>
> SmmCpuFeaturesLib|UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLibStm.inf
>
> }
> + UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf {
> +
> + FILE_GUID = B7242C74-BD21-49EE-84B4-07162E8C080D
> +
> +
> SmmCpuFeaturesLib|UefiCpuPkg/Library/SmmCpuFeaturesLib/AmdSmmCpuFeaturesLib.inf
>
> +
> SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
>
> + }
> UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
> UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf
> UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf
> diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/AmdSmmCpuFeaturesLib.inf
> b/UefiCpuPkg/Library/SmmCpuFeaturesLib/AmdSmmCpuFeaturesLib.inf
> new file mode 100644
> index ..08ac0262022f
> --- /dev/null
> +++ b/UefiCpuPkg/Library/SmmCpuFeaturesLib/AmdSmmCpuFeaturesLib.inf
> @@ -0,0 +1,37 @@
> +## @file
> +# The CPU specific programming for PiSmmCpuDxeSmm module.
> +#
> +# Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
> +# Copyright (C) 2022 Advanced Micro Devices, Inc. All rights
> reserved.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010005
> + BASE_NAME = SmmCpuFeaturesLib
> + MODULE_UNI_FILE = SmmCpuFeaturesLib.uni
> + FILE_GUID = 5849E964-78EC-428E-8CBD-848A7E359134
> + MODULE_TYPE = DXE_SMM_DRIVER
> + VERSION_STRING = 1.0
> + LIBRARY_CLASS = SmmCpuFeaturesLib
> + CONSTRUCTOR = SmmCpuFeaturesLibConstructor
> +
> +[Sources]
> + SmmCpuFeaturesLib.c
> + SmmCpuFeaturesLibCommon.c
> + Amd/SmmCpuFeaturesLib.c
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + UefiCpuPkg/UefiCpuPkg.dec
> +
> +[LibraryClasses]
> + BaseLib
> + PcdLib
> + MemoryAllocationLib
> + DebugLib
> +
> +[FeaturePcd]
> + gUefiCpuPkgTokenSpaceGuid.PcdSmrrEnable ## CONSUMES
> + gUefiCpuPkgTokenSpaceGuid.PcdSmmFeatureControlEnable ## CONSUMES
> diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/Amd/SmmCpuFeaturesLib.c
> b/UefiCpuPkg/Library/SmmCpuFeaturesLib/Amd/SmmCpuFeaturesLib.c
> new file mode 100644
> index ..dc3fed0302d2
> --- /dev/null
> +++ b/UefiCpuPkg/Library/SmmCpuFeaturesLib/Amd/SmmCpuFeaturesLib.c
> @@ -0,0 +1,357 @@
> +/** @file
> +Implementation specific to the SmmCpuFeatureLib library instance
> +for AMD based platforms.
> +
> +Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.
> +Copyright (c) Microsoft Corporation.
> +Copyright (C) 2022 Advanced Micro Devices, Inc. All rights reserved.
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include
> +#include
> +
> +/**
> + Read an SMM Save State register on the target processor. If this
> function
> + returns EFI_UNSUPPORTED, then the caller is responsible for reading the
> + SMM Save Sate register.
> +
> + @param[in] CpuIndex The index of the CPU to read the SMM Save State. The
>
> + value must be between 0 and the NumberOfCpus