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: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 97da3854
......@@ -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;
......
......@@ -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();
......
......@@ -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();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment