rcu: Handle outgoing CPUs on exit from idle loop
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 28 Jan 2015 22:42:09 +0000 (14:42 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 12 Mar 2015 22:19:38 +0000 (15:19 -0700)
commit88428cc5c27c63a4313e213813bc39b9899224d5
tree1bfd3c82b87c1c73cf7eeb1fcda4dc1cbe6b622c
parent528a25b00e1f84eaba6c98e63f58ee0a8e472102
rcu: Handle outgoing CPUs on exit from idle loop

This commit informs RCU of an outgoing CPU just before that CPU invokes
arch_cpu_idle_dead() during its last pass through the idle loop (via a
new CPU_DYING_IDLE notifier value).  This change means that RCU need not
deal with outgoing CPUs passing through the scheduler after informing
RCU that they are no longer online.  Note that removing the CPU from
the rcu_node ->qsmaskinit bit masks is done at CPU_DYING_IDLE time,
and orphaning callbacks is still done at CPU_DEAD time, the reason being
that at CPU_DEAD time we have another CPU that can adopt them.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
include/linux/cpu.h
include/linux/rcupdate.h
kernel/rcu/tree.c
kernel/sched/idle.c