rcu: Avoid needlessly IPIing CPUs at GP end
authorPaul E. McKenney <paul.mckenney@linaro.org>
Wed, 23 Nov 2011 01:46:19 +0000 (17:46 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 11 Dec 2011 18:32:01 +0000 (10:32 -0800)
commit84ad00cb61f1cb21f0b63bc6f7dc254399eb3830
tree7f275af0caaead54a5e8847afa308f5e2b33997a
parent3084f2f80cc8a1fd66233722d88beac0fe85e26f
rcu: Avoid needlessly IPIing CPUs at GP end

If a CPU enters dyntick-idle mode with callbacks pending, it will need
an IPI at the end of the grace period.  However, if it exits dyntick-idle
mode before the grace period ends, it will be needlessly IPIed at the
end of the grace period.

Therefore, this commit clears the per-CPU rcu_awake_at_gp_end flag
when a CPU determines that it does not need it.  This in turn requires
disabling interrupts across much of rcu_prepare_for_idle() in order to
avoid having nested interrupts clearing this state out from under us.

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