Messages in this thread | | | Date | Tue, 30 Dec 2014 17:59:16 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH] rcu: don't use __this_cpu_* from preemptible context |
| |
On Sun, Dec 28, 2014 at 11:49:40AM -0500, Sasha Levin wrote: > Commit "rcu: Make cond_resched_rcu_qs() apply to normal RCU flavors" has added > debug code which tries to read from __this_cpu in a preemptible code, which > doesn't work too well. > > Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Good catch, queued for 3.20 (same as the offending commit).
Thanx, Paul
> --- > kernel/rcu/tree_trace.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/rcu/tree_trace.c b/kernel/rcu/tree_trace.c > index a9b79ca..fbb6240 100644 > --- a/kernel/rcu/tree_trace.c > +++ b/kernel/rcu/tree_trace.c > @@ -122,7 +122,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) > cpu_is_offline(rdp->cpu) ? '!' : ' ', > ulong2long(rdp->completed), ulong2long(rdp->gpnum), > rdp->passed_quiesce, > - rdp->rcu_qs_ctr_snap == __this_cpu_read(rcu_qs_ctr), > + rdp->rcu_qs_ctr_snap == per_cpu(rcu_qs_ctr, rdp->cpu), > rdp->qs_pending); > seq_printf(m, " dt=%d/%llx/%d df=%lu", > atomic_read(&rdp->dynticks->dynticks), > -- > 1.7.10.4 >
| |