tracing: make tracer_init_tracefs initcall asynchronous
authorMark-PK Tsai <mark-pk.tsai@mediatek.com>
Tue, 26 Apr 2022 12:24:07 +0000 (20:24 +0800)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Tue, 26 Apr 2022 21:58:52 +0000 (17:58 -0400)
commit6621a7004684bfcff5af4c8e4d37989941f42a6b
tree043f710efee917db850f3c43d7c583f7592b52fc
parentef9188bcc6ca1d8a2ad83e826b548e6820721061
tracing: make tracer_init_tracefs initcall asynchronous

Move trace_eval_init() to subsys_initcall to make it start
earlier.
And to avoid tracer_init_tracefs being blocked by
trace_event_sem which trace_eval_init() hold [1],
queue tracer_init_tracefs() to eval_map_wq to let
the two works being executed sequentially.

It can speed up the initialization of kernel as result
of making tracer_init_tracefs asynchronous.

On my arm64 platform, it reduce ~20ms of 125ms which total
time do_initcalls spend.

Link: https://lkml.kernel.org/r/20220426122407.17042-3-mark-pk.tsai@mediatek.com
[1]: https://lore.kernel.org/r/68d7b3327052757d0cd6359a6c9015a85b437232.camel@pengutronix.de
Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/trace.c