Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 669f08a9 authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Paul Lawrence
Browse files

UPSTREAM: tracing: Move enabling tracepoints to just after rcu_init()

Enabling tracepoints at boot up can be very useful. The tracepoint
can be initialized right after RCU has been. There's no need to
wait for the early_initcall() to be called. That's too late for some
things that can use tracepoints for debugging. Move the logic to
enable tracepoints out of the initcalls and into init/main.c to
right after rcu_init().

This also allows trace_printk() to be used early too.

Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1412121539300.16494@nanos
Link: http://lkml.kernel.org/r/20141214164104.307127356@goodmis.org



Reviewed-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Suggested-by: default avatarThomas Gleixner <tglx@linutronix.de>
Tested-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>

Bug: 31856701
Change-Id: I4cf16958f1e7b3842465649328f98196e3be01da
(cherry picked from commit 5f893b2639b21ffe6834b1aebba392c37d2b83f9)
Signed-off-by: default avatarPaul Lawrence <paullawrence@google.com>
parent 66906fb5
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -39,6 +39,12 @@
# define FTRACE_FORCE_LIST_FUNC 0
# define FTRACE_FORCE_LIST_FUNC 0
#endif
#endif


/* Main tracing buffer and events set up */
#ifdef CONFIG_TRACING
void trace_init(void);
#else
static inline void trace_init(void) { }
#endif


struct module;
struct module;
struct ftrace_hash;
struct ftrace_hash;
+4 −0
Original line number Original line Diff line number Diff line
@@ -574,6 +574,10 @@ asmlinkage __visible void __init start_kernel(void)
		local_irq_disable();
		local_irq_disable();
	idr_init_cache();
	idr_init_cache();
	rcu_init();
	rcu_init();

	/* trace_printk() and trace points may be used after this */
	trace_init();

	context_tracking_init();
	context_tracking_init();
	radix_tree_init();
	radix_tree_init();
	/* init some links before init_ISA_irqs() */
	/* init some links before init_ISA_irqs() */
+7 −1
Original line number Original line Diff line number Diff line
@@ -6976,6 +6976,13 @@ out:
	return ret;
	return ret;
}
}


void __init trace_init(void)
{
	tracer_alloc_buffers();
	init_ftrace_syscalls();
	trace_event_init();	
}

__init static int clear_boot_tracer(void)
__init static int clear_boot_tracer(void)
{
{
	/*
	/*
@@ -6995,6 +7002,5 @@ __init static int clear_boot_tracer(void)
	return 0;
	return 0;
}
}


early_initcall(tracer_alloc_buffers);
fs_initcall(tracer_init_debugfs);
fs_initcall(tracer_init_debugfs);
late_initcall(clear_boot_tracer);
late_initcall(clear_boot_tracer);
+13 −0
Original line number Original line Diff line number Diff line
@@ -1311,4 +1311,17 @@ int perf_ftrace_event_register(struct ftrace_event_call *call,
#define perf_ftrace_event_register NULL
#define perf_ftrace_event_register NULL
#endif
#endif


#ifdef CONFIG_FTRACE_SYSCALLS
void init_ftrace_syscalls(void);
#else
static inline void init_ftrace_syscalls(void) { }
#endif

#ifdef CONFIG_EVENT_TRACING
void trace_event_init(void);
#else
static inline void __init trace_event_init(void) { }
#endif


#endif /* _LINUX_KERNEL_TRACE_H */
#endif /* _LINUX_KERNEL_TRACE_H */
+8 −2
Original line number Original line Diff line number Diff line
@@ -2477,8 +2477,14 @@ static __init int event_trace_init(void)
#endif
#endif
	return 0;
	return 0;
}
}
early_initcall(event_trace_memsetup);

core_initcall(event_trace_enable);
void __init trace_event_init(void)
{
	event_trace_memsetup();
	init_ftrace_syscalls();
	event_trace_enable();
}

fs_initcall(event_trace_init);
fs_initcall(event_trace_init);


#ifdef CONFIG_FTRACE_STARTUP_TEST
#ifdef CONFIG_FTRACE_STARTUP_TEST
Loading