• Borislav Petkov's avatar
    x86, microcode: Sanitize per-cpu microcode reloading interface · 87b98a1d
    Borislav Petkov authored
    commit c9fc3f77 upstream.
    
    Microcode reloading in a per-core manner is a very bad idea for both
    major x86 vendors. And the thing is, we have such interface with which
    we can end up with different microcode versions applied on different
    cores of an otherwise homogeneous wrt (family,model,stepping) system.
    
    So turn off the possibility of doing that per core and allow it only
    system-wide.
    
    This is a minimal fix which we'd like to see in stable too thus the
    more-or-less arbitrary decision to allow system-wide reloading only on
    the BSP:
    
    $ echo 1 > /sys/devices/system/cpu/cpu0/microcode/reload
    ...
    
    and disable the interface on the other cores:
    
    $ echo 1 > /sys/devices/system/cpu/cpu23/microcode/reload
    -bash: echo: write error: Invalid argument
    
    Also, allowing the reload only from one CPU (the BSP in
    that case) doesn't allow the reload procedure to degenerate
    into an O(n^2) deal when triggering reloads from all
    /sys/devices/system/cpu/cpuX/microcode/reload sysfs nodes
    simultaneously.
    
    A more generic fix will follow.
    
    Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
    Link: http://lkml.kernel.org/r/1340280437-7718-2-git-send-email-bp@amd64.orgSigned-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    87b98a1d
microcode_core.c 14.3 KB