Re: Testing tracer wakeup_rt: .. no entries found ..FAILED!
From: Paul E. McKenney <hidden>
Date: 2012-08-01 00:18:45
Also in:
lkml
On Tue, Jul 31, 2012 at 08:09:38PM -0400, Steven Rostedt wrote:
On Tue, 2012-07-31 at 16:57 -0700, Paul E. McKenney wrote:quoted
quoted
What was the next lines? I bet you it was "PASSED". Which means it did not fail. This is the second bug you found that has to do with RCU being called in 'idle'. The one that Paul posted a patch for.Though it needs another patch to actually use it in the right place...Right. Something like this:
Looks good to me! Thanx, Paul
quoted hunk ↗ jump to hunk
-- Stevediff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 5638104..d915638 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c@@ -631,7 +631,12 @@ __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu) memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN); max_data->pid = tsk->pid; - max_data->uid = task_uid(tsk); + /* + * task_uid() calls rcu_read_lock, but this can be called + * outside of RCU state monitoring (irq going back to idle). + */ + RCU_NONIDLE(max_data->uid = task_uid(tsk)); + max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO; max_data->policy = tsk->policy; max_data->rt_priority = tsk->rt_priority;