• Thomas Gleixner's avatar
    x86/microcode: Handle "nosmt" correctly · 634ac23a
    Thomas Gleixner authored
    On CPUs where microcode loading is not NMI-safe the SMT siblings which
    are parked in one of the play_dead() variants still react to NMIs.
    
    So if an NMI hits while the primary thread updates the microcode the
    resulting behaviour is undefined. The default play_dead() implementation on
    modern CPUs is using MWAIT which is not guaranteed to be safe against
    a microcode update which affects MWAIT.
    
    Take the cpus_booted_once_mask into account to detect this case and
    refuse to load late if the vendor specific driver does not advertise
    that late loading is NMI safe.
    
    AMD stated that this is safe, so mark the AMD driver accordingly.
    
    This requirement will be partially lifted in later changes.
    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/20231002115903.087472735@linutronix.de
    634ac23a
amd.c 21.1 KB