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.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Signed-off-by: Garrett Kirkendall <garrett.kirkend...@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 <ler...@redhat.com> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#61341): https://edk2.groups.io/g/devel/message/61341 Mute This Topic: https://groups.io/mt/74901068/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-