Messages in this thread | | | Date | Tue, 18 Nov 2008 12:21:19 -0500 (EST) | From | Steven Rostedt <> | Subject | Re: ftrace: preemptoff selftest not working |
| |
On Tue, 18 Nov 2008, Heiko Carstens wrote: > > > > we can drop it in selected initcalls just fine. Its only role is > > old-style init functions racing with other async contexts of > > themselves. > > Something like below works fine for me... > > Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Acked-by: Steven Rostedt <srostedt@redhat.com>
-- Steve
> --- > > kernel/trace/trace.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > Index: linux-2.6/kernel/trace/trace.c > =================================================================== > --- linux-2.6.orig/kernel/trace/trace.c > +++ linux-2.6/kernel/trace/trace.c > @@ -482,6 +482,13 @@ int register_tracer(struct tracer *type) > } > > #ifdef CONFIG_FTRACE_STARTUP_TEST > + /* > + * When this gets called we hold the BKL which means that preemption > + * is disabled. Various trace selftests however need to disable > + * and enable preemption for successful tests. So we drop the BKL here > + * and grab it after the tests again. > + */ > + unlock_kernel(); > if (type->selftest) { > struct tracer *saved_tracer = current_trace; > struct trace_array *tr = &global_trace; > @@ -515,6 +522,7 @@ int register_tracer(struct tracer *type) > } > printk(KERN_CONT "PASSED\n"); > } > + lock_kernel(); > #endif > > type->next = trace_types; > >
| |