From: "Laszlo Ersek" <lersek@redhat.com>
To: Garrett Kirkendall <Garrett.Kirkendall@amd.com>, devel@edk2.groups.io
Cc: Eric Dong <eric.dong@intel.com>, Ray Ni <ray.ni@intel.com>
Subject: Re: [PATCH v1 1/2] UefiCpuPkg: Move StandardSignatureIsAuthenticAMD to BaseUefiCpuLib
Date: Tue, 16 Jun 2020 17:29:37 +0200 [thread overview]
Message-ID: <1674e057-cf7a-ab14-2c84-c48f791fce4f@redhat.com> (raw)
In-Reply-To: <20200615183029.4577-2-Garrett.Kirkendall@amd.com>
On 06/15/20 20:30, Garrett Kirkendall wrote:
> 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@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Garrett Kirkendall <garrett.kirkendall@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.
>
>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
next prev parent reply other threads:[~2020-06-16 15:29 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-15 18:30 [PATCH v1 0/2] UefiCpuPkg: AMD procesor MSR_IA32_MISC_ENABLE Kirkendall, Garrett
2020-06-15 18:30 ` [PATCH v1 1/2] UefiCpuPkg: Move StandardSignatureIsAuthenticAMD to BaseUefiCpuLib Kirkendall, Garrett
2020-06-16 15:29 ` Laszlo Ersek [this message]
2020-06-17 0:30 ` [edk2-devel] " Dong, Eric
2020-06-15 18:30 ` [PATCH v1 2/2] UefiCpuPkg: PiSmmCpuDxeSmm skip MSR_IA32_MISC_ENABLE manipulation on AMD Kirkendall, Garrett
2020-06-16 16:28 ` Laszlo Ersek
2020-06-16 17:01 ` [PATCH v1 0/2] UefiCpuPkg: AMD procesor MSR_IA32_MISC_ENABLE Laszlo Ersek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1674e057-cf7a-ab14-2c84-c48f791fce4f@redhat.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox