rcu: Make TASKS_RCU handle nohz_full= CPUs
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 5 Aug 2014 00:43:50 +0000 (17:43 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 7 Sep 2014 23:27:30 +0000 (16:27 -0700)
commit176f8f7a52cc6d09d686f0d900abda6942a52fbb
treebd3d6a8f21e576a94d1e1812c5c5317f62d1c96d
parent84a8f446ffd70c2799a96268aaa4d47c22a83ff0
rcu: Make TASKS_RCU handle nohz_full= CPUs

Currently TASKS_RCU would ignore a CPU running a task in nohz_full=
usermode execution.  There would be neither a context switch nor a
scheduling-clock interrupt to tell TASKS_RCU that the task in question
had passed through a quiescent state.  The grace period would therefore
extend indefinitely.  This commit therefore makes RCU's dyntick-idle
subsystem record the task_struct structure of the task that is running
in dyntick-idle mode on each CPU.  The TASKS_RCU grace period can
then access this information and record a quiescent state on
behalf of any CPU running in dyntick-idle usermode.

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