diff options
author | Paul E. McKenney <paul.mckenney@linaro.org> | 2012-08-21 18:00:05 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-09-23 10:41:56 -0400 |
commit | d7d6a11e8609f0319d4a2d8ede348f8b3374b652 (patch) | |
tree | 64a2e3260690a85fe637a3e34c94e8ca540e8fc6 /kernel/rcutree_trace.c | |
parent | 1943c89de700248d68385300a9b5588a1e314f90 (diff) |
rcu: Simplify quiescent-state detection
The current quiescent-state detection algorithm is needlessly
complex. It records the grace-period number corresponding to
the quiescent state at the time of the quiescent state, which
works, but it seems better to simply erase any record of previous
quiescent states at the time that the CPU notices the new grace
period. This has the further advantage of removing another piece
of RCU for which lockless reasoning is required.
Therefore, this commit makes this change.
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Diffstat (limited to 'kernel/rcutree_trace.c')
-rw-r--r-- | kernel/rcutree_trace.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c index f54f0ceda0cf..bd4df13d4afb 100644 --- a/kernel/rcutree_trace.c +++ b/kernel/rcutree_trace.c | |||
@@ -86,12 +86,11 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) | |||
86 | { | 86 | { |
87 | if (!rdp->beenonline) | 87 | if (!rdp->beenonline) |
88 | return; | 88 | return; |
89 | seq_printf(m, "%3d%cc=%lu g=%lu pq=%d pgp=%lu qp=%d", | 89 | seq_printf(m, "%3d%cc=%lu g=%lu pq=%d qp=%d", |
90 | rdp->cpu, | 90 | rdp->cpu, |
91 | cpu_is_offline(rdp->cpu) ? '!' : ' ', | 91 | cpu_is_offline(rdp->cpu) ? '!' : ' ', |
92 | rdp->completed, rdp->gpnum, | 92 | rdp->completed, rdp->gpnum, |
93 | rdp->passed_quiesce, rdp->passed_quiesce_gpnum, | 93 | rdp->passed_quiesce, rdp->qs_pending); |
94 | rdp->qs_pending); | ||
95 | seq_printf(m, " dt=%d/%llx/%d df=%lu", | 94 | seq_printf(m, " dt=%d/%llx/%d df=%lu", |
96 | atomic_read(&rdp->dynticks->dynticks), | 95 | atomic_read(&rdp->dynticks->dynticks), |
97 | rdp->dynticks->dynticks_nesting, | 96 | rdp->dynticks->dynticks_nesting, |
@@ -150,12 +149,11 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp) | |||
150 | { | 149 | { |
151 | if (!rdp->beenonline) | 150 | if (!rdp->beenonline) |
152 | return; | 151 | return; |
153 | seq_printf(m, "%d,%s,%lu,%lu,%d,%lu,%d", | 152 | seq_printf(m, "%d,%s,%lu,%lu,%d,%d", |
154 | rdp->cpu, | 153 | rdp->cpu, |
155 | cpu_is_offline(rdp->cpu) ? "\"N\"" : "\"Y\"", | 154 | cpu_is_offline(rdp->cpu) ? "\"N\"" : "\"Y\"", |
156 | rdp->completed, rdp->gpnum, | 155 | rdp->completed, rdp->gpnum, |
157 | rdp->passed_quiesce, rdp->passed_quiesce_gpnum, | 156 | rdp->passed_quiesce, rdp->qs_pending); |
158 | rdp->qs_pending); | ||
159 | seq_printf(m, ",%d,%llx,%d,%lu", | 157 | seq_printf(m, ",%d,%llx,%d,%lu", |
160 | atomic_read(&rdp->dynticks->dynticks), | 158 | atomic_read(&rdp->dynticks->dynticks), |
161 | rdp->dynticks->dynticks_nesting, | 159 | rdp->dynticks->dynticks_nesting, |
@@ -186,7 +184,7 @@ static int show_rcudata_csv(struct seq_file *m, void *unused) | |||
186 | int cpu; | 184 | int cpu; |
187 | struct rcu_state *rsp; | 185 | struct rcu_state *rsp; |
188 | 186 | ||
189 | seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pgp\",\"pq\","); | 187 | seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pq\","); |
190 | seq_puts(m, "\"dt\",\"dt nesting\",\"dt NMI nesting\",\"df\","); | 188 | seq_puts(m, "\"dt\",\"dt nesting\",\"dt NMI nesting\",\"df\","); |
191 | seq_puts(m, "\"of\",\"qll\",\"ql\",\"qs\""); | 189 | seq_puts(m, "\"of\",\"qll\",\"ql\",\"qs\""); |
192 | #ifdef CONFIG_RCU_BOOST | 190 | #ifdef CONFIG_RCU_BOOST |