public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ni, Ray" <ray.ni@intel.com>
To: devel@edk2.groups.io
Cc: Eric Dong <eric.dong@intel.com>,
	Rahul Kumar <rahul1.kumar@intel.com>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: [PATCH 4/4] UefiCpuPkg/CpuFeatures: Deprecate CPU_FEATURE_X2APIC
Date: Fri,  7 Jul 2023 13:29:01 +0800	[thread overview]
Message-ID: <20230707052901.869-5-ray.ni@intel.com> (raw)
In-Reply-To: <20230707052901.869-1-ray.ni@intel.com>

Since MpLib supports to sync BSP's initial APIC mode to APs,
platform can set BSP to X2 APIC mode before MpLib runs and
expect MpLib syncs the X2 APIC mode to all APs.

With such capability in MpLib, CpuCommonFeaturesLib's
X2 APIC enable logic is dropped for simplificity. Such code
removal also removes the confusion regarding how platform
controls the X2 APIC enabling.

Signed-off-by: Ray Ni <ray.ni@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
---
 .../Include/Library/RegisterCpuFeaturesLib.h  |   2 +-
 .../CpuCommonFeaturesLib/CpuCommonFeatures.h  |  69 +--------
 .../CpuCommonFeaturesLib.c                    |  14 +-
 .../CpuCommonFeaturesLib.inf                  |   1 -
 .../Library/CpuCommonFeaturesLib/X2Apic.c     | 138 ------------------
 5 files changed, 3 insertions(+), 221 deletions(-)
 delete mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c

diff --git a/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h b/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h
index 36459afc5e..ac5419141e 100644
--- a/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h
+++ b/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h
@@ -44,7 +44,7 @@
 #define CPU_FEATURE_C_STATE                        21
 #define CPU_FEATURE_TM                             22
 #define CPU_FEATURE_TM2                            23
-#define CPU_FEATURE_X2APIC                         24
+#define CPU_FEATURE_X2APIC                         24  ///< deprecated, do not use it to enable X2 APIC.
 #define CPU_FEATURE_RESERVED_25                    25
 #define CPU_FEATURE_RESERVED_26                    26
 #define CPU_FEATURE_RESERVED_27                    27
diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeatures.h b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeatures.h
index 5434a45f6a..22ecab82e8 100644
--- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeatures.h
+++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeatures.h
@@ -1,7 +1,7 @@
 /** @file
   CPU Common features library header file.
 
-  Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2017 - 2013, Intel Corporation. All rights reserved.<BR>
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -781,73 +781,6 @@ C1eInitialize (
   IN BOOLEAN                           State
   );
 
-/**
-  Prepares for the data used by CPU feature detection and initialization.
-
-  @param[in]  NumberOfProcessors  The number of CPUs in the platform.
-
-  @return  Pointer to a buffer of CPU related configuration data.
-
-  @note This service could be called by BSP only.
-**/
-VOID *
-EFIAPI
-X2ApicGetConfigData (
-  IN UINTN  NumberOfProcessors
-  );
-
-/**
-  Detects if X2Apci feature supported on current processor.
-
-  Detect if X2Apci has been already enabled.
-
-  @param[in]  ProcessorNumber  The index of the CPU executing this function.
-  @param[in]  CpuInfo          A pointer to the REGISTER_CPU_FEATURE_INFORMATION
-                               structure for the CPU executing this function.
-  @param[in]  ConfigData       A pointer to the configuration buffer returned
-                               by CPU_FEATURE_GET_CONFIG_DATA.  NULL if
-                               CPU_FEATURE_GET_CONFIG_DATA was not provided in
-                               RegisterCpuFeature().
-
-  @retval TRUE     X2Apci feature is supported.
-  @retval FALSE    X2Apci feature is not supported.
-
-  @note This service could be called by BSP/APs.
-**/
-BOOLEAN
-EFIAPI
-X2ApicSupport (
-  IN UINTN                             ProcessorNumber,
-  IN REGISTER_CPU_FEATURE_INFORMATION  *CpuInfo,
-  IN VOID                              *ConfigData  OPTIONAL
-  );
-
-/**
-  Initializes X2Apci feature to specific state.
-
-  @param[in]  ProcessorNumber  The index of the CPU executing this function.
-  @param[in]  CpuInfo          A pointer to the REGISTER_CPU_FEATURE_INFORMATION
-                               structure for the CPU executing this function.
-  @param[in]  ConfigData       A pointer to the configuration buffer returned
-                               by CPU_FEATURE_GET_CONFIG_DATA.  NULL if
-                               CPU_FEATURE_GET_CONFIG_DATA was not provided in
-                               RegisterCpuFeature().
-  @param[in]  State            If TRUE, then the X2Apci feature must be enabled.
-                               If FALSE, then the X2Apci feature must be disabled.
-
-  @retval RETURN_SUCCESS       X2Apci feature is initialized.
-
-  @note This service could be called by BSP only.
-**/
-RETURN_STATUS
-EFIAPI
-X2ApicInitialize (
-  IN UINTN                             ProcessorNumber,
-  IN REGISTER_CPU_FEATURE_INFORMATION  *CpuInfo,
-  IN VOID                              *ConfigData   OPTIONAL,
-  IN BOOLEAN                           State
-  );
-
 /**
   Prepares for the data used by CPU feature detection and initialization.
 
diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.c b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.c
index 7f0e1004b9..cc8807c19d 100644
--- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.c
+++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.c
@@ -2,7 +2,7 @@
   This library registers CPU features defined in Intel(R) 64 and IA-32
   Architectures Software Developer's Manual.
 
-  Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2017 - 2023, Intel Corporation. All rights reserved.<BR>
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -192,18 +192,6 @@ CpuCommonFeaturesLibConstructor (
     ASSERT_EFI_ERROR (Status);
   }
 
-  if (IsCpuFeatureSupported (CPU_FEATURE_X2APIC)) {
-    Status = RegisterCpuFeature (
-               "X2Apic",
-               X2ApicGetConfigData,
-               X2ApicSupport,
-               X2ApicInitialize,
-               CPU_FEATURE_X2APIC,
-               CPU_FEATURE_END
-               );
-    ASSERT_EFI_ERROR (Status);
-  }
-
   if (IsCpuFeatureSupported (CPU_FEATURE_PPIN)) {
     Status = RegisterCpuFeature (
                "PPIN",
diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf
index 1b823155b1..1a95e745b5 100644
--- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf
+++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf
@@ -40,7 +40,6 @@
   MachineCheck.c
   MonitorMwait.c
   PendingBreak.c
-  X2Apic.c
   Ppin.c
   ProcTrace.c
 
diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c b/UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c
deleted file mode 100644
index 220f307e5a..0000000000
--- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/** @file
-  X2Apic feature.
-
-  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "CpuCommonFeatures.h"
-
-/**
-  Prepares for the data used by CPU feature detection and initialization.
-
-  @param[in]  NumberOfProcessors  The number of CPUs in the platform.
-
-  @return  Pointer to a buffer of CPU related configuration data.
-
-  @note This service could be called by BSP only.
-**/
-VOID *
-EFIAPI
-X2ApicGetConfigData (
-  IN UINTN  NumberOfProcessors
-  )
-{
-  BOOLEAN  *ConfigData;
-
-  ConfigData = AllocateZeroPool (sizeof (BOOLEAN) * NumberOfProcessors);
-  ASSERT (ConfigData != NULL);
-  return ConfigData;
-}
-
-/**
-  Detects if X2Apci feature supported on current processor.
-
-  Detect if X2Apci has been already enabled.
-
-  @param[in]  ProcessorNumber  The index of the CPU executing this function.
-  @param[in]  CpuInfo          A pointer to the REGISTER_CPU_FEATURE_INFORMATION
-                               structure for the CPU executing this function.
-  @param[in]  ConfigData       A pointer to the configuration buffer returned
-                               by CPU_FEATURE_GET_CONFIG_DATA.  NULL if
-                               CPU_FEATURE_GET_CONFIG_DATA was not provided in
-                               RegisterCpuFeature().
-
-  @retval TRUE     X2Apci feature is supported.
-  @retval FALSE    X2Apci feature is not supported.
-
-  @note This service could be called by BSP/APs.
-**/
-BOOLEAN
-EFIAPI
-X2ApicSupport (
-  IN UINTN                             ProcessorNumber,
-  IN REGISTER_CPU_FEATURE_INFORMATION  *CpuInfo,
-  IN VOID                              *ConfigData  OPTIONAL
-  )
-{
-  BOOLEAN  *X2ApicEnabled;
-
-  ASSERT (ConfigData != NULL);
-  X2ApicEnabled = (BOOLEAN *)ConfigData;
-  //
-  // *ConfigData indicates if X2APIC enabled on current processor
-  //
-  X2ApicEnabled[ProcessorNumber] = (GetApicMode () == LOCAL_APIC_MODE_X2APIC) ? TRUE : FALSE;
-
-  return (CpuInfo->CpuIdVersionInfoEcx.Bits.x2APIC == 1);
-}
-
-/**
-  Initializes X2Apci feature to specific state.
-
-  @param[in]  ProcessorNumber  The index of the CPU executing this function.
-  @param[in]  CpuInfo          A pointer to the REGISTER_CPU_FEATURE_INFORMATION
-                               structure for the CPU executing this function.
-  @param[in]  ConfigData       A pointer to the configuration buffer returned
-                               by CPU_FEATURE_GET_CONFIG_DATA.  NULL if
-                               CPU_FEATURE_GET_CONFIG_DATA was not provided in
-                               RegisterCpuFeature().
-  @param[in]  State            If TRUE, then the X2Apci feature must be enabled.
-                               If FALSE, then the X2Apci feature must be disabled.
-
-  @retval RETURN_SUCCESS       X2Apci feature is initialized.
-
-  @note This service could be called by BSP only.
-**/
-RETURN_STATUS
-EFIAPI
-X2ApicInitialize (
-  IN UINTN                             ProcessorNumber,
-  IN REGISTER_CPU_FEATURE_INFORMATION  *CpuInfo,
-  IN VOID                              *ConfigData   OPTIONAL,
-  IN BOOLEAN                           State
-  )
-{
-  BOOLEAN  *X2ApicEnabled;
-
-  //
-  // The scope of the MSR_IA32_APIC_BASE is core for below processor type, only program
-  // MSR_IA32_APIC_BASE for thread 0 in each core.
-  //
-  if (IS_SILVERMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {
-    if (CpuInfo->ProcessorInfo.Location.Thread != 0) {
-      return RETURN_SUCCESS;
-    }
-  }
-
-  ASSERT (ConfigData != NULL);
-  X2ApicEnabled = (BOOLEAN *)ConfigData;
-  if (X2ApicEnabled[ProcessorNumber]) {
-    PRE_SMM_CPU_REGISTER_TABLE_WRITE_FIELD (
-      ProcessorNumber,
-      Msr,
-      MSR_IA32_APIC_BASE,
-      MSR_IA32_APIC_BASE_REGISTER,
-      Bits.EXTD,
-      1
-      );
-  } else {
-    //
-    // Enable X2APIC mode only if X2APIC is not enabled,
-    // Needn't to disabe X2APIC mode again if X2APIC is not enabled
-    //
-    if (State) {
-      CPU_REGISTER_TABLE_WRITE_FIELD (
-        ProcessorNumber,
-        Msr,
-        MSR_IA32_APIC_BASE,
-        MSR_IA32_APIC_BASE_REGISTER,
-        Bits.EXTD,
-        1
-        );
-    }
-  }
-
-  return RETURN_SUCCESS;
-}
-- 
2.39.1.windows.1


  parent reply	other threads:[~2023-07-07  5:29 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-07  5:28 [PATCH 0/4] Sync BSP's APIC mode to APs in MP init flow Ni, Ray
2023-07-07  5:28 ` [PATCH 1/4] UefiCpuPkg/MpInitLib: Separate X2APIC enabling to subfunction Ni, Ray
2023-07-07  5:28 ` [PATCH 2/4] UefiCpuPkg/MpInitLib: Sync BSP's APIC mode to APs in InitConfig path Ni, Ray
2023-07-07  5:29 ` [PATCH 3/4] UefiCpuPkg/MpInitLib: Skip X2APIC enabling when BSP in X2APIC already Ni, Ray
2023-07-07  5:29 ` Ni, Ray [this message]
2023-07-07  8:55 ` [edk2-devel] [PATCH 0/4] Sync BSP's APIC mode to APs in MP init flow Gerd Hoffmann
2023-07-07  9:25   ` Ni, Ray
2023-07-07 11:26     ` Gerd Hoffmann
2023-11-09 16:29       ` Aaron Young via groups.io
2023-11-09 18:08         ` Michael D Kinney
2023-11-13 12:32           ` 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=20230707052901.869-5-ray.ni@intel.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