linux/kernel/rcu
Paul E. McKenney 630c7ed9ca rcu: Don't wake rcuc/X kthreads on NOCB CPUs
Chris Friesen notice that rcuc/X kthreads were consuming CPU even on
NOCB CPUs.  This makes no sense because the only purpose or these
kthreads is to invoke normal (non-offloaded) callbacks, of which there
will never be any on NOCB CPUs.  This problem was due to a bug in
cpu_has_callbacks_ready_to_invoke(), which should have been checking
->nxttail[RCU_NEXT_TAIL] for NULL, but which was instead (incorrectly)
checking ->nxttail[RCU_DONE_TAIL].  Because ->nxttail[RCU_DONE_TAIL] is
never NULL, the only effect is to cause the rcuc/X kthread to execute
when it should not do so.

This commit therefore checks ->nxttail[RCU_NEXT_TAIL], which is NULL
for NOCB CPUs.

Reported-by: Chris Friesen <chris.friesen@windriver.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2017-01-23 11:37:13 -08:00
..
Makefile rcutorture: Add RCU grace-period performance tests 2016-03-31 13:37:38 -07:00
rcu.h rcu: Narrow early boot window of illegal synchronous grace periods 2017-01-14 21:23:48 -08:00
rcuperf.c rcuperf: Consistently insert space between flag and message 2016-08-22 10:06:16 -07:00
rcutorture.c torture: Trace long read-side delays 2016-11-14 10:46:30 -08:00
srcu.c rcu: Add rcu_normal kernel parameter to suppress expediting 2015-12-04 12:26:53 -08:00
sync.c locking, rcu, cgroup: Avoid synchronize_sched() in __cgroup_procs_write() 2016-08-18 15:36:59 +02:00
tiny.c rcu: Remove unneeded rcu_process_callbacks() declarations 2017-01-23 11:32:29 -08:00
tiny_plugin.h rcu: Narrow early boot window of illegal synchronous grace periods 2017-01-14 21:23:48 -08:00
tree.c rcu: Don't wake rcuc/X kthreads on NOCB CPUs 2017-01-23 11:37:13 -08:00
tree.h rcu: Make expedited grace periods recheck dyntick idle state 2016-11-14 10:46:31 -08:00
tree_exp.h rcu: Narrow early boot window of illegal synchronous grace periods 2017-01-14 21:23:48 -08:00
tree_plugin.h rcu: Narrow early boot window of illegal synchronous grace periods 2017-01-14 21:23:48 -08:00
tree_trace.c rcu: Drive expedited grace periods from workqueue 2016-08-22 09:30:25 -07:00
update.c rcu: update: Make RCU_EXPEDITE_BOOT be the default 2017-01-16 16:56:39 -08:00