tracing: Split tracing initialization into two for early initialization
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 3 Mar 2017 18:37:33 +0000 (13:37 -0500)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 24 Mar 2017 17:08:43 +0000 (13:08 -0400)
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>
include/linux/ftrace.h
init/main.c
kernel/trace/trace.c

index 3633e8beff39e3ad67409a133109350128607ddd..569db5589851f0b5ec5d79a91f42d542a1aa4c13 100644 (file)
 /* 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;
index f9c9d994820327a3c23db348886fd535190b43e8..81a49e8d54cc8aa65fc4fbc1cfbb58a09a0bc30f 100644 (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();
index f35109514a015c38de8b2e1da99399fd5f399692..6757561d961713a74828e876f5a0cf4d18b3b6fd 100644 (file)
@@ -7999,7 +7999,7 @@ out:
        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();
 }