From: Steven Rostedt on 6 Aug 2010 16:40 On Wed, 2010-07-28 at 00:44 +0200, Marcin Slusarz wrote: > Currently we rely on other code periodically waking up trace reader. > If there aren't any other data than markers, reader will never be woken up. > Fix it. > > Signed-off-by: Marcin Slusarz <marcin.slusarz(a)gmail.com> > Cc: Steven Rostedt <rostedt(a)goodmis.org> > Cc: Frederic Weisbecker <fweisbec(a)gmail.com> > Cc: Ingo Molnar <mingo(a)redhat.com> > --- > kernel/trace/trace.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c > index 086d363..02e04c8 100644 > --- a/kernel/trace/trace.c > +++ b/kernel/trace/trace.c > @@ -1520,6 +1520,7 @@ int trace_array_vprintk(struct trace_array *tr, > if (!filter_check_discard(call, entry, buffer, event)) { > ring_buffer_unlock_commit(buffer, event); > ftrace_trace_stack(buffer, irq_flags, 6, pc); > + trace_wake_up(); > } > This can't work. trace_printk() and friends must be able to be used anywhere. This can cause race conditions with the rq locks in the scheduler. But you do bring up a good idea. That is, perhaps we should have a way to attach to known safe tracepoints that we can hook to to check if a wake up should happen or not. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Steven Rostedt on 6 Aug 2010 17:30 On Fri, 2010-08-06 at 22:55 +0200, Frederic Weisbecker wrote: > > This can't work. trace_printk() and friends must be able to be used > > anywhere. This can cause race conditions with the rq locks in the > > scheduler. > > > > But you do bring up a good idea. That is, perhaps we should have a way > > to attach to known safe tracepoints that we can hook to to check if a > > wake up should happen or not. > > > This could be a simple macro that takes the name of the trace event: > > > DEFINE_EVENT(event_tpl, event_name, ...); > > > TRACE_EVENT_NO_WAKE(event_name); > Yeah, that may be worth doing for 2.6.37. Might as well also add a trace_printk_nowake() too, when you know you are in dangerous locations like the scheduler or NMI. > I think trace events should be wakeable by default as it looks safe for > most of them. But probably we don't want that per event class. > > In the unsafe list, I only have some sched and lock events in > mind, but I bet there are some others. Yep, will put that on my todo list. Thanks, -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|
Pages: 1 Prev: timekeeping updates for 2.6.36 Next: [PATCH 1/1] mouse: add qci touchpad driver |