rcu: Make hot-unplugged CPU relinquish its own RCU callbacks
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 7 Oct 2009 04:48:17 +0000 (21:48 -0700)
committerIngo Molnar <mingo@elte.hu>
Wed, 7 Oct 2009 06:11:20 +0000 (08:11 +0200)
commite74f4c4564455c91a3b4075bb1721993c2a95dda
tree213f9df0974c6e1e729de207b2c6dd942a39ba8c
parentd0ec774cb2599c858be9d923bb873cf6697520d8
rcu: Make hot-unplugged CPU relinquish its own RCU callbacks

The current interaction between RCU and CPU hotplug requires that
RCU block in CPU notifiers waiting for callbacks to drain.

This can be greatly simplified by having each CPU relinquish its
own callbacks, and for both _rcu_barrier() and CPU_DEAD notifiers
to adopt all callbacks that were previously relinquished.

This change also eliminates the possibility of certain types of
hangs due to the previous practice of waiting for callbacks to be
invoked from within CPU notifiers.  If you don't every wait, you
cannot hang.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: akpm@linux-foundation.org
Cc: mathieu.desnoyers@polymtl.ca
Cc: josh@joshtriplett.org
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
Cc: rostedt@goodmis.org
Cc: Valdis.Kletnieks@vt.edu
Cc: dhowells@redhat.com
LKML-Reference: <1254890898456-git-send-email->
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/rcutree.c
kernel/rcutree.h
kernel/rcutree_plugin.h
kernel/rcutree_trace.c