diff --git a/UefiCpuPkg/CpuMpPei/Microcode.c b/UefiCpuPkg/CpuMpPei/Microcode.c index 3fd3a8bb81..67280d334d 100644 --- a/UefiCpuPkg/CpuMpPei/Microcode.c +++ b/UefiCpuPkg/CpuMpPei/Microcode.c @@ -53,6 +53,7 @@ MicrocodeDetect ( UINTN Index; UINT8 PlatformId; UINT32 RegEax; + UINT32 CurrentRevision; UINT32 LatestRevision; UINTN TotalSize; UINT32 CheckSum32; @@ -69,6 +70,14 @@ MicrocodeDetect ( return; } + CurrentRevision = GetCurrentMicrocodeSignature (); + if (CurrentRevision != 0) { + // + // Skip loading microcode if it has been loaded successfully + // + return; + } + ExtendedTableLength = 0; // // Here data of CPUID leafs have not been collected into context buffer, so