diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2009-08-27 17:58:16 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-08-29 09:34:39 -0400 |
commit | dd5d19bafd90d33043a4a14b2e2d98612caa293c (patch) | |
tree | c21d547124d277f00332bdb01c75f2f4f321de8c /include/linux/init_task.h | |
parent | 06e799764eb7c2e4640888d438c3524d756613e1 (diff) |
rcu: Create rcutree plugins to handle hotplug CPU for multi-level trees
When offlining CPUs from a multi-level tree, there is the
possibility of offlining the last CPU from a given node when
there are preempted RCU read-side critical sections that
started life on one of the CPUs on that node.
In this case, the corresponding tasks will be enqueued via the
task_struct's rcu_node_entry list_head onto one of the
rcu_node's blocked_tasks[] lists. These tasks need to be moved
somewhere else so that they will prevent the current grace
period from ending. That somewhere is the root rcu_node.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: akpm@linux-foundation.org
Cc: mathieu.desnoyers@polymtl.ca
Cc: josht@linux.vnet.ibm.com
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
Cc: rostedt@goodmis.org
LKML-Reference: <20090827215816.GA30472@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/init_task.h')
-rw-r--r-- | include/linux/init_task.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 79d4baee31b6..9e7f2e8fc66e 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -98,7 +98,7 @@ extern struct group_info init_groups; | |||
98 | #define INIT_TASK_RCU_PREEMPT(tsk) \ | 98 | #define INIT_TASK_RCU_PREEMPT(tsk) \ |
99 | .rcu_read_lock_nesting = 0, \ | 99 | .rcu_read_lock_nesting = 0, \ |
100 | .rcu_read_unlock_special = 0, \ | 100 | .rcu_read_unlock_special = 0, \ |
101 | .rcu_blocked_cpu = -1, \ | 101 | .rcu_blocked_node = NULL, \ |
102 | .rcu_node_entry = LIST_HEAD_INIT(tsk.rcu_node_entry), | 102 | .rcu_node_entry = LIST_HEAD_INIT(tsk.rcu_node_entry), |
103 | #else | 103 | #else |
104 | #define INIT_TASK_RCU_PREEMPT(tsk) | 104 | #define INIT_TASK_RCU_PREEMPT(tsk) |