Commit ba0fbfbb authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Steven Rostedt (VMware)

tracing/boot, kprobe, synth: Initialize boot-time tracing earlier

Initialize boot-time tracing in core_initcall_sync instead of
fs_initcall, and initialize required tracers (kprobes and synth)
in core_initcall. This will allow the boot-time tracing to trace
__init code from the beginning of postcore_initcall stage.

Link: https://lkml.kernel.org/r/159974155727.478751.7486926132902849578.stgit@devnote2Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 4114fbfd
......@@ -340,5 +340,8 @@ static int __init trace_boot_init(void)
return 0;
}
fs_initcall(trace_boot_init);
/*
* Start tracing at the end of core-initcall, so that it starts tracing
* from the beginning of postcore_initcall.
*/
core_initcall_sync(trace_boot_init);
......@@ -1754,17 +1754,26 @@ static const struct file_operations synth_events_fops = {
.release = seq_release,
};
static __init int trace_events_synth_init(void)
/*
* Register dynevent at core_initcall. This allows kernel to setup kprobe
* events in postcore_initcall without tracefs.
*/
static __init int trace_events_synth_init_early(void)
{
struct dentry *entry = NULL;
int err = 0;
err = dyn_event_register(&synth_event_ops);
if (err) {
if (err)
pr_warn("Could not register synth_event_ops\n");
return err;
}
}
core_initcall(trace_events_synth_init_early);
static __init int trace_events_synth_init(void)
{
struct dentry *entry = NULL;
int err = 0;
err = tracing_init_dentry();
if (err)
goto err;
......
......@@ -1897,8 +1897,8 @@ static __init void setup_boot_kprobe_events(void)
}
/*
* Register dynevent at subsys_initcall. This allows kernel to setup kprobe
* events in fs_initcall without tracefs.
* Register dynevent at core_initcall. This allows kernel to setup kprobe
* events in postcore_initcall without tracefs.
*/
static __init int init_kprobe_trace_early(void)
{
......@@ -1913,7 +1913,7 @@ static __init int init_kprobe_trace_early(void)
return 0;
}
subsys_initcall(init_kprobe_trace_early);
core_initcall(init_kprobe_trace_early);
/* Make a tracefs interface for controlling probe points */
static __init int init_kprobe_trace(void)
......
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