• Thomas Gleixner's avatar
    cpu/hotplug: Fix smpboot thread ordering · 2a58c527
    Thomas Gleixner authored
    Commit 931ef163 moved the smpboot thread park/unpark invocation to the
    state machine. The move of the unpark invocation was premature as it depends
    on work in progress patches.
    
    As a result cpu down can fail, because rcu synchronization in takedown_cpu()
    eventually requires a functional softirq thread. I never encountered the
    problem in testing, but 0day testing managed to provide a reliable reproducer.
    
    Remove the smpboot_threads_park() call from the state machine for now and put
    it back into the original place after the rcu synchronization.
    
    I'm embarrassed as I knew about the dependency and still managed to get it
    wrong. Hotplug induced brain melt seems to be the only sensible explanation
    for that.
    
    Fixes: 931ef163 "cpu/hotplug: Unpark smpboot threads from the state machine"
    Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    2a58c527
cpu.c 39.7 KB