tracing: Allow tracers to start at core initcall
authorSteven Rostedt <srostedt@redhat.com>
Fri, 5 Oct 2012 16:13:07 +0000 (12:13 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 31 Oct 2012 20:45:24 +0000 (16:45 -0400)
There's times during debugging that it is helpful to see traces of early
boot functions. But the tracers are initialized at device_initcall()
which is quite late during the boot process. Setting the kernel command
line parameter ftrace=function will not show anything until the function
tracer is initialized. This prevents being able to trace functions before
device_initcall().

There's no reason that the tracers need to be initialized so late in the
boot process. Move them up to core_initcall() as they still need to come
after early_initcall() which initializes the tracing buffers.

Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/ftrace.c
kernel/trace/trace_branch.c
kernel/trace/trace_functions.c
kernel/trace/trace_functions_graph.c
kernel/trace/trace_irqsoff.c
kernel/trace/trace_sched_wakeup.c

index 60ad606dc85f5745f1be82492a497975cd4c9991..4451aa3a55a0f56400d8ae11b12700af1bb53ecf 100644 (file)
@@ -2868,7 +2868,7 @@ static int __init ftrace_mod_cmd_init(void)
 {
        return register_ftrace_command(&ftrace_mod_cmd);
 }
-device_initcall(ftrace_mod_cmd_init);
+core_initcall(ftrace_mod_cmd_init);
 
 static void function_trace_probe_call(unsigned long ip, unsigned long parent_ip,
                                      struct ftrace_ops *op, struct pt_regs *pt_regs)
@@ -4055,7 +4055,7 @@ static int __init ftrace_nodyn_init(void)
        ftrace_enabled = 1;
        return 0;
 }
-device_initcall(ftrace_nodyn_init);
+core_initcall(ftrace_nodyn_init);
 
 static inline int ftrace_init_dyn_debugfs(struct dentry *d_tracer) { return 0; }
 static inline void ftrace_startup_enable(int command) { }
index 8d3538b4ea5f0c93be082c17d92f0ee1787b2fda..bd3e0eef4eaacfa71fe69d09483e1ad6a1afa27b 100644 (file)
@@ -199,7 +199,7 @@ __init static int init_branch_tracer(void)
        }
        return register_tracer(&branch_trace);
 }
-device_initcall(init_branch_tracer);
+core_initcall(init_branch_tracer);
 
 #else
 static inline
index 618dcf8bdb87046880f5ceefb0c14ef5e3fb2d1f..bb227e380cb574f9eb629b5ac162fcab8b34b1b3 100644 (file)
@@ -411,5 +411,4 @@ static __init int init_function_trace(void)
        init_func_cmd_traceon();
        return register_tracer(&function_trace);
 }
-device_initcall(init_function_trace);
-
+core_initcall(init_function_trace);
index 99b4378393d5fae8ea1c8de91032129f52a45216..a84b55879bc482baddfd1d58632bd80d6f5e0d52 100644 (file)
@@ -1474,4 +1474,4 @@ static __init int init_graph_trace(void)
        return register_tracer(&graph_trace);
 }
 
-device_initcall(init_graph_trace);
+core_initcall(init_graph_trace);
index d98ee8283b29a1e204a626f7a311ae2ece2ac971..11edebda454842e33bc87f1b3072f0a06cdf9c15 100644 (file)
@@ -698,4 +698,4 @@ __init static int init_irqsoff_tracer(void)
 
        return 0;
 }
-device_initcall(init_irqsoff_tracer);
+core_initcall(init_irqsoff_tracer);
index 02170c00c413731c91e2f76f6d82f3a09582e053..2f6af7833694c0fe31195a5d8f8e5c82a71a138b 100644 (file)
@@ -637,4 +637,4 @@ __init static int init_wakeup_tracer(void)
 
        return 0;
 }
-device_initcall(init_wakeup_tracer);
+core_initcall(init_wakeup_tracer);