]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg: Remove FIT based microcode shadow logic from MpInitLib.
authorSiyuan Fu <siyuan.fu@intel.com>
Tue, 11 Feb 2020 13:30:48 +0000 (21:30 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 14 Feb 2020 04:31:18 +0000 (04:31 +0000)
Commit c7c964b and dd01704 add header file for FIT table and update
MpInitLib to support FIT based microcode shadow operation. There are
comments that FIT is Intel specific specification instead of industry
standard, which should not be placed in EDK2 MdePkg and UefiCpuPkg.
So this patch adds a platform PPI for the microcode shadow logic, and
remove the FIT related code from EDK2.
The FIT based microcode shadow support will be implemented as a new
platform PEIM in IntelSiliconPkg in edk2-platforms.
This patch doesn't provide a DXE version shadow microcode protocol,
a platform which only uses DxeMpInitLib instance only supports PCD
based microcode shadowing.

A detailed design doc can be found here:
https://edk2.groups.io/g/devel/files/Designs/2020/0214/Support%20
the%202nd%20Microcode%20FV%20Flash%20Region.pdf

TEST: Tested on FIT enabled platform.
BZ: https://tianocore.acgmultimedia.com/show_bug.cgi?id=2449

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Siyuan Fu <siyuan.fu@intel.com>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
UefiCpuPkg/Include/Ppi/ShadowMicrocode.h [new file with mode: 0644]
UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
UefiCpuPkg/Library/MpInitLib/DxeMpLib.c
UefiCpuPkg/Library/MpInitLib/Microcode.c
UefiCpuPkg/Library/MpInitLib/MpLib.h
UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf
UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
UefiCpuPkg/UefiCpuPkg.dec
UefiCpuPkg/UefiCpuPkg.uni

diff --git a/UefiCpuPkg/Include/Ppi/ShadowMicrocode.h b/UefiCpuPkg/Include/Ppi/ShadowMicrocode.h
new file mode 100644 (file)
index 0000000..be48965
--- /dev/null
@@ -0,0 +1,66 @@
+/** @file\r
+  This file declares EDKII Shadow Microcode PPI.\r
+\r
+  Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef __PPI_SHADOW_MICROCODE_H__\r
+#define __PPI_SHADOW_MICROCODE_H__\r
+\r
+#define EDKII_PEI_SHADOW_MICROCODE_PPI_GUID \\r
+  { \\r
+    0x430f6965, 0x9a69, 0x41c5, { 0x93, 0xed, 0x8b, 0xf0, 0x64, 0x35, 0xc1, 0xc6 } \\r
+  }\r
+\r
+typedef struct _EDKII_PEI_SHADOW_MICROCODE_PPI  EDKII_PEI_SHADOW_MICROCODE_PPI;\r
+\r
+typedef struct {\r
+  UINT32         ProcessorSignature;\r
+  UINT8          PlatformId;\r
+} EDKII_PEI_MICROCODE_CPU_ID;\r
+\r
+/**\r
+  Shadow microcode update patches to memory.\r
+\r
+  The function is used for shadowing microcode update patches to a continuous memory.\r
+  It shall allocate memory buffer and only shadow the microcode patches for those\r
+  processors specified by MicrocodeCpuId array. The checksum verification may be\r
+  skiped in this function so the caller must perform checksum verification before\r
+  using the microcode patches in returned memory buffer.\r
+\r
+  @param[in]  This                 The PPI instance pointer.\r
+  @param[in]  CpuIdCount           Number of elements in MicrocodeCpuId array.\r
+  @param[in]  MicrocodeCpuId       A pointer to an array of EDKII_PEI_MICROCODE_CPU_ID\r
+                                   structures.\r
+  @param[out] BufferSize           Pointer to receive the total size of Buffer.\r
+  @param[out] Buffer               Pointer to receive address of allocated memory\r
+                                   with microcode patches data in it.\r
+\r
+  @retval EFI_SUCCESS              The microcode has been shadowed to memory.\r
+  @retval EFI_OUT_OF_RESOURCES     The operation fails due to lack of resources.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EDKII_PEI_SHADOW_MICROCODE) (\r
+  IN  EDKII_PEI_SHADOW_MICROCODE_PPI        *This,\r
+  IN  UINTN                                 CpuIdCount,\r
+  IN  EDKII_PEI_MICROCODE_CPU_ID            *MicrocodeCpuId,\r
+  OUT UINTN                                 *BufferSize,\r
+  OUT VOID                                  **Buffer\r
+  );\r
+\r
+///\r
+/// This PPI is installed by some platform or chipset-specific PEIM that\r
+/// abstracts handling microcode shadow support.\r
+///\r
+struct _EDKII_PEI_SHADOW_MICROCODE_PPI {\r
+  EDKII_PEI_SHADOW_MICROCODE          ShadowMicrocode;\r
+};\r
+\r
+extern EFI_GUID gEdkiiPeiShadowMicrocodePpiGuid;\r
+\r
+#endif\r
+\r
index 9e6cce08952c832bf8f4088d85b85a3f4fbd85b2..45aaa179ff2e0c36ec86ae3770885cbc0711ee59 100644 (file)
@@ -69,6 +69,5 @@
   gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize         ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode                       ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApTargetCstate                   ## SOMETIMES_CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize         ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode                       ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApTargetCstate                   ## SOMETIMES_CONSUMES\r
-  gUefiCpuPkgTokenSpaceGuid.PcdCpuShadowMicrocodeByFit             ## CONSUMES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard                  ## CONSUMES\r
 \r
   gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard                  ## CONSUMES\r
 \r
index b17e287bbf49c2e079fbbfd1f10fae75b076886c..a987c3210957c042b3616d34659c2f06aaeed066 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   MP initialize support functions for DXE phase.\r
 \r
 /** @file\r
   MP initialize support functions for DXE phase.\r
 \r
-  Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -816,3 +816,27 @@ MpInitLibEnableDisableAP (
 \r
   return Status;\r
 }\r
 \r
   return Status;\r
 }\r
+\r
+/**\r
+  This funtion will try to invoke platform specific microcode shadow logic to\r
+  relocate microcode update patches into memory.\r
+\r
+  @param[in] CpuMpData  The pointer to CPU MP Data structure.\r
+\r
+  @retval EFI_SUCCESS              Shadow microcode success.\r
+  @retval EFI_OUT_OF_RESOURCES     No enough resource to complete the operation.\r
+  @retval EFI_UNSUPPORTED          Can't find platform specific microcode shadow\r
+                                   PPI/Protocol.\r
+**/\r
+EFI_STATUS\r
+PlatformShadowMicrocode (\r
+  IN OUT CPU_MP_DATA             *CpuMpData\r
+  )\r
+{\r
+  //\r
+  // There is no DXE version of platform shadow microcode protocol so far.\r
+  // A platform which only uses DxeMpInitLib instance could only supports\r
+  // the PCD based microcode shadowing.\r
+  //\r
+  return EFI_UNSUPPORTED;\r
+}\r
index 67e214d463d38b030cb4d41960d403126c818a87..15629591e2444cbe217b5946520e73fb35afa24e 100644 (file)
@@ -619,109 +619,6 @@ OnExit:
   return;\r
 }\r
 \r
   return;\r
 }\r
 \r
