summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg
diff options
context:
space:
mode:
authorSiyuan, Fu <siyuan.fu@intel.com>2020-01-03 14:59:27 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-01-08 02:49:40 +0000
commit396e791059f37062cbee85696e2b4186ec72a9e3 (patch)
tree2c6f33525b6ef9c137e1a3ce9d73cb1b32c5a8ba /UefiCpuPkg
parent08a475df10b75f84cdeb9b11e38f8eee9b5c048d (diff)
downloadedk2-396e791059f37062cbee85696e2b4186ec72a9e3.tar.gz
edk2-396e791059f37062cbee85696e2b4186ec72a9e3.tar.bz2
edk2-396e791059f37062cbee85696e2b4186ec72a9e3.zip
UefiCpuPkg: Always load microcode patch on AP processor.
This patch updates the microcode loader to always perform a microcode detect and load on both BSP and AP processor. This is to fix a potential microcode revision mismatch issue in below situation: 1. Assume there are two microcode co-exists in flash: one production version and one debug version microcode. 2. FIT loads production microcode to BSP and all AP. 3. UefiCpuPkg loader loads debug microcode to BSP, and skip the loading on AP. As a result, different microcode patches are loaded to BSP and AP, and trigger microcode mismatch error during OS boot. BZ link: https://bugzilla.tianocore.org/show_bug.cgi?id=2431 Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Signed-off-by: Siyuan Fu <siyuan.fu@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
Diffstat (limited to 'UefiCpuPkg')
-rw-r--r--UefiCpuPkg/Library/MpInitLib/Microcode.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/UefiCpuPkg/Library/MpInitLib/Microcode.c b/UefiCpuPkg/Library/MpInitLib/Microcode.c
index a9d06dd409..8f4d4da40c 100644
--- a/UefiCpuPkg/Library/MpInitLib/Microcode.c
+++ b/UefiCpuPkg/Library/MpInitLib/Microcode.c
@@ -105,12 +105,6 @@ MicrocodeDetect (
CurrentRevision = GetCurrentMicrocodeSignature ();
IsBspCallIn = (ProcessorNumber == (UINTN)CpuMpData->BspNumber) ? TRUE : FALSE;
- if (CurrentRevision != 0 && !IsBspCallIn) {
- //
- // Skip loading microcode if it has been loaded successfully
- //
- return;
- }
GetProcessorLocationByApicId (GetInitialApicId (), NULL, NULL, &ThreadId);
if (ThreadId != 0) {