Commit 6f415672 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt

tracing: Allow tracers to start at core initcall

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: default avatarSteven Rostedt <rostedt@goodmis.org>
parent bcd83ea6
...@@ -2868,7 +2868,7 @@ static int __init ftrace_mod_cmd_init(void) ...@@ -2868,7 +2868,7 @@ static int __init ftrace_mod_cmd_init(void)
{ {
return register_ftrace_command(&ftrace_mod_cmd); 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, static void function_trace_probe_call(unsigned long ip, unsigned long parent_ip,
struct ftrace_ops *op, struct pt_regs *pt_regs) struct ftrace_ops *op, struct pt_regs *pt_regs)
...@@ -4055,7 +4055,7 @@ static int __init ftrace_nodyn_init(void) ...@@ -4055,7 +4055,7 @@ static int __init ftrace_nodyn_init(void)
ftrace_enabled = 1; ftrace_enabled = 1;
return 0; 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 int ftrace_init_dyn_debugfs(struct dentry *d_tracer) { return 0; }
static inline void ftrace_startup_enable(int command) { } static inline void ftrace_startup_enable(int command) { }
......
...@@ -199,7 +199,7 @@ __init static int init_branch_tracer(void) ...@@ -199,7 +199,7 @@ __init static int init_branch_tracer(void)
} }
return register_tracer(&branch_trace); return register_tracer(&branch_trace);
} }
device_initcall(init_branch_tracer); core_initcall(init_branch_tracer);
#else #else
static inline static inline
......
...@@ -411,5 +411,4 @@ static __init int init_function_trace(void) ...@@ -411,5 +411,4 @@ static __init int init_function_trace(void)
init_func_cmd_traceon(); init_func_cmd_traceon();
return register_tracer(&function_trace); return register_tracer(&function_trace);
} }
device_initcall(init_function_trace); core_initcall(init_function_trace);
...@@ -1474,4 +1474,4 @@ static __init int init_graph_trace(void) ...@@ -1474,4 +1474,4 @@ static __init int init_graph_trace(void)
return register_tracer(&graph_trace); return register_tracer(&graph_trace);
} }
device_initcall(init_graph_trace); core_initcall(init_graph_trace);
...@@ -698,4 +698,4 @@ __init static int init_irqsoff_tracer(void) ...@@ -698,4 +698,4 @@ __init static int init_irqsoff_tracer(void)
return 0; return 0;
} }
device_initcall(init_irqsoff_tracer); core_initcall(init_irqsoff_tracer);
...@@ -637,4 +637,4 @@ __init static int init_wakeup_tracer(void) ...@@ -637,4 +637,4 @@ __init static int init_wakeup_tracer(void)
return 0; return 0;
} }
device_initcall(init_wakeup_tracer); core_initcall(init_wakeup_tracer);
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