Skip to content

Commit

Permalink
tracing: Split tracing initialization into two for early initialization
Browse files Browse the repository at this point in the history
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) <[email protected]>
  • Loading branch information
rostedt committed Mar 24, 2017
1 parent 97da385 commit e725c73
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 2 deletions.
2 changes: 2 additions & 0 deletions include/linux/ftrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@
/* 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;
Expand Down
5 changes: 4 additions & 1 deletion init/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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();
Expand Down
6 changes: 5 additions & 1 deletion kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -7999,7 +7999,7 @@ __init static int tracer_alloc_buffers(void)
return ret;
}

void __init trace_init(void)
void __init early_trace_init(void)
{
if (tracepoint_printk) {
tracepoint_print_iter =
Expand All @@ -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();
}

Expand Down

0 comments on commit e725c73

Please sign in to comment.