Hi Steve, On Fri, Mar 23, 2018 at 8:02 AM, Steven Rostedt <rost...@goodmis.org> wrote: > A while ago we had a boot tracer. But it was eventually removed: > commit 30dbb20e68e6f ("tracing: Remove boot tracer"). > > The rational was because there is already a initcall_debug boot option > that causes printk()s of all the initcall functions. > > The problem with the initcall_debug option is that printk() is awfully slow, > and makes it difficult to see the real impact of initcalls. Mainly because > a single printk() is usually slower than most initcall functions. > > Instead of bringing back the boot tracer, adding trace events around the > initcall functions, and even one to denote which level the initcall > functions are being called from, adds the necessary information to > analyze the initcalls without the high overhead of printk()s, that > can substantially slow down the boot process. > > Another positive, is that the console initcall functions themselves > can also be traced. The timestamps are not operational at that time > but you can see which consoles are being registered. I saw this on > one of my test boxes: > > <idle>-0 [000] ...1 0.000000: initcall_level: level=console > <idle>-0 [000] ...1 0.000000: initcall_start: func=con_init+0x0/0x224 > <idle>-0 [000] ...1 0.000000: initcall_finish: > func=con_init+0x0/0x224 ret=0 > <idle>-0 [000] ...1 0.000000: initcall_start: > func=hvc_console_init+0x0/0x19 > <idle>-0 [000] ...1 0.000000: initcall_finish: > func=hvc_console_init+0x0/0x19 ret=0 > <idle>-0 [000] ...1 0.000000: initcall_start: > func=xen_cons_init+0x0/0x60 > <idle>-0 [000] ...1 0.000000: initcall_finish: > func=xen_cons_init+0x0/0x60 ret=0 > <idle>-0 [000] ...1 0.000000: initcall_start: > func=univ8250_console_init+0x0/0x2d > <idle>-0 [000] ...1 0.000000: initcall_finish: > func=univ8250_console_init+0x0/0x2d ret=0
Will this make initcall_debug not work if CONFIG_TRACEPOINTS is turned off? Although it builds but I think this initcall_debug feature will fail, maybe CONFIG_TRACEPOINTS should be selected somewhere? I recently ran into some issues like this for my preemptirq tracepoints patch (which I will post again soon :D) where lockdep needed the tracepoints and I had to select it. thanks, - Joel