diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2010-03-30 06:40:36 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2010-05-10 14:08:31 -0400 |
commit | 5db356736acb9ba717df1aa9444e4e44cbb30a71 (patch) | |
tree | 719d734fc3ef0f5fca3a7bf12a00dccfde278864 /kernel/rcutree_plugin.h | |
parent | 0c34029abdfdea64420cb4264c4e91a776b22157 (diff) |
rcu: ignore offline CPUs in last non-dyntick-idle CPU check
Offline CPUs are not in nohz_cpu_mask, but can be ignored when checking
for the last non-dyntick-idle CPU. This patch therefore only checks
online CPUs for not being dyntick idle, allowing fast entry into
full-system dyntick-idle state even when there are some offline CPUs.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutree_plugin.h')
-rw-r--r-- | kernel/rcutree_plugin.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h index 79b53bda8943..687c4e90722e 100644 --- a/kernel/rcutree_plugin.h +++ b/kernel/rcutree_plugin.h | |||
@@ -1016,7 +1016,7 @@ int rcu_needs_cpu(int cpu) | |||
1016 | 1016 | ||
1017 | /* Don't bother unless we are the last non-dyntick-idle CPU. */ | 1017 | /* Don't bother unless we are the last non-dyntick-idle CPU. */ |
1018 | for_each_cpu_not(thatcpu, nohz_cpu_mask) | 1018 | for_each_cpu_not(thatcpu, nohz_cpu_mask) |
1019 | if (thatcpu != cpu) { | 1019 | if (cpu_online(thatcpu) && thatcpu != cpu) { |
1020 | per_cpu(rcu_dyntick_drain, cpu) = 0; | 1020 | per_cpu(rcu_dyntick_drain, cpu) = 0; |
1021 | per_cpu(rcu_dyntick_holdoff, cpu) = jiffies - 1; | 1021 | per_cpu(rcu_dyntick_holdoff, cpu) = jiffies - 1; |
1022 | return rcu_needs_cpu_quick_check(cpu); | 1022 | return rcu_needs_cpu_quick_check(cpu); |