-/**\r
-  Shadow the required microcode patches data into memory according to FIT microcode entry.\r
-\r
-  @param[in, out]  CpuMpData    The pointer to CPU MP Data structure.\r
-\r
-  @return EFI_SUCCESS           Microcode patch is shadowed into memory.\r
-  @return EFI_UNSUPPORTED       FIT based microcode shadowing is not supported.\r
-  @return EFI_OUT_OF_RESOURCES  No enough memory resource.\r
-  @return EFI_NOT_FOUND         There is something wrong in FIT microcode entry.\r
-\r
-**/\r
-EFI_STATUS\r
-ShadowMicrocodePatchByFit (\r
-  IN OUT CPU_MP_DATA             *CpuMpData\r
-  )\r
-{\r
-  UINT64                            FitPointer;\r
-  FIRMWARE_INTERFACE_TABLE_ENTRY    *FitEntry;\r
-  UINT32                            EntryNum;\r
-  UINT32                            Index;\r
-  MICROCODE_PATCH_INFO              *PatchInfoBuffer;\r
-  UINTN                             MaxPatchNumber;\r
-  CPU_MICROCODE_HEADER              *MicrocodeEntryPoint;\r
-  UINTN                             PatchCount;\r
-  UINTN                             TotalSize;\r
-  UINTN                             TotalLoadSize;\r
-\r
-  if (!FeaturePcdGet (PcdCpuShadowMicrocodeByFit)) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  FitPointer = *(UINT64 *) (UINTN) FIT_POINTER_ADDRESS;\r
-  if ((FitPointer == 0) ||\r
-      (FitPointer == 0xFFFFFFFFFFFFFFFF) ||\r
-      (FitPointer == 0xEEEEEEEEEEEEEEEE)) {\r
-    //\r
-    // No FIT table.\r
-    //\r
-    ASSERT (FALSE);\r
-    return EFI_NOT_FOUND;\r
-  }\r
-  FitEntry = (FIRMWARE_INTERFACE_TABLE_ENTRY *) (UINTN) FitPointer;\r
-  if ((FitEntry[0].Type != FIT_TYPE_00_HEADER) ||\r
-      (FitEntry[0].Address != FIT_TYPE_00_SIGNATURE)) {\r
-    //\r
-    // Invalid FIT table, treat it as no FIT table.\r
-    //\r
-    ASSERT (FALSE);\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  EntryNum = *(UINT32 *)(&FitEntry[0].Size[0]) & 0xFFFFFF;\r
-\r
-  //\r
-  // Calculate microcode entry number\r
-  //\r
-  MaxPatchNumber = 0;\r
-  for (Index = 0; Index < EntryNum; Index++) {\r
-    if (FitEntry[Index].Type == FIT_TYPE_01_MICROCODE) {\r
-      MaxPatchNumber++;\r
-    }\r
-  }\r
-  if (MaxPatchNumber == 0) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  PatchInfoBuffer = AllocatePool (MaxPatchNumber * sizeof (MICROCODE_PATCH_INFO));\r
-  if (PatchInfoBuffer == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Fill up microcode patch info buffer according to FIT table.\r
-  //\r
-  PatchCount = 0;\r
-  TotalLoadSize = 0;\r
-  for (Index = 0; Index < EntryNum; Index++) {\r
-    if (FitEntry[Index].Type == FIT_TYPE_01_MICROCODE) {\r
-      MicrocodeEntryPoint = (CPU_MICROCODE_HEADER *) (UINTN) FitEntry[Index].Address;\r
-      TotalSize = (MicrocodeEntryPoint->DataSize == 0) ? 2048 : MicrocodeEntryPoint->TotalSize;\r
-      if (IsMicrocodePatchNeedLoad (CpuMpData, MicrocodeEntryPoint)) {\r
-        PatchInfoBuffer[PatchCount].Address     = (UINTN) MicrocodeEntryPoint;\r
-        PatchInfoBuffer[PatchCount].Size        = TotalSize;\r
-        TotalLoadSize += TotalSize;\r
-        PatchCount++;\r
-      }\r
-    }\r
-  }\r
-\r
-  if (PatchCount != 0) {\r
-    DEBUG ((\r
-      DEBUG_INFO,\r
-      "%a: 0x%x microcode patches will be loaded into memory, with size 0x%x.\n",\r
-      __FUNCTION__, PatchCount, TotalLoadSize\r
-      ));\r
-\r
-    ShadowMicrocodePatchWorker (CpuMpData, PatchInfoBuffer, PatchCount, TotalLoadSize);\r
-  }\r
-\r
-  FreePool (PatchInfoBuffer);\r
-  return EFI_SUCCESS;\r
-}\r
-\r
 /**\r
   Shadow the required microcode patches data into memory.\r
 \r
 /**\r
   Shadow the required microcode patches data into memory.\r
 \r
@@ -734,7 +631,7 @@ ShadowMicrocodeUpdatePatch (
 {\r
   EFI_STATUS     Status;\r
 \r
 {\r
   EFI_STATUS     Status;\r
 \r
-  Status = ShadowMicrocodePatchByFit (CpuMpData);\r
+  Status = PlatformShadowMicrocode (CpuMpData);\r
   if (EFI_ERROR (Status)) {\r
     ShadowMicrocodePatchByPcd (CpuMpData);\r
   }\r
   if (EFI_ERROR (Status)) {\r
     ShadowMicrocodePatchByPcd (CpuMpData);\r
   }\r
index a6eab5f3d7965881ab313d1e871ae37acddc673f..455cb3f09acb28f0f0c6747067b4201ab982a9aa 100644 (file)
@@ -31,9 +31,6 @@
 \r
 #include <Guid/MicrocodePatchHob.h>\r
 \r
 \r
 #include <Guid/MicrocodePatchHob.h>\r
 \r
-#include <IndustryStandard/FirmwareInterfaceTable.h>\r
-\r
-\r
 #define WAKEUP_AP_SIGNAL SIGNATURE_32 ('S', 'T', 'A', 'P')\r
 \r
 #define CPU_INIT_MP_LIB_HOB_GUID \\r
 #define WAKEUP_AP_SIGNAL SIGNATURE_32 ('S', 'T', 'A', 'P')\r
 \r
 #define CPU_INIT_MP_LIB_HOB_GUID \\r
@@ -657,5 +654,21 @@ GetProcessorNumber (
   OUT UINTN                    *ProcessorNumber\r
   );\r
 \r
   OUT UINTN                    *ProcessorNumber\r
   );\r
 \r
+/**\r
+  This funtion will try to invoke platform specific microcode shadow logic to\r
+  relocate microcode update patches into memory.\r
+\r
+  @param[in] CpuMpData  The pointer to CPU MP Data structure.\r
+\r
+  @retval EFI_SUCCESS              Shadow microcode success.\r
+  @retval EFI_OUT_OF_RESOURCES     No enough resource to complete the operation.\r
+  @retval EFI_UNSUPPORTED          Can't find platform specific microcode shadow\r
+                                   PPI/Protocol.\r
+**/\r
+EFI_STATUS\r
+PlatformShadowMicrocode (\r
+  IN OUT CPU_MP_DATA             *CpuMpData\r
+  );\r
+\r
 #endif\r
 \r
 #endif\r
 \r
index 555125a7c575c6300b604a8115dd96c4ae9990c4..d78d328b425226868b9f375f607e29f8d77d14b9 100644 (file)
@@ -60,7 +60,9 @@
   gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize         ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode                       ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApTargetCstate                   ## SOMETIMES_CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize         ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode                       ## CONSUMES\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuApTargetCstate                   ## SOMETIMES_CONSUMES\r
-  gUefiCpuPkgTokenSpaceGuid.PcdCpuShadowMicrocodeByFit             ## CONSUMES\r
+\r
+[Ppis]\r
+  gEdkiiPeiShadowMicrocodePpiGuid        ## SOMETIMES_CONSUMES\r
 \r
 [Guids]\r
   gEdkiiS3SmmInitDoneGuid\r
 \r
 [Guids]\r
   gEdkiiS3SmmInitDoneGuid\r
index 6ecbed39ec4c4a54e5e73f9dd4a7b13f11201837..17b60903c5a63e25c050f5188afded82a9bf0858 100644 (file)
@@ -9,6 +9,7 @@
 #include "MpLib.h"\r
 #include <Library/PeiServicesLib.h>\r
 #include <Guid/S3SmmInitDone.h>\r
 #include "MpLib.h"\r
 #include <Library/PeiServicesLib.h>\r
 #include <Guid/S3SmmInitDone.h>\r
+#include <Ppi/ShadowMicrocode.h>\r
 \r
 /**\r
   S3 SMM Init Done notification function.\r
 \r
 /**\r
   S3 SMM Init Done notification function.\r
@@ -639,4 +640,71 @@ MpInitLibEnableDisableAP (
   return EnableDisableApWorker (ProcessorNumber, EnableAP, HealthFlag);\r
 }\r
 \r
   return EnableDisableApWorker (ProcessorNumber, EnableAP, HealthFlag);\r
 }\r
 \r
+/**\r
+  This funtion will try to invoke platform specific microcode shadow logic to\r
+  relocate microcode update patches into memory.\r
+\r
+  @param[in] CpuMpData  The pointer to CPU MP Data structure.\r
 \r
 \r
+  @retval EFI_SUCCESS              Shadow microcode success.\r
+  @retval EFI_OUT_OF_RESOURCES     No enough resource to complete the operation.\r
+  @retval EFI_UNSUPPORTED          Can't find platform specific microcode shadow\r
+                                   PPI/Protocol.\r
+**/\r
+EFI_STATUS\r
+PlatformShadowMicrocode (\r
+  IN OUT CPU_MP_DATA             *CpuMpData\r
+  )\r
+{\r
+  EFI_STATUS                         Status;\r
+  EDKII_PEI_SHADOW_MICROCODE_PPI     *ShadowMicrocodePpi;\r
+  UINTN                              CpuCount;\r
+  EDKII_PEI_MICROCODE_CPU_ID         *MicrocodeCpuId;\r
+  UINTN                              Index;\r
+  UINTN                              BufferSize;\r
+  VOID                               *Buffer;\r
+\r
+  Status = PeiServicesLocatePpi (\r
+             &gEdkiiPeiShadowMicrocodePpiGuid,\r
+             0,\r
+             NULL,\r
+             (VOID **) &ShadowMicrocodePpi\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  CpuCount = CpuMpData->CpuCount;\r
+  MicrocodeCpuId = (EDKII_PEI_MICROCODE_CPU_ID *) AllocateZeroPool (sizeof (EDKII_PEI_MICROCODE_CPU_ID) * CpuCount);\r
+  if (MicrocodeCpuId == NULL) {\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
+\r
+  for (Index = 0; Index < CpuMpData->CpuCount; Index++) {\r
+    MicrocodeCpuId[Index].ProcessorSignature = CpuMpData->CpuData[Index].ProcessorSignature;\r
+    MicrocodeCpuId[Index].PlatformId         = CpuMpData->CpuData[Index].PlatformId;\r
+  }\r
+\r
+  Status = ShadowMicrocodePpi->ShadowMicrocode (\r
+             ShadowMicrocodePpi,\r
+             CpuCount,\r
+             MicrocodeCpuId,\r
+             &BufferSize,\r
+             &Buffer\r
+             );\r
+  FreePool (MicrocodeCpuId);\r
+  if (EFI_ERROR (Status)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
+  CpuMpData->MicrocodePatchAddress    = (UINTN) Buffer;\r
+  CpuMpData->MicrocodePatchRegionSize = BufferSize;\r
+\r
+  DEBUG ((\r
+    DEBUG_INFO,\r
+    "%a: Required microcode patches have been loaded at 0x%lx, with size 0x%lx.\n",\r
+    __FUNCTION__, CpuMpData->MicrocodePatchAddress, CpuMpData->MicrocodePatchRegionSize\r
+    ));\r
+\r
+  return EFI_SUCCESS;\r
+}\r
index a6ebdde1cfb6bf0db4b9ec4e7bfd1d7f112c932c..e91dc68cbeb243c9664fa64e7ed1c352aa0a0479 100644 (file)
@@ -1,7 +1,7 @@
 ## @file  UefiCpuPkg.dec\r
 # This Package provides UEFI compatible CPU modules and libraries.\r
 #\r
 ## @file  UefiCpuPkg.dec\r
 # This Package provides UEFI compatible CPU modules and libraries.\r
 #\r
-# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>\r
 #\r
 # SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 #\r
 # SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
@@ -81,6 +81,9 @@
 [Ppis]\r
   gEdkiiPeiMpServices2PpiGuid =    { 0x5cb9cb3d, 0x31a4, 0x480c, { 0x94, 0x98, 0x29, 0xd2, 0x69, 0xba, 0xcf, 0xba}}\r
 \r
 [Ppis]\r
   gEdkiiPeiMpServices2PpiGuid =    { 0x5cb9cb3d, 0x31a4, 0x480c, { 0x94, 0x98, 0x29, 0xd2, 0x69, 0xba, 0xcf, 0xba}}\r
 \r
+  ## Include/Ppi/ShadowMicrocode.h\r
+  gEdkiiPeiShadowMicrocodePpiGuid = { 0x430f6965, 0x9a69, 0x41c5, { 0x93, 0xed, 0x8b, 0xf0, 0x64, 0x35, 0xc1, 0xc6 }}\r
+\r
 [PcdsFeatureFlag]\r
   ## Indicates if SMM Profile will be enabled.\r
   #  If enabled, instruction executions in and data accesses to memory outside of SMRAM will be logged.\r
 [PcdsFeatureFlag]\r
   ## Indicates if SMM Profile will be enabled.\r
   #  If enabled, instruction executions in and data accesses to memory outside of SMRAM will be logged.\r
   # @Prompt Lock SMM Feature Control MSR.\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock|TRUE|BOOLEAN|0x3213210B\r
 \r
   # @Prompt Lock SMM Feature Control MSR.\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock|TRUE|BOOLEAN|0x3213210B\r
 \r
-  ## Indicates if FIT based microcode shadowing will be enabled.<BR><BR>\r
-  #   TRUE  - FIT base microcode shadowing will be enabled.<BR>\r
-  #   FALSE - FIT base microcode shadowing will be disabled.<BR>\r
-  # @Prompt FIT based microcode shadowing.\r
-  gUefiCpuPkgTokenSpaceGuid.PcdCpuShadowMicrocodeByFit|FALSE|BOOLEAN|0x3213210D\r
-\r
 [PcdsFixedAtBuild]\r
   ## List of exception vectors which need switching stack.\r
   #  This PCD will only take into effect if PcdCpuStackGuard is enabled.\r
 [PcdsFixedAtBuild]\r
   ## List of exception vectors which need switching stack.\r
   #  This PCD will only take into effect if PcdCpuStackGuard is enabled.\r
index 2db49e841b4ac862a93e7978893797f57b0abf42..c0d6ed513678a4ce5ea40a1fdfea6a5241dbcb68 100644 (file)
                                                                                            "TRUE  - locked.<BR>\n"\r
                                                                                            "FALSE - unlocked.<BR>"\r
 \r
                                                                                            "TRUE  - locked.<BR>\n"\r
                                                                                            "FALSE - unlocked.<BR>"\r
 \r
-#string STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuShadowMicrocodeByFit_PROMPT  #language en-US "FIT based microcode shadowing"\r
-\r
-#string STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuShadowMicrocodeByFit_HELP  #language en-US "Indicates if FIT based microcode shadowing will be enabled.<BR><BR>\n"\r
-                                                                                       "TRUE  - FIT base microcode shadowing will be enabled.<BR>\n"\r
-                                                                                       "FALSE - FIT base microcode shadowing will be disabled.<BR>"\r
-\r
 #string STR_gUefiCpuPkgTokenSpaceGuid_PcdPeiTemporaryRamStackSize_PROMPT  #language en-US "Stack size in the temporary RAM"\r
 \r
 #string STR_gUefiCpuPkgTokenSpaceGuid_PcdPeiTemporaryRamStackSize_HELP  #language en-US "Specifies stack size in the temporary RAM. 0 means half of TemporaryRamSize."\r
 #string STR_gUefiCpuPkgTokenSpaceGuid_PcdPeiTemporaryRamStackSize_PROMPT  #language en-US "Stack size in the temporary RAM"\r
 \r
 #string STR_gUefiCpuPkgTokenSpaceGuid_PcdPeiTemporaryRamStackSize_HELP  #language en-US "Specifies stack size in the temporary RAM. 0 means half of TemporaryRamSize."\r