• Thomas Gleixner's avatar
    cpu/hotplug: Fix SMT supported evaluation · 4d3579f7
    Thomas Gleixner authored
    commit bc2d8d26 upstream.
    
    Josh reported that the late SMT evaluation in cpu_smt_state_init() sets
    cpu_smt_control to CPU_SMT_NOT_SUPPORTED in case that 'nosmt' was supplied
    on the kernel command line as it cannot differentiate between SMT disabled
    by BIOS and SMT soft disable via 'nosmt'. That wreckages the state and
    makes the sysfs interface unusable.
    
    Rework this so that during bringup of the non boot CPUs the availability of
    SMT is determined in cpu_smt_allowed(). If a newly booted CPU is not a
    'primary' thread then set the local cpu_smt_available marker and evaluate
    this explicitely right after the initial SMP bringup has finished.
    
    SMT evaulation on x86 is a trainwreck as the firmware has all the
    information _before_ booting the kernel, but there is no interface to query
    it.
    
    Fixes: 73d5e2b4 ("cpu/hotplug: detect SMT disabled by BIOS")
    Reported-by: 's avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: 's avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: 's avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4d3579f7
smp.c 21.3 KB