Skip to content
  • Tejun Heo's avatar
    cpu_stop: implement stop_cpu[s]() · 1142d810
    Tejun Heo authored
    
    
    Implement a simplistic per-cpu maximum priority cpu monopolization
    mechanism.  A non-sleeping callback can be scheduled to run on one or
    multiple cpus with maximum priority monopolozing those cpus.  This is
    primarily to replace and unify RT workqueue usage in stop_machine and
    scheduler migration_thread which currently is serving multiple
    purposes.
    
    Four functions are provided - stop_one_cpu(), stop_one_cpu_nowait(),
    stop_cpus() and try_stop_cpus().
    
    This is to allow clean sharing of resources among stop_cpu and all the
    migration thread users.  One stopper thread per cpu is created which
    is currently named "stopper/CPU".  This will eventually replace the
    migration thread and take on its name.
    
    * This facility was originally named cpuhog and lived in separate
      files but Peter Zijlstra nacked the name and thus got renamed to
      cpu_stop and moved into stop_machine.c.
    
    * Better reporting of preemption leak as per Peter's suggestion.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Dimitri Sivanich <sivanich@sgi.com>
    1142d810