rcu: Allow dyntick-idle mode for CPUs with callbacks
authorPaul E. McKenney <paul.mckenney@linaro.org>
Wed, 2 Nov 2011 13:54:54 +0000 (06:54 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 11 Dec 2011 18:31:43 +0000 (10:31 -0800)
commitaea1b35e29e658d42d7ba2237f3aa7f93e18509d
tree0221b1c12b5c3e3ed7f2bb2ffc957b09891bcb51
parent0989cb46783188ea7346ba6490be0046b9b7a725
rcu: Allow dyntick-idle mode for CPUs with callbacks

Currently, RCU does not permit a CPU to enter dyntick-idle mode if that
CPU has any RCU callbacks queued.  This means that workloads for which
each CPU wakes up and does some RCU updates every few ticks will never
enter dyntick-idle mode.  This can result in significant unnecessary power
consumption, so this patch permits a given to enter dyntick-idle mode if
it has callbacks, but only if that same CPU has completed all current
work for the RCU core.  We determine use rcu_pending() to determine
whether a given CPU has completed all current work for the RCU core.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcutree.c
kernel/rcutree.h
kernel/rcutree_plugin.h