[edk2-devel] [PATCH v1 1/2] UefiCpuPkg: Move StandardSignatureIsAuthenticAMD to BaseUefiCpuLib
Dong, Eric
eric.dong at intel.com
Wed Jun 17 00:30:46 UTC 2020
Reviewed-by: Eric Dong <eric.dong at intel.com>
> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of
> Kirkendall, Garrett
> Sent: Tuesday, June 16, 2020 2:30 AM
> To: devel at edk2.groups.io
> Cc: Dong, Eric <eric.dong at intel.com>; Ni, Ray <ray.ni at intel.com>; Laszlo
> Ersek <lersek at redhat.com>
> Subject: [edk2-devel] [PATCH v1 1/2] UefiCpuPkg: Move
> StandardSignatureIsAuthenticAMD to BaseUefiCpuLib
>
> Refactor StandardSignatureIsAuthenticAMD into BaseUefiCpuLib from
> separate copies in BaseXApicLib, BaseXApicX2ApicLib, and MpInitLib.
> This allows for future use of StandarSignatureIsAuthinticAMD without
> creating more instances in other modules.
>
> This function allows IA32/X64 code to determine if it is running on an AMD
> brand processor.
>
> UefiCpuLib is already included directly or indirectly in all modified modules.
> Complete move is made in this change.
>
> Cc: Eric Dong <eric.dong at intel.com>
> Cc: Ray Ni <ray.ni at intel.com>
> Cc: Laszlo Ersek <lersek at redhat.com>
> Signed-off-by: Garrett Kirkendall <garrett.kirkendall at amd.com>
> ---
> UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf | 7 ++++
> UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf | 2 ++
> UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf | 2 ++
> UefiCpuPkg/Include/Library/UefiCpuLib.h | 14 ++++++++
> UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c | 38
> ++++++++++++++++++++
> UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c | 25 ++-----------
> UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c | 25 ++------
> -----
> UefiCpuPkg/Library/MpInitLib/MpLib.c | 23 ------------
> 8 files changed, 67 insertions(+), 69 deletions(-)
>
> diff --git a/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
> b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
> index 006b7acbf14e..34d3a7bb4303 100644
> --- a/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
> +++ b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
> @@ -4,6 +4,7 @@
> # The library routines are UEFI specification compliant.
> #
> # Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
> # SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -29,6 +30,12 @@
> [Sources.IA32] [Sources.X64]
> X64/InitializeFpu.nasm
>
> +[Sources]
> + BaseUefiCpuLib.c
> +
> [Packages]
> MdePkg/MdePkg.dec
> UefiCpuPkg/UefiCpuPkg.dec
> +
> +[LibraryClasses]
> + BaseLib
> diff --git a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
> b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
> index bdb2ff372677..561baa44b0e6 100644
> --- a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
> +++ b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
> @@ -5,6 +5,7 @@
> # where local APIC is disabled.
> #
> # Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
> # SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -37,6 +38,7 @@
> [LibraryClasses]
> TimerLib
> IoLib
> PcdLib
> + UefiCpuLib
>
> [Pcd]
> gUefiCpuPkgTokenSpaceGuid.PcdCpuInitIpiDelayInMicroSeconds ##
> SOMETIMES_CONSUMES diff --git
> a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
> b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
> index ac1e0a1c9896..1e2a4f8b790f 100644
> --- a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
> +++ b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
> @@ -5,6 +5,7 @@
> # where local APIC is disabled.
> #
> # Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
> # SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -37,6 +38,7 @@
> [LibraryClasses]
> TimerLib
> IoLib
> PcdLib
> + UefiCpuLib
>
> [Pcd]
> gUefiCpuPkgTokenSpaceGuid.PcdCpuInitIpiDelayInMicroSeconds ##
> SOMETIMES_CONSUMES diff --git
> a/UefiCpuPkg/Include/Library/UefiCpuLib.h
> b/UefiCpuPkg/Include/Library/UefiCpuLib.h
> index 82e53bab3a0f..5326e7246301 100644
> --- a/UefiCpuPkg/Include/Library/UefiCpuLib.h
> +++ b/UefiCpuPkg/Include/Library/UefiCpuLib.h
> @@ -5,6 +5,7 @@
> to be UEFI specification compliant.
>
> Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
> + Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
> @@ -29,4 +30,17 @@ InitializeFloatingPointUnits (
> VOID
> );
>
> +/**
> + Determine if the standard CPU signature is "AuthenticAMD".
> +
> + @retval TRUE The CPU signature matches.
> + @retval FALSE The CPU signature does not match.
> +
> +**/
> +BOOLEAN
> +EFIAPI
> +StandardSignatureIsAuthenticAMD (
> + VOID
> + );
> +
> #endif
> diff --git a/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c
> b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c
> new file mode 100644
> index 000000000000..c2cc3ff9a709
> --- /dev/null
> +++ b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c
> @@ -0,0 +1,38 @@
> +/** @file
> + This library defines some routines that are generic for IA32 family CPU.
> +
> + The library routines are UEFI specification compliant.
> +
> + Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Register/Intel/Cpuid.h>
> +#include <Register/Amd/Cpuid.h>
> +
> +#include <Library/BaseLib.h>
> +#include <Library/UefiCpuLib.h>
> +
> +/**
> + Determine if the standard CPU signature is "AuthenticAMD".
> +
> + @retval TRUE The CPU signature matches.
> + @retval FALSE The CPU signature does not match.
> +
> +**/
> +BOOLEAN
> +EFIAPI
> +StandardSignatureIsAuthenticAMD (
> + VOID
> + )
> +{
> + UINT32 RegEbx;
> + UINT32 RegEcx;
> + UINT32 RegEdx;
> +
> + AsmCpuid (CPUID_SIGNATURE, NULL, &RegEbx, &RegEcx, &RegEdx);
> + return (RegEbx == CPUID_SIGNATURE_AUTHENTIC_AMD_EBX &&
> + RegEcx == CPUID_SIGNATURE_AUTHENTIC_AMD_ECX &&
> + RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX);
> +}
> diff --git a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c
> b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c
> index 33ea15ca2916..52bd90d33428 100644
> --- a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c
> +++ b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c
> @@ -4,7 +4,7 @@
> This local APIC library instance supports xAPIC mode only.
>
> Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
> - Copyright (c) 2017, AMD Inc. All rights reserved.<BR>
> + Copyright (c) 2017 - 2020, AMD Inc. All rights reserved.<BR>
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -21,33 +21,12 @@
> #include <Library/IoLib.h>
> #include <Library/TimerLib.h>
> #include <Library/PcdLib.h>
> +#include <Library/UefiCpuLib.h>
>
> //
> // Library internal functions
> //
>
> -/**
> - Determine if the standard CPU signature is "AuthenticAMD".
> -
> - @retval TRUE The CPU signature matches.
> - @retval FALSE The CPU signature does not match.
> -
> -**/
> -BOOLEAN
> -StandardSignatureIsAuthenticAMD (
> - VOID
> - )
> -{
> - UINT32 RegEbx;
> - UINT32 RegEcx;
> - UINT32 RegEdx;
> -
> - AsmCpuid (CPUID_SIGNATURE, NULL, &RegEbx, &RegEcx, &RegEdx);
> - return (RegEbx == CPUID_SIGNATURE_AUTHENTIC_AMD_EBX &&
> - RegEcx == CPUID_SIGNATURE_AUTHENTIC_AMD_ECX &&
> - RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX);
> -}
> -
> /**
> Determine if the CPU supports the Local APIC Base Address MSR.
>
> diff --git a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c
> b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c
> index d0f92b33dc8c..cdcbca046191 100644
> --- a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c
> +++ b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c
> @@ -5,7 +5,7 @@
> which have xAPIC and x2APIC modes.
>
> Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
> - Copyright (c) 2017, AMD Inc. All rights reserved.<BR>
> + Copyright (c) 2017 - 2020, AMD Inc. All rights reserved.<BR>
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -22,33 +22,12 @@
> #include <Library/IoLib.h>
> #include <Library/TimerLib.h>
> #include <Library/PcdLib.h>
> +#include <Library/UefiCpuLib.h>
>
> //
> // Library internal functions
> //
>
> -/**
> - Determine if the standard CPU signature is "AuthenticAMD".
> -
> - @retval TRUE The CPU signature matches.
> - @retval FALSE The CPU signature does not match.
> -
> -**/
> -BOOLEAN
> -StandardSignatureIsAuthenticAMD (
> - VOID
> - )
> -{
> - UINT32 RegEbx;
> - UINT32 RegEcx;
> - UINT32 RegEdx;
> -
> - AsmCpuid (CPUID_SIGNATURE, NULL, &RegEbx, &RegEcx, &RegEdx);
> - return (RegEbx == CPUID_SIGNATURE_AUTHENTIC_AMD_EBX &&
> - RegEcx == CPUID_SIGNATURE_AUTHENTIC_AMD_ECX &&
> - RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX);
> -}
> -
> /**
> Determine if the CPU supports the Local APIC Base Address MSR.
>
> diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c
> b/UefiCpuPkg/Library/MpInitLib/MpLib.c
> index ab7a8ed6633a..9b0660a5d4ea 100644
> --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c
> +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c
> @@ -13,29 +13,6 @@
> EFI_GUID mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID;
>
>
> -/**
> - Determine if the standard CPU signature is "AuthenticAMD".
> -
> - @retval TRUE The CPU signature matches.
> - @retval FALSE The CPU signature does not match.
> -
> -**/
> -STATIC
> -BOOLEAN
> -StandardSignatureIsAuthenticAMD (
> - VOID
> - )
> -{
> - UINT32 RegEbx;
> - UINT32 RegEcx;
> - UINT32 RegEdx;
> -
> - AsmCpuid (CPUID_SIGNATURE, NULL, &RegEbx, &RegEcx, &RegEdx);
> - return (RegEbx == CPUID_SIGNATURE_AUTHENTIC_AMD_EBX &&
> - RegEcx == CPUID_SIGNATURE_AUTHENTIC_AMD_ECX &&
> - RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX);
> -}
> -
> /**
> The function will check if BSP Execute Disable is enabled.
>
> --
> 2.27.0
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#61367): https://edk2.groups.io/g/devel/message/61367
Mute This Topic: https://groups.io/mt/74901068/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list