X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=UefiCpuPkg%2FLibrary%2FMpInitLib%2FMpLib.c;fp=UefiCpuPkg%2FLibrary%2FMpInitLib%2FMpLib.c;h=d0fbc17ce5516ae0ab07bde8460fa07f185b8426;hp=855d37ba3ed8b46bfeea2f3fa625aa2b3281d6a4;hb=348a34d984d5265ae91a6a56f0ccbc613210238d;hpb=d148a178c14babba30f8cfaa724ffc50da258c0a diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c index 855d37ba3e..d0fbc17ce5 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -1682,10 +1682,6 @@ MpInitLibInitialize ( CpuMpData->SwitchBspFlag = FALSE; CpuMpData->CpuData = (CPU_AP_DATA *) (CpuMpData + 1); CpuMpData->CpuInfoInHob = (UINT64) (UINTN) (CpuMpData->CpuData + MaxLogicalProcessorNumber); - if (OldCpuMpData != NULL) { - CpuMpData->MicrocodePatchRegionSize = OldCpuMpData->MicrocodePatchRegionSize; - CpuMpData->MicrocodePatchAddress = OldCpuMpData->MicrocodePatchAddress; - } InitializeSpinLock(&CpuMpData->MpLock); // @@ -1740,11 +1736,6 @@ MpInitLibInitialize ( // CollectProcessorCount (CpuMpData); } - - // - // Load required microcode patches data into memory - // - ShadowMicrocodeUpdatePatch (CpuMpData); } else { // // APs have been wakeup before, just get the CPU Information @@ -1762,6 +1753,17 @@ MpInitLibInitialize ( } } + if (!GetMicrocodePatchInfoFromHob ( + &CpuMpData->MicrocodePatchAddress, + &CpuMpData->MicrocodePatchRegionSize + )) { + // + // The microcode patch information cache HOB does not exist, which means + // the microcode patches data has not been loaded into memory yet + // + ShadowMicrocodeUpdatePatch (CpuMpData); + } + // // Detect and apply Microcode on BSP //