Reviewed-by: Eric Dong <eric.d...@intel.com>

> -----Original Message-----
> From: Ni, Ray
> Sent: Thursday, April 4, 2019 2:03 PM
> To: devel@edk2.groups.io
> Cc: Dong, Eric <eric.d...@intel.com>; Zeng, Star <star.z...@intel.com>; Qin,
> Zhiqiang <zhiqiang....@intel.com>
> Subject: [PATCH v2 1/2] UefiCpuPkg/Cpuid.h: Remove duplicated struct
> definition for leaf 1FH
> 
> Per SDM CPUID.0BH and CPUID.1FH outputs the same format of data in
> EAX/EBX/ECX/EDX except CPUID.1FH reports more level types such as
> module, tile, die.
> 
> The patch removes the unnecessary duplicated structure definitions for
> CPUID.1FH because when the structure definitions for CPUID.0BH can be
> used for CPUID.1FH.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ray Ni <ray...@intel.com>
> Cc: Eric Dong <eric.d...@intel.com>
> Cc: Star Zeng <star.z...@intel.com>
> Cc: Zhiqiang Qin <zhiqiang....@intel.com>
> ---
>  UefiCpuPkg/Application/Cpuid/Cpuid.c |  24 ++---
> UefiCpuPkg/Include/Register/Cpuid.h  | 126 ++-------------------------
>  2 files changed, 20 insertions(+), 130 deletions(-)
> 
> diff --git a/UefiCpuPkg/Application/Cpuid/Cpuid.c
> b/UefiCpuPkg/Application/Cpuid/Cpuid.c
> index 67cacf2714..d229ac8e7b 100644
> --- a/UefiCpuPkg/Application/Cpuid/Cpuid.c
> +++ b/UefiCpuPkg/Application/Cpuid/Cpuid.c
> @@ -1,7 +1,7 @@
>  /** @file
>    UEFI Application to display CPUID leaf information.
> 
> -  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2016 - 2019, Intel Corporation. All rights
> + reserved.<BR>
>    This program and the accompanying materials
>    are licensed and made available under the terms and conditions of the BSD
> License
>    which accompanies this distribution.  The full text of the license may be
> found at @@ -1394,26 +1394,26 @@ CpuidV2ExtendedTopologyEnumeration
> (
>    VOID
>    )
>  {
> -  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EAX  Eax;
> -  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EBX  Ebx;
> -  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_ECX  Ecx;
> -  UINT32                                      Edx;
> +  CPUID_EXTENDED_TOPOLOGY_EAX  Eax;
> +  CPUID_EXTENDED_TOPOLOGY_EBX  Ebx;
> +  CPUID_EXTENDED_TOPOLOGY_ECX  Ecx;
> +  UINT32                       Edx;
> 
> -  if (CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION >
> gMaximumBasicFunction) {
> +  if (CPUID_V2_EXTENDED_TOPOLOGY > gMaximumBasicFunction) {
>      return;
>    }
> 
>    AsmCpuidEx (
> -    CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION,
> -    CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_MAIN_LEAF,
> +    CPUID_V2_EXTENDED_TOPOLOGY,
> +    0,
>      &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx
>      );
> -  Print (L"CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION (Leaf %08x,
> Sub-Leaf %08x)\n", CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION,
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_MAIN_LEAF);
> +  Print (L"CPUID_V2_EXTENDED_TOPOLOGY (Leaf %08x, Sub-Leaf %08x)\n",
> + CPUID_V2_EXTENDED_TOPOLOGY, 0);
>    Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32,
> Ebx.Uint32, Ecx.Uint32, Edx);
> 
> -  PRINT_BIT_FIELD (Eax, BitsNum);
> -  PRINT_BIT_FIELD (Ebx, ProcessorsNum);
> -  PRINT_BIT_FIELD (Ecx, LevelNum);
> +  PRINT_BIT_FIELD (Eax, ApicIdShift);
> +  PRINT_BIT_FIELD (Ebx, LogicalProcessors);  PRINT_BIT_FIELD (Ecx,
> + LevelNumber);
>    PRINT_BIT_FIELD (Ecx, LevelType);
>    PRINT_VALUE     (Edx, x2APICID);
>  }
> diff --git a/UefiCpuPkg/Include/Register/Cpuid.h
> b/UefiCpuPkg/Include/Register/Cpuid.h
> index fab199b6e2..e0f4f968f4 100644
> --- a/UefiCpuPkg/Include/Register/Cpuid.h
> +++ b/UefiCpuPkg/Include/Register/Cpuid.h
> @@ -6,7 +6,7 @@
>    If a register returned is a single 32-bit value, then a data structure is
>    not provided for that register.
> 
> -  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2015 - 2019, Intel Corporation. All rights
> + reserved.<BR>
>    This program and the accompanying materials are licensed and made
> available under
>    the terms and conditions of the BSD License which accompanies this
> distribution.
>    The full text of the license may be found at @@ -3620,130 +3620,20 @@
> typedef union {
>    number of logical processors available to BIOS/OS/Applications may be
> different from the
>    value of EBX[15:0], depending on software and platform hardware
> configurations.
> 
> -  @param   EAX  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION
> (0x1F)
> -  @param   ECX
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_MAIN_LEAF  (0x0)
> -
> -**/
> -#define CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION
> 0x1F
> -
> -/**
> -  CPUID V2 Extended Topology Enumeration Leaf
> -
> -  @param   EAX  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION
> (0x1F)
> -  @param   ECX
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_MAIN_LEAF (0x00)
> -
> -  @retval  EAX  Returns V2 Extended Topology Enumeration Leaf described
> by
> -                the type CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EAX.
> -  @retval  EBX  Returns V2 Extended Topology Enumeration Leaf described
> by
> -                the type CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EBX.
> -  @retval  ECX  Returns V2 Extended Topology Enumeration Leaf described
> by
> -                the type CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_ECX.
> -  @retval  EDX  Returns x2APIC ID the current logical processor.
> -
> -  <b>Example usage</b>
> -  @code
> -  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EAX         Eax;
> -  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EBX         Ebx;
> -  CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_ECX         Ecx;
> -  UINT32                                             Edx;
> -
> -  AsmCpuidEx (
> -    CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION,
> -    CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_MAIN_LEAF,
> -    &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx
> -    );
> -  @endcode
> -**/
> -#define CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_MAIN_LEAF
> 0x00
> -
> -/**
> -  CPUID V2 Extended Topology Enumeration Leaf EAX for CPUID leafs.
> -**/
> -typedef union {
> -  ///
> -  /// Individual bit fields
> -  ///
> -  struct {
> -    ///
> -    /// [Bits 4:0] Number of bits to shift right on x2APIC ID to get a unique
> -    /// topology ID of the next level type. All logical processors with the
> -    /// same next level ID share current level.
> -    ///
> -    UINT32  BitsNum:5;
> -    ///
> -    /// [Bits 31:5] Reserved.
> -    ///
> -    UINT32  Reserved:27;
> -  } Bits;
> -  ///
> -  /// All bit fields as a 32-bit value
> -  ///
> -  UINT32  Uint32;
> -} CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EAX;
> -
> -/**
> -  CPUID V2 Extended Topology Enumeration Leaf EBX for CPUID leafs.
> -**/
> -typedef union {
> -  ///
> -  /// Individual bit fields
> -  ///
> -  struct {
> -    ///
> -    /// [Bits 15:0] Number of logical processors at this level type. The 
> number
> -    /// reflects configuration as shipped by Intel.
> -    ///
> -    UINT32  ProcessorsNum:16;
> -    ///
> -    /// [Bits 31:5] Reserved.
> -    ///
> -    UINT32  Reserved:16;
> -  } Bits;
> -  ///
> -  /// All bit fields as a 32-bit value
> -  ///
> -  UINT32  Uint32;
> -} CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_EBX;
> +  @param   EAX  CPUID_V2_EXTENDED_TOPOLOGY                        (0x1F)
> +  @param   ECX  Level number
> 
> -/**
> -  CPUID V2 Extended Topology Enumeration Leaf ECX for CPUID leafs.
>  **/
> -typedef union {
> -  ///
> -  /// Individual bit fields
> -  ///
> -  struct {
> -    ///
> -    /// [Bits 7:0] Level number. Same value in ECX input.
> -    ///
> -    UINT32  LevelNum:8;
> -    ///
> -    /// [Bits 7:0] Level type.
> -    ///
> -    UINT32  LevelType:8;
> -
> -    ///
> -    /// [Bits 31:5] Reserved.
> -    ///
> -    UINT32  Reserved:16;
> -  } Bits;
> -  ///
> -  /// All bit fields as a 32-bit value
> -  ///
> -  UINT32  Uint32;
> -} CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_ECX;
> +#define CPUID_V2_EXTENDED_TOPOLOGY                                     0x1F
> 
>  ///
> -/// @{ Define value for
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_ECX.LevelType
> +/// @{ Define value for CPUID_EXTENDED_TOPOLOGY_ECX.LevelType
>  /// The value of the "level type" field is not related to level numbers in  
> ///
> any way, higher "level type" values do not mean higher levels.
>  ///
> -#define
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_LEVEL_TYPE_INVALID
> 0x00
> -#define
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_LEVEL_TYPE_SMT
> 0x01
> -#define
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_LEVEL_TYPE_CORE
> 0x02
> -#define
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_LEVEL_TYPE_MODULE
> 0x03
> -#define
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_LEVEL_TYPE_TILE
> 0x04
> -#define
> CPUID_V2_EXTENDED_TOPOLOGY_ENUMERATION_LEVEL_TYPE_DIE
> 0x05
> +#define   CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_MODULE
> 0x03
> +#define   CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_TILE
> 0x04
> +#define   CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE
> 0x05
>  ///
>  /// @}
>  ///
> --
> 2.21.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#39): https://edk2.groups.io/g/devel/message/39
Mute This Topic: https://groups.io/mt/30893915/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to