Thomas Gleixner
1cf4f629d9
cpu/hotplug: Move online calls to hotplugged cpu
...
Let the hotplugged cpu invoke the setup/teardown callbacks
(CPU_ONLINE/CPU_DOWN_PREPARE) itself.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-arch@vger.kernel.org
Cc: Rik van Riel <riel@redhat.com >
Cc: Rafael Wysocki <rafael.j.wysocki@intel.com >
Cc: "Srivatsa S. Bhat" <srivatsa@mit.edu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arjan van de Ven <arjan@linux.intel.com >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Paul Turner <pjt@google.com >
Link: http://lkml.kernel.org/r/20160226182341.536364371@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:57 +01:00
Thomas Gleixner
931ef16330
cpu/hotplug: Unpark smpboot threads from the state machine
...
Handle the smpboot threads in the state machine.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-arch@vger.kernel.org
Cc: Rik van Riel <riel@redhat.com >
Cc: Rafael Wysocki <rafael.j.wysocki@intel.com >
Cc: "Srivatsa S. Bhat" <srivatsa@mit.edu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arjan van de Ven <arjan@linux.intel.com >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Paul Turner <pjt@google.com >
Link: http://lkml.kernel.org/r/20160226182341.295777684@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:56 +01:00
Thomas Gleixner
949338e351
cpu/hotplug: Move scheduler cpu_online notifier to hotplug core
...
Move the scheduler cpu online notifier part to the hotplug core. This is
anyway the highest priority callback and we need that functionality right now
for the next changes.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-arch@vger.kernel.org
Cc: Rik van Riel <riel@redhat.com >
Cc: Rafael Wysocki <rafael.j.wysocki@intel.com >
Cc: "Srivatsa S. Bhat" <srivatsa@mit.edu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arjan van de Ven <arjan@linux.intel.com >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Paul Turner <pjt@google.com >
Link: http://lkml.kernel.org/r/20160226182341.200791046@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:55 +01:00
Thomas Gleixner
5b7aa87e04
cpu/hotplug: Implement setup/removal interface
...
Implement function which allow to setup/remove hotplug state callbacks.
The default behaviour for setup is to call the startup function for this state
for (or on) all cpus which have a hotplug state >= the installed state.
The default behaviour for removal is to call the teardown function for this
state for (or on) all cpus which have a hotplug state >= the installed state.
This includes rollback to the previous state in case of failure.
A special state is CPUHP_ONLINE_DYN. Its for dynamically registering a hotplug
callback pair. This is for drivers which have no dependencies to avoid that we
need to allocate CPUHP states for each of them
For both setup and remove helper functions are provided, which prevent the
core to issue the callbacks. This simplifies the conversion of existing
hotplug notifiers.
[ Dynamic registering implemented by Sebastian Siewior ]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-arch@vger.kernel.org
Cc: Rik van Riel <riel@redhat.com >
Cc: Rafael Wysocki <rafael.j.wysocki@intel.com >
Cc: "Srivatsa S. Bhat" <srivatsa@mit.edu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arjan van de Ven <arjan@linux.intel.com >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Paul Turner <pjt@google.com >
Link: http://lkml.kernel.org/r/20160226182341.103464877@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:55 +01:00
Thomas Gleixner
4baa0afc67
cpu/hotplug: Convert the hotplugged cpu work to a state machine
...
Move the functions which need to run on the hotplugged processor into
a state machine array and let the code iterate through these functions.
In a later state, this will grow synchronization points between the
control processor and the hotplugged processor, so we can move the
various architecture implementations of the synchronizations to the
core.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-arch@vger.kernel.org
Cc: Rik van Riel <riel@redhat.com >
Cc: Rafael Wysocki <rafael.j.wysocki@intel.com >
Cc: "Srivatsa S. Bhat" <srivatsa@mit.edu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arjan van de Ven <arjan@linux.intel.com >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Paul Turner <pjt@google.com >
Link: http://lkml.kernel.org/r/20160226182340.770651526@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:54 +01:00
Thomas Gleixner
cff7d378d3
cpu/hotplug: Convert to a state machine for the control processor
...
Move the split out steps into a callback array and let the cpu_up/down
code iterate through the array functions. For now most of the
callbacks are asymmetric to resemble the current hotplug maze.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-arch@vger.kernel.org
Cc: Rik van Riel <riel@redhat.com >
Cc: Rafael Wysocki <rafael.j.wysocki@intel.com >
Cc: "Srivatsa S. Bhat" <srivatsa@mit.edu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arjan van de Ven <arjan@linux.intel.com >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Paul Turner <pjt@google.com >
Link: http://lkml.kernel.org/r/20160226182340.671816690@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:54 +01:00