Skip to content
  • Thomas Gleixner's avatar
    x86/apic: Add static key to Control IPI shorthands · 6a1cb5f5
    Thomas Gleixner authored
    
    
    The IPI shorthand functionality delivers IPI/NMI broadcasts to all CPUs in
    the system. This can have similar side effects as the MCE broadcasting when
    CPUs are waiting in the BIOS or are offlined.
    
    The kernel tracks already the state of offlined CPUs whether they have been
    brought up at least once so that the CR4 MCE bit is set to make sure that
    MCE broadcasts can't brick the machine.
    
    Utilize that information and compare it to the cpu_present_mask. If all
    present CPUs have been brought up at least once then the broadcast side
    effect is mitigated by disabling regular interrupt/IPI delivery in the APIC
    itself and by the cpu offline check at the begin of the NMI handler.
    
    Use a static key to switch between broadcasting via shorthands or sending
    the IPI/NMI one by one.
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20190722105220.386410643@linutronix.de
    6a1cb5f5