tracing: Split tracing initialization into two for early initialization

Create an early_trace_init() function that will initialize the buffers and
allow for ealier use of trace_printk(). This will also allow for future work
to have function tracing start earlier at boot up.

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
Steven Rostedt (VMware) 2017-03-03 13:37:33 -05:00
parent 97da3854c5
commit e725c731e3
3 changed files with 11 additions and 2 deletions

View File

@ -42,8 +42,10 @@
/* Main tracing buffer and events set up */
#ifdef CONFIG_TRACING
void trace_init(void);
void early_trace_init(void);
#else
static inline void trace_init(void) { }
static inline void early_trace_init(void) { }
#endif
struct module;

View File

@ -545,6 +545,9 @@ asmlinkage __visible void __init start_kernel(void)
trap_init();
mm_init();
/* trace_printk can be enabled here */
early_trace_init();
/*
* Set up the scheduler prior starting any interrupts (such as the
* timer interrupt). Full topology setup happens at smp_init()
@ -570,7 +573,7 @@ asmlinkage __visible void __init start_kernel(void)
rcu_init();
/* trace_printk() and trace points may be used after this */
/* Trace events are available after this */
trace_init();
context_tracking_init();

View File

@ -7999,7 +7999,7 @@ __init static int tracer_alloc_buffers(void)
return ret;
}
void __init trace_init(void)
void __init early_trace_init(void)
{
if (tracepoint_printk) {
tracepoint_print_iter =
@ -8010,6 +8010,10 @@ void __init trace_init(void)
static_key_enable(&tracepoint_printk_key.key);
}
tracer_alloc_buffers();
}
void __init trace_init(void)
{
trace_event_init();
}