Thomas Gleixner
e69aab1311
cpu/hotplug: Make wait for dead cpu completion based
...
Kill the busy spinning on the control side and just wait for the hotplugged
cpu to tell that it reached the dead state.
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.776157858@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:58 +01:00
Thomas Gleixner
8df3e07e7f
cpu/hotplug: Let upcoming cpu bring itself fully up
...
Let the upcoming cpu kick the hotplug thread and let itself complete the
bringup. That way the controll side can just wait for the completion or later
when we made the hotplug machinery async not care at all.
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.697655464@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:57 +01:00
Thomas Gleixner
fc6d73d674
arch/hotplug: Call into idle with a proper state
...
Let the non boot cpus call into idle with the corresponding hotplug state, so
the hotplug core can handle the further bringup. That's a first step to
convert the boot side of the hotplugged cpus to do all the synchronization
with the other side through the state machine. For now it'll only start the
hotplug thread and kick the full bringup of the cpu.
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.614102639@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:57 +01:00
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