Skip to content
  • Peter Zijlstra's avatar
    smp/hotplug: Rewrite AP state machine core · 4dddfb5f
    Peter Zijlstra authored
    
    
    There is currently no explicit state change on rollback. That is,
    st->bringup, st->rollback and st->target are not consistent when doing
    the rollback.
    
    Rework the AP state handling to be more coherent. This does mean we
    have to do a second AP kick-and-wait for rollback, but since rollback
    is the slow path of a slowpath, this really should not matter.
    
    Take this opportunity to simplify the AP thread function to only run a
    single callback per invocation. This unifies the three single/up/down
    modes is supports. The looping it used to do for up/down are achieved
    by retaining should_run and relying on the main smpboot_thread_fn()
    loop.
    
    (I have most of a patch that does the same for the BP state handling,
    but that's not critical and gets a little complicated because
    CPUHP_BRINGUP_CPU does the AP handoff from a callback, which gets
    recursive @st usage, I still have de-fugly that.)
    
    [ tglx: Move cpuhp_down_callbacks() et al. into the HOTPLUG_CPU section to
      	avoid gcc complaining about unused functions. Make the HOTPLUG_CPU
      	one piece instead of having two consecutive ifdef sections of the
      	same type. ]
    
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: bigeasy@linutronix.de
    Cc: efault@gmx.de
    Cc: rostedt@goodmis.org
    Cc: max.byungchul.park@gmail.com
    Link: https://lkml.kernel.org/r/20170920170546.769658088@infradead.org
    
    4dddfb5f