]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Library/MpInitLib/MpLib.c
UefiCpuPkg/MpInitLib: Not pass microcode info between archs in CPU_MP_DATA
[mirror_edk2.git] / UefiCpuPkg / Library / MpInitLib / MpLib.c
index 855d37ba3ed8b46bfeea2f3fa625aa2b3281d6a4..d0fbc17ce5516ae0ab07bde8460fa07f185b8426 100644 (file)
@@ -1682,10 +1682,6 @@ MpInitLibInitialize (
   CpuMpData->SwitchBspFlag    = FALSE;\r
   CpuMpData->CpuData          = (CPU_AP_DATA *) (CpuMpData + 1);\r
   CpuMpData->CpuInfoInHob     = (UINT64) (UINTN) (CpuMpData->CpuData + MaxLogicalProcessorNumber);\r
-  if (OldCpuMpData != NULL) {\r
-    CpuMpData->MicrocodePatchRegionSize = OldCpuMpData->MicrocodePatchRegionSize;\r
-    CpuMpData->MicrocodePatchAddress    = OldCpuMpData->MicrocodePatchAddress;\r
-  }\r
   InitializeSpinLock(&CpuMpData->MpLock);\r
 \r
   //\r
@@ -1740,11 +1736,6 @@ MpInitLibInitialize (
       //\r
       CollectProcessorCount (CpuMpData);\r
     }\r
-\r
-    //\r
-    // Load required microcode patches data into memory\r
-    //\r
-    ShadowMicrocodeUpdatePatch (CpuMpData);\r
   } else {\r
     //\r
     // APs have been wakeup before, just get the CPU Information\r
@@ -1762,6 +1753,17 @@ MpInitLibInitialize (
     }\r
   }\r
 \r
+  if (!GetMicrocodePatchInfoFromHob (\r
+         &CpuMpData->MicrocodePatchAddress,\r
+         &CpuMpData->MicrocodePatchRegionSize\r
+         )) {\r
+    //\r
+    // The microcode patch information cache HOB does not exist, which means\r
+    // the microcode patches data has not been loaded into memory yet\r
+    //\r
+    ShadowMicrocodeUpdatePatch (CpuMpData);\r
+  }\r
+\r
   //\r
   // Detect and apply Microcode on BSP\r
   //\r