Skip to content

Commit 9a81975

Browse files
ChangSeokBaebp3tk0v
authored andcommitted
x86/microcode/intel: Remove unnecessary cache writeback and invalidation
Currently, an unconditional cache flush is performed during every microcode update. Although the original changelog did not mention a specific erratum, this measure was primarily intended to address a specific microcode bug, the load of which has already been blocked by is_blacklisted(). Therefore, this cache flush is no longer necessary. Additionally, the side effects of doing this have been overlooked. It increases CPU rendezvous time during late loading, where the cache flush takes between 1x to 3.5x longer than the actual microcode update. Remove native_wbinvd() and update the erratum name to align with the latest errata documentation, document ID 334163 Version 022US. [ bp: Zap the flaky documentation URL. ] Fixes: 91df9fd ("x86/microcode/intel: Writeback and invalidate caches before updating microcode") Reported-by: Yan Hua Wu <[email protected]> Reported-by: William Xie <[email protected]> Signed-off-by: Chang S. Bae <[email protected]> Signed-off-by: Borislav Petkov (AMD) <[email protected]> Acked-by: Ashok Raj <[email protected]> Tested-by: Yan Hua Wu <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 42f7652 commit 9a81975

File tree

1 file changed

+2
-8
lines changed
  • arch/x86/kernel/cpu/microcode

1 file changed

+2
-8
lines changed

arch/x86/kernel/cpu/microcode/intel.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -319,12 +319,6 @@ static enum ucode_state __apply_microcode(struct ucode_cpu_info *uci,
319319
return UCODE_OK;
320320
}
321321

322-
/*
323-
* Writeback and invalidate caches before updating microcode to avoid
324-
* internal issues depending on what the microcode is updating.
325-
*/
326-
native_wbinvd();
327-
328322
/* write microcode via MSR 0x79 */
329323
native_wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
330324

@@ -574,14 +568,14 @@ static bool is_blacklisted(unsigned int cpu)
574568
/*
575569
* Late loading on model 79 with microcode revision less than 0x0b000021
576570
* and LLC size per core bigger than 2.5MB may result in a system hang.
577-
* This behavior is documented in item BDF90, #334165 (Intel Xeon
571+
* This behavior is documented in item BDX90, #334165 (Intel Xeon
578572
* Processor E7-8800/4800 v4 Product Family).
579573
*/
580574
if (c->x86_vfm == INTEL_BROADWELL_X &&
581575
c->x86_stepping == 0x01 &&
582576
llc_size_per_core > 2621440 &&
583577
c->microcode < 0x0b000021) {
584-
pr_err_once("Erratum BDF90: late loading with revision < 0x0b000021 (0x%x) disabled.\n", c->microcode);
578+
pr_err_once("Erratum BDX90: late loading with revision < 0x0b000021 (0x%x) disabled.\n", c->microcode);
585579
pr_err_once("Please consider either early loading through initrd/built-in or a potential BIOS update.\n");
586580
return true;
587581
}

0 commit comments

Comments
 (0)