forked from luck/tmp_suning_uos_patched
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@devnote2 Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
4114fbfd02
commit
ba0fbfbb21
|
@ -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,
|
||||
};
|
||||
|
||||
/*
|
||||
* 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)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
err = dyn_event_register(&synth_event_ops);
|
||||
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 = dyn_event_register(&synth_event_ops);
|
||||
if (err) {
|
||||
pr_warn("Could not register synth_event_ops\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user