• Max Krasnyansky's avatar
    cpu hotplug: Make cpu_active_map synchronization dependency clear · 39b0fad7
    Max Krasnyansky authored
    This goes on top of the cpu_active_map (take 2) patch.
    
    Currently we depend on the stop_machine to provide nescessesary
    synchronization for the cpu_active_map updates.
    As Dmitry Adamushko pointed this is fragile and is not much clearer
    than the previous scheme. In other words we do not want to depend on
    the internal stop machine operation here.
    So make the synchronization rules clear by doing synchronize_sched()
    after clearing out cpu active bit.
    
    Tested on quad-Core2 with:
    
       while true; do
          for i in 1 2 3; do
            echo 0 > /sys/devices/system/cpu/cpu$i/online
          done
          for i in 1 2 3; do
            echo 1 > /sys/devices/system/cpu/cpu$i/online
          done
       done
    and
       stress -c 200
    
    No lockdep, preempt or other complaints.
    Signed-off-by: default avatarMax Krasnyansky <maxk@qualcomm.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    39b0fad7
cpu.c 10.6 KB