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
//\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
}\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