rcu: Fix attempt to avoid unsolicited offloading of callbacks
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Fri, 25 Jul 2014 18:21:47 +0000 (11:21 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 16 Sep 2014 17:07:59 +0000 (10:07 -0700)
commitf4579fc57cf4244057b713b1f73f4dc9f0b11e97
tree7c682f8da323a07e5a6d63ad4ff87cc1baf34e73
parent11ed7f934cb807f26da09547b5946c2e534d1dac
rcu: Fix attempt to avoid unsolicited offloading of callbacks

Commit b58cc46c5f6b (rcu: Don't offload callbacks unless specifically
requested) failed to adjust the callback lists of the CPUs that are
known to be no-CBs CPUs only because they are also nohz_full= CPUs.
This failure can result in callbacks that are posted during early boot
getting stranded on nxtlist for CPUs whose no-CBs property becomes
apparent late, and there can also be spurious warnings about offline
CPUs posting callbacks.

This commit fixes these problems by adding an early-boot rcu_init_nohz()
that properly initializes the no-CBs CPUs.

Note that kernels built with CONFIG_RCU_NOCB_CPU_ALL=y or with
CONFIG_RCU_NOCB_CPU=n do not exhibit this bug.  Neither do kernels
booted without the nohz_full= boot parameter.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Pranith Kumar <bobby.prani@gmail.com>
Tested-by: Paul Gortmaker <paul.gortmaker@windriver.com>
include/linux/rcupdate.h
init/Kconfig
init/main.c
kernel/rcu/tree_plugin.h