• Thomas Gleixner's avatar
    x86/microcode/intel: Simplify early loading · dd5e3e3c
    Thomas Gleixner authored
    The early loading code is overly complicated:
    
      - It scans the builtin/initrd for microcode not only on the BSP, but also
        on all APs during early boot and then later in the boot process it
        scans again to duplicate and save the microcode before initrd goes
        away.
    
        That's a pointless exercise because this can be simply done before
        bringing up the APs when the memory allocator is up and running.
    
     - Saving the microcode from within the scan loop is completely
       non-obvious and a left over of the microcode cache.
    
       This can be done at the call site now which makes it obvious.
    
    Rework the code so that only the BSP scans the builtin/initrd microcode
    once during early boot and save it away in an early initcall for later
    use.
    
      [ bp: Test and fold in a fix from tglx ontop which handles the need to
        distinguish what save_microcode() does depending on when it is
        called:
    
         - when on the BSP during early load, it needs to find a newer
           revision than the one currently loaded on the BSP
    
         - later, before SMP init, it still runs on the BSP and gets the BSP
           revision just loaded and uses that revision to know which patch
           to save for the APs. For that it needs to find the exact one as
           on the BSP.
       ]
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20231017211722.629085215@linutronix.de
    dd5e3e3c
core.c 13.6 KB