€•PÉŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ(/translations/zh_CN/trace/boottime-trace”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/zh_TW/trace/boottime-trace”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/it_IT/trace/boottime-trace”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/ja_JP/trace/boottime-trace”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/ko_KR/trace/boottime-trace”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/pt_BR/trace/boottime-trace”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/sp_SP/trace/boottime-trace”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒB/var/lib/git/docbuild/linux/Documentation/trace/boottime-trace.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒBoot-time tracing”h]”hŒBoot-time tracing”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäh³hÇh´KubhŒ field_body”“”)�”}”(hŒ'Masami Hiramatsu ”h]”hŒ paragraph”“”)�”}”(hŒ&Masami Hiramatsu ”h]”(hŒMasami Hiramatsu <”…”�”}”(hhÿh²hh³Nh´NubhŒ reference”“”)�”}”(hŒmhiramat@kernel.org”h]”hŒmhiramat@kernel.org”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:mhiramat@kernel.org”uh1jhhÿubhŒ>”…”�”}”(hhÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khhùubah}”(h]”h ]”h"]”h$]”h&]”uh1h÷hhäubeh}”(h]”h ]”h"]”h$]”h&]”uh1hâh³hÇh´Khhßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj5h²hh³hÇh´K ubhþ)�”}”(hXqBoot-time tracing allows users to trace boot-time process including device initialization with full features of ftrace including per-event filter and actions, histograms, kprobe-events and synthetic-events, and trace instances. Since kernel command line is not enough to control these complex features, this uses bootconfig file to describe tracing feature programming.”h]”hXqBoot-time tracing allows users to trace boot-time process including device initialization with full features of ftrace including per-event filter and actions, histograms, kprobe-events and synthetic-events, and trace instances. Since kernel command line is not enough to control these complex features, this uses bootconfig file to describe tracing feature programming.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K hj5h²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOptions in the Boot Config”h]”hŒOptions in the Boot Config”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj\h²hh³hÇh´Kubhþ)�”}”(hŒÙHere is the list of available options for boot time tracing in boot config file [1]_. All options are under "ftrace." or "kernel." prefix. See kernel parameters for the options which starts with "kernel." prefix [2]_.”h]”(hŒPHere is the list of available options for boot time tracing in boot config file ”…”�”}”(hjmh²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[1]_”h]”hŒ1”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œrefid”Œid3”Œdocname”Œtrace/boottime-trace”uh1juhjmŒresolved”KubhŒŒ. All options are under “ftrace.â€� or “kernel.â€� prefix. See kernel parameters for the options which starts with “kernel.â€� prefix ”…”�”}”(hjmh²hh³Nh´Nubjv)�”}”(hŒ[2]_”h]”hŒ2”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”j†Œid4”jˆj‰uh1juhjmjŠKubhŒ.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khj\h²hubhŒfootnote”“”)�”}”(hŒ@See :ref:`Documentation/admin-guide/bootconfig.rst `”h]”(hŒlabel”“”)�”}”(hŒ1”h]”hŒ1”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯hj«ubhþ)�”}”(hj­h]”(hŒSee ”…”�”}”(hj¿h²hh³Nh´Nubh)�”}”(hŒ<:ref:`Documentation/admin-guide/bootconfig.rst `”h]”hŒinline”“”)�”}”(hjÈh]”hŒ(Documentation/admin-guide/bootconfig.rst”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jÊhjÆubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‰Œ refdomain”j׌reftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ bootconfig”uh1hh³hÇh´Khj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khj«ubeh}”(h]”j‡ah ]”h"]”Œ1”ah$]”h&]”j�ajˆj‰uh1j©h³hÇh´Khj\h²hjŠKubjª)�”}”(hŒNSee :ref:`Documentation/admin-guide/kernel-parameters.rst ` ”h]”(j°)�”}”(hŒ2”h]”hŒ2”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯hj÷ubhþ)�”}”(hŒMSee :ref:`Documentation/admin-guide/kernel-parameters.rst `”h]”(hŒSee ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒI:ref:`Documentation/admin-guide/kernel-parameters.rst `”h]”jË)�”}”(hjh]”hŒ/Documentation/admin-guide/kernel-parameters.rst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jÖŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jÊhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‰Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjèŒkernelparameters”uh1hh³hÇh´Khj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khj÷ubeh}”(h]”jžah ]”h"]”Œ2”ah$]”h&]”j™ajˆj‰uh1j©h³hÇh´Khj\h²hjŠKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFtrace Global Options”h]”hŒFtrace Global Options”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj>h²hh³hÇh´Kubhþ)�”}”(hŒ‰Ftrace global options have "kernel." prefix in boot config, which means these options are passed as a part of kernel legacy command line.”h]”hŒ�Ftrace global options have “kernel.â€� prefix in boot config, which means these options are passed as a part of kernel legacy command line.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K!hj>h²hubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ?kernel.tp_printk Output trace-event data on printk buffer too. ”h]”(hŒterm”“”)�”}”(hŒkernel.tp_printk”h]”hŒkernel.tp_printk”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K%hjdubhŒ definition”“”)�”}”(hhh]”hþ)�”}”(hŒ-Output trace-event data on printk buffer too.”h]”hŒ-Output trace-event data on printk buffer too.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K%hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K%hj_ubjc)�”}”(hŒŸkernel.dump_on_oops [= MODE] Dump ftrace on Oops. If MODE = 1 or omitted, dump trace buffer on all CPUs. If MODE = 2, dump a buffer on a CPU which kicks Oops. ”h]”(ji)�”}”(hŒkernel.dump_on_oops [= MODE]”h]”hŒkernel.dump_on_oops [= MODE]”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K)hj—ubjy)�”}”(hhh]”hþ)�”}”(hŒ�Dump ftrace on Oops. If MODE = 1 or omitted, dump trace buffer on all CPUs. If MODE = 2, dump a buffer on a CPU which kicks Oops.”h]”hŒ�Dump ftrace on Oops. If MODE = 1 or omitted, dump trace buffer on all CPUs. If MODE = 2, dump a buffer on a CPU which kicks Oops.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K(hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K)hj_h²hubjc)�”}”(hŒ=kernel.traceoff_on_warning Stop tracing if WARN_ON() occurs. ”h]”(ji)�”}”(hŒkernel.traceoff_on_warning”h]”hŒkernel.traceoff_on_warning”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K,hjÆubjy)�”}”(hhh]”hþ)�”}”(hŒ!Stop tracing if WARN_ON() occurs.”h]”hŒ!Stop tracing if WARN_ON() occurs.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K,hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K,hj_h²hubjc)�”}”(hŒUkernel.fgraph_max_depth = MAX_DEPTH Set MAX_DEPTH to maximum depth of fgraph tracer. ”h]”(ji)�”}”(hŒ#kernel.fgraph_max_depth = MAX_DEPTH”h]”hŒ#kernel.fgraph_max_depth = MAX_DEPTH”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K/hjõubjy)�”}”(hhh]”hþ)�”}”(hŒ0Set MAX_DEPTH to maximum depth of fgraph tracer.”h]”hŒ0Set MAX_DEPTH to maximum depth of fgraph tracer.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K/hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K/hj_h²hubjc)�”}”(hŒRkernel.fgraph_filters = FILTER[, FILTER2...] Add fgraph tracing function filters. ”h]”(ji)�”}”(hŒ,kernel.fgraph_filters = FILTER[, FILTER2...]”h]”hŒ,kernel.fgraph_filters = FILTER[, FILTER2...]”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K2hj$ubjy)�”}”(hhh]”hþ)�”}”(hŒ$Add fgraph tracing function filters.”h]”hŒ$Add fgraph tracing function filters.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K2hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K2hj_h²hubjc)�”}”(hŒXkernel.fgraph_notraces = FILTER[, FILTER2...] Add fgraph non-tracing function filters. ”h]”(ji)�”}”(hŒ-kernel.fgraph_notraces = FILTER[, FILTER2...]”h]”hŒ-kernel.fgraph_notraces = FILTER[, FILTER2...]”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K6hjSubjy)�”}”(hhh]”hþ)�”}”(hŒ(Add fgraph non-tracing function filters.”h]”hŒ(Add fgraph non-tracing function filters.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K5hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K6hj_h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]hj>h²hh³hÇh´Nubeh}”(h]”Œftrace-global-options”ah ]”h"]”Œftrace global options”ah$]”h&]”uh1hÈhj\h²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFtrace Per-instance Options”h]”hŒFtrace Per-instance Options”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj�h²hh³hÇh´K9ubhþ)�”}”(hŒIThese options can be used for each instance including global ftrace node.”h]”hŒIThese options can be used for each instance including global ftrace node.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K;hj�h²hubj^)�”}”(hhh]”(jc)�”}”(hŒTftrace.[instance.INSTANCE.]options = OPT1[, OPT2[...]] Enable given ftrace options. ”h]”(ji)�”}”(hŒ6ftrace.[instance.INSTANCE.]options = OPT1[, OPT2[...]]”h]”hŒ6ftrace.[instance.INSTANCE.]options = OPT1[, OPT2[...]]”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K>hj²ubjy)�”}”(hhh]”hþ)�”}”(hŒEnable given ftrace options.”h]”hŒEnable given ftrace options.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K>hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K>hj¯ubjc)�”}”(hŒ¯ftrace.[instance.INSTANCE.]tracing_on = 0|1 Enable/Disable tracing on this instance when starting boot-time tracing. (you can enable it by the "traceon" event trigger action) ”h]”(ji)�”}”(hŒ+ftrace.[instance.INSTANCE.]tracing_on = 0|1”h]”hŒ+ftrace.[instance.INSTANCE.]tracing_on = 0|1”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KBhjáubjy)�”}”(hhh]”hþ)�”}”(hŒ‚Enable/Disable tracing on this instance when starting boot-time tracing. (you can enable it by the "traceon" event trigger action)”h]”hŒ†Enable/Disable tracing on this instance when starting boot-time tracing. (you can enable it by the “traceonâ€� event trigger action)”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KAhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KBhj¯h²hubjc)�”}”(hŒXftrace.[instance.INSTANCE.]trace_clock = CLOCK Set given CLOCK to ftrace's trace_clock. ”h]”(ji)�”}”(hŒ.ftrace.[instance.INSTANCE.]trace_clock = CLOCK”h]”hŒ.ftrace.[instance.INSTANCE.]trace_clock = CLOCK”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KEhjubjy)�”}”(hhh]”hþ)�”}”(hŒ(Set given CLOCK to ftrace's trace_clock.”h]”hŒ*Set given CLOCK to ftrace’s trace_clock.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KEhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KEhj¯h²hubjc)�”}”(hŒ|ftrace.[instance.INSTANCE.]buffer_size = SIZE Configure ftrace buffer size to SIZE. You can use "KB" or "MB" for that SIZE. ”h]”(ji)�”}”(hŒ-ftrace.[instance.INSTANCE.]buffer_size = SIZE”h]”hŒ-ftrace.[instance.INSTANCE.]buffer_size = SIZE”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KIhj?ubjy)�”}”(hhh]”hþ)�”}”(hŒMConfigure ftrace buffer size to SIZE. You can use "KB" or "MB" for that SIZE.”h]”hŒUConfigure ftrace buffer size to SIZE. You can use “KBâ€� or “MBâ€� for that SIZE.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KHhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KIhj¯h²hubjc)�”}”(hŒDftrace.[instance.INSTANCE.]alloc_snapshot Allocate snapshot buffer. ”h]”(ji)�”}”(hŒ)ftrace.[instance.INSTANCE.]alloc_snapshot”h]”hŒ)ftrace.[instance.INSTANCE.]alloc_snapshot”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KLhjnubjy)�”}”(hhh]”hþ)�”}”(hŒAllocate snapshot buffer.”h]”hŒAllocate snapshot buffer.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KLhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KLhj¯h²hubjc)�”}”(hŒLftrace.[instance.INSTANCE.]cpumask = CPUMASK Set CPUMASK as trace cpu-mask. ”h]”(ji)�”}”(hŒ,ftrace.[instance.INSTANCE.]cpumask = CPUMASK”h]”hŒ,ftrace.[instance.INSTANCE.]cpumask = CPUMASK”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KOhj�ubjy)�”}”(hhh]”hþ)�”}”(hŒSet CPUMASK as trace cpu-mask.”h]”hŒSet CPUMASK as trace cpu-mask.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KOhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KOhj¯h²hubjc)�”}”(hŒxftrace.[instance.INSTANCE.]events = EVENT[, EVENT2[...]] Enable given events on boot. You can use a wild card in EVENT. ”h]”(ji)�”}”(hŒ8ftrace.[instance.INSTANCE.]events = EVENT[, EVENT2[...]]”h]”hŒ8ftrace.[instance.INSTANCE.]events = EVENT[, EVENT2[...]]”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KRhjÌubjy)�”}”(hhh]”hþ)�”}”(hŒ>Enable given events on boot. You can use a wild card in EVENT.”h]”hŒ>Enable given events on boot. You can use a wild card in EVENT.”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KRhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KRhj¯h²hubjc)�”}”(hŒaftrace.[instance.INSTANCE.]tracer = TRACER Set TRACER to current tracer on boot. (e.g. function) ”h]”(ji)�”}”(hŒ*ftrace.[instance.INSTANCE.]tracer = TRACER”h]”hŒ*ftrace.[instance.INSTANCE.]tracer = TRACER”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KUhjûubjy)�”}”(hhh]”hþ)�”}”(hŒ5Set TRACER to current tracer on boot. (e.g. function)”h]”hŒ5Set TRACER to current tracer on boot. (e.g. function)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KUhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KUhj¯h²hubjc)�”}”(hŒdftrace.[instance.INSTANCE.]ftrace.filters This will take an array of tracing function filter rules. ”h]”(ji)�”}”(hŒ)ftrace.[instance.INSTANCE.]ftrace.filters”h]”hŒ)ftrace.[instance.INSTANCE.]ftrace.filters”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KXhj*ubjy)�”}”(hhh]”hþ)�”}”(hŒ9This will take an array of tracing function filter rules.”h]”hŒ9This will take an array of tracing function filter rules.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KXhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KXhj¯h²hubjc)�”}”(hŒjftrace.[instance.INSTANCE.]ftrace.notraces This will take an array of NON-tracing function filter rules. ”h]”(ji)�”}”(hŒ*ftrace.[instance.INSTANCE.]ftrace.notraces”h]”hŒ*ftrace.[instance.INSTANCE.]ftrace.notraces”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K\hjYubjy)�”}”(hhh]”hþ)�”}”(hŒ=This will take an array of NON-tracing function filter rules.”h]”hŒ=This will take an array of NON-tracing function filter rules.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K[hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K\hj¯h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�h²hh³hÇh´Nubeh}”(h]”Œftrace-per-instance-options”ah ]”h"]”Œftrace per-instance options”ah$]”h&]”uh1hÈhj\h²hh³hÇh´K9ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFtrace Per-Event Options”h]”hŒFtrace Per-Event Options”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj–h²hh³hÇh´K_ubhþ)�”}”(hŒ,These options are setting per-event options.”h]”hŒ,These options are setting per-event options.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kahj–h²hubj^)�”}”(hhh]”(jc)�”}”(hŒPftrace.[instance.INSTANCE.]event.GROUP.EVENT.enable Enable GROUP:EVENT tracing. ”h]”(ji)�”}”(hŒ3ftrace.[instance.INSTANCE.]event.GROUP.EVENT.enable”h]”hŒ3ftrace.[instance.INSTANCE.]event.GROUP.EVENT.enable”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´Kdhj¸ubjy)�”}”(hhh]”hþ)�”}”(hŒEnable GROUP:EVENT tracing.”h]”hŒEnable GROUP:EVENT tracing.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KdhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´Kdhjµubjc)�”}”(hŒUftrace.[instance.INSTANCE.]event.GROUP.enable Enable all event tracing within GROUP. ”h]”(ji)�”}”(hŒ-ftrace.[instance.INSTANCE.]event.GROUP.enable”h]”hŒ-ftrace.[instance.INSTANCE.]event.GROUP.enable”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´Kghjçubjy)�”}”(hhh]”hþ)�”}”(hŒ&Enable all event tracing within GROUP.”h]”hŒ&Enable all event tracing within GROUP.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kghjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´Kghjµh²hubjc)�”}”(hŒBftrace.[instance.INSTANCE.]event.enable Enable all event tracing. ”h]”(ji)�”}”(hŒ'ftrace.[instance.INSTANCE.]event.enable”h]”hŒ'ftrace.[instance.INSTANCE.]event.enable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´Kjhjubjy)�”}”(hhh]”hþ)�”}”(hŒEnable all event tracing.”h]”hŒEnable all event tracing.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kjhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´Kjhjµh²hubjc)�”}”(hŒaftrace.[instance.INSTANCE.]event.GROUP.EVENT.filter = FILTER Set FILTER rule to the GROUP:EVENT. ”h]”(ji)�”}”(hŒ Set histogram control parameter. You can set one of them. ”h]”(ji)�”}”(hŒLftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]”h]”hŒLftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K©hjæubjy)�”}”(hhh]”hþ)�”}”(hŒ9Set histogram control parameter. You can set one of them.”h]”hŒ9Set histogram control parameter. You can set one of them.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K©hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K©hjÉh²hubjc)�”}”(hXftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmatch.[M.]event = GROUP.EVENT Set histogram 'onmatch' handler matching event parameter. The 'M' is a digit string for the multiple 'onmatch' handler. You can omit it if there is one 'onmatch' handler on this histogram. ”h]”(ji)�”}”(hŒUftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmatch.[M.]event = GROUP.EVENT”h]”hŒUftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmatch.[M.]event = GROUP.EVENT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K®hj ubjy)�”}”(hhh]”hþ)�”}”(hŒ¼Set histogram 'onmatch' handler matching event parameter. The 'M' is a digit string for the multiple 'onmatch' handler. You can omit it if there is one 'onmatch' handler on this histogram.”h]”hŒÌSet histogram ‘onmatch’ handler matching event parameter. The ‘M’ is a digit string for the multiple ‘onmatch’ handler. You can omit it if there is one ‘onmatch’ handler on this histogram.”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K¬hj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K®hjÉh²hubjc)�”}”(hXftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmatch.[M.]trace = EVENT[, ARG1[...]] Set histogram 'trace' action for 'onmatch'. EVENT must be a synthetic event name, and ARG1... are parameters for that event. Mandatory if 'onmatch.event' option is set. ”h]”(ji)�”}”(hŒ\ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmatch.[M.]trace = EVENT[, ARG1[...]]”h]”hŒ\ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmatch.[M.]trace = EVENT[, ARG1[...]]”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K³hjD ubjy)�”}”(hhh]”hþ)�”}”(hŒ¨Set histogram 'trace' action for 'onmatch'. EVENT must be a synthetic event name, and ARG1... are parameters for that event. Mandatory if 'onmatch.event' option is set.”h]”hŒ´Set histogram ‘trace’ action for ‘onmatch’. EVENT must be a synthetic event name, and ARG1... are parameters for that event. Mandatory if ‘onmatch.event’ option is set.”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K±hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjD ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K³hjÉh²hubjc)�”}”(hŒ|ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmax.[M.]var = VAR Set histogram 'onmax' handler variable parameter. ”h]”(ji)�”}”(hŒIftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmax.[M.]var = VAR”h]”hŒIftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onmax.[M.]var = VAR”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K¶hjs ubjy)�”}”(hhh]”hþ)�”}”(hŒ1Set histogram 'onmax' handler variable parameter.”h]”hŒ5Set histogram ‘onmax’ handler variable parameter.”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K¶hj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K¶hjÉh²hubjc)�”}”(hŒ‚ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onchange.[M.]var = VAR Set histogram 'onchange' handler variable parameter. ”h]”(ji)�”}”(hŒLftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onchange.[M.]var = VAR”h]”hŒLftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.]onchange.[M.]var = VAR”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K¹hj¢ ubjy)�”}”(hhh]”hþ)�”}”(hŒ4Set histogram 'onchange' handler variable parameter.”h]”hŒ8Set histogram ‘onchange’ handler variable parameter.”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K¹hj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K¹hjÉh²hubjc)�”}”(hXftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.].[M.]save = ARG1[, ARG2[...]] Set histogram 'save' action parameters for 'onmax' or 'onchange' handler. This option or below 'snapshot' option is mandatory if 'onmax.var' or 'onchange.var' option is set. ”h]”(ji)�”}”(hŒcftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.].[M.]save = ARG1[, ARG2[...]]”h]”hŒcftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.].[M.]save = ARG1[, ARG2[...]]”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´K¾hjÑ ubjy)�”}”(hhh]”hþ)�”}”(hŒ­Set histogram 'save' action parameters for 'onmax' or 'onchange' handler. This option or below 'snapshot' option is mandatory if 'onmax.var' or 'onchange.var' option is set.”h]”hŒÅSet histogram ‘save’ action parameters for ‘onmax’ or ‘onchange’ handler. This option or below ‘snapshot’ option is mandatory if ‘onmax.var’ or ‘onchange.var’ option is set.”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K¼hjã ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÑ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´K¾hjÉh²hubjc)�”}”(hŒ÷ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.].[M.]snapshot Set histogram 'snapshot' action for 'onmax' or 'onchange' handler. This option or above 'save' option is mandatory if 'onmax.var' or 'onchange.var' option is set. ”h]”(ji)�”}”(hŒSftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.].[M.]snapshot”h]”hŒSftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.[N.].[M.]snapshot”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KÃhj ubjy)�”}”(hhh]”hþ)�”}”(hŒ¢Set histogram 'snapshot' action for 'onmax' or 'onchange' handler. This option or above 'save' option is mandatory if 'onmax.var' or 'onchange.var' option is set.”h]”hŒºSet histogram ‘snapshot’ action for ‘onmax’ or ‘onchange’ handler. This option or above ‘save’ option is mandatory if ‘onmax.var’ or ‘onchange.var’ option is set.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KÁhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KÃhjÉh²hubjc)�”}”(hŒ�ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.filter = FILTER_EXPR Set histogram filter expression. You don't need 'if' in the FILTER_EXPR. ”h]”(ji)�”}”(hŒFftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.filter = FILTER_EXPR”h]”hŒFftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist.filter = FILTER_EXPR”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KÆhj/ ubjy)�”}”(hhh]”hþ)�”}”(hŒHSet histogram filter expression. You don't need 'if' in the FILTER_EXPR.”h]”hŒNSet histogram filter expression. You don’t need ‘if’ in the FILTER_EXPR.”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KÆhjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj/ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbh³hÇh´KÆhjÉh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]hjªh²hh³hÇh´Nubhþ)�”}”(hŒ}Note that this 'hist' option can conflict with the per-event 'actions' option if the 'actions' option has a histogram action.”h]”hŒ‰Note that this ‘hist’ option can conflict with the per-event ‘actions’ option if the ‘actions’ option has a histogram action.”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KÈhjªh²hubeh}”(h]”Œftrace-histogram-options”ah ]”h"]”Œftrace histogram options”ah$]”h&]”uh1hÈhj\h²hh³hÇh´K�ubeh}”(h]”Œoptions-in-the-boot-config”ah ]”h"]”Œoptions in the boot config”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ When to Start”h]”hŒ When to Start”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‚ h²hh³hÇh´KÍubhþ)�”}”(hXYAll boot-time tracing options starting with ``ftrace`` will be enabled at the end of core_initcall. This means you can trace the events from postcore_initcall. Most of the subsystems and architecture dependent drivers will be initialized after that (arch_initcall or subsys_initcall). Thus, you can trace those with boot-time tracing. If you want to trace events before core_initcall, you can use the options starting with ``kernel``. Some of them will be enabled earlier than the initcall processing (for example, ``kernel.ftrace=function`` and ``kernel.trace_event`` will start before the initcall.)”h]”(hŒ,All boot-time tracing options starting with ”…”�”}”(hj“ h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ ``ftrace``”h]”hŒftrace”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j› hj“ ubhXq will be enabled at the end of core_initcall. This means you can trace the events from postcore_initcall. Most of the subsystems and architecture dependent drivers will be initialized after that (arch_initcall or subsys_initcall). Thus, you can trace those with boot-time tracing. If you want to trace events before core_initcall, you can use the options starting with ”…”�”}”(hj“ h²hh³Nh´Nubjœ )�”}”(hŒ ``kernel``”h]”hŒkernel”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j› hj“ ubhŒR. Some of them will be enabled earlier than the initcall processing (for example, ”…”�”}”(hj“ h²hh³Nh´Nubjœ )�”}”(hŒ``kernel.ftrace=function``”h]”hŒkernel.ftrace=function”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j› hj“ ubhŒ and ”…”�”}”(hj“ h²hh³Nh´Nubjœ )�”}”(hŒ``kernel.trace_event``”h]”hŒkernel.trace_event”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j› hj“ ubhŒ! will start before the initcall.)”…”�”}”(hj“ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KÏhj‚ h²hubeh}”(h]”Œ when-to-start”ah ]”h"]”Œ when to start”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÍubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒExamples”h]”hŒExamples”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjó h²hh³hÇh´KÛubhþ)�”}”(hŒ’For example, to add filter and actions for each event, define kprobe events, and synthetic events with histogram, write a boot config like below::”h]”hŒ‘For example, to add filter and actions for each event, define kprobe events, and synthetic events with histogram, write a boot config like below:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KÝhjó h²hubhŒ literal_block”“”)�”}”(hX{ftrace.event { task.task_newtask { filter = "pid < 128" enable } kprobes.vfs_read { probes = "vfs_read $arg1 $arg2" filter = "common_pid < 200" enable } synthetic.initcall_latency { fields = "unsigned long func", "u64 lat" hist { keys = func.sym, lat values = lat sort = lat } } initcall.initcall_start.hist { keys = func var.ts0 = common_timestamp.usecs } initcall.initcall_finish.hist { keys = func var.lat = common_timestamp.usecs - $ts0 onmatch { event = initcall.initcall_start trace = initcall_latency, func, $lat } } }”h]”hX{ftrace.event { task.task_newtask { filter = "pid < 128" enable } kprobes.vfs_read { probes = "vfs_read $arg1 $arg2" filter = "common_pid < 200" enable } synthetic.initcall_latency { fields = "unsigned long func", "u64 lat" hist { keys = func.sym, lat values = lat sort = lat } } initcall.initcall_start.hist { keys = func var.ts0 = common_timestamp.usecs } initcall.initcall_finish.hist { keys = func var.lat = common_timestamp.usecs - $ts0 onmatch { event = initcall.initcall_start trace = initcall_latency, func, $lat } } }”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Káhjó h²hubhþ)�”}”(hXAlso, boot-time tracing supports "instance" node, which allows us to run several tracers for different purpose at once. For example, one tracer is for tracing functions starting with "user\_", and others tracing "kernel\_" functions, you can write boot config as below::”h]”hXAlso, boot-time tracing supports “instanceâ€� node, which allows us to run several tracers for different purpose at once. For example, one tracer is for tracing functions starting with “user_â€�, and others tracing “kernel_â€� functions, you can write boot config as below:”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Mhjó h²hubj )�”}”(hŒÑftrace.instance { foo { tracer = "function" ftrace.filters = "user_*" } bar { tracer = "function" ftrace.filters = "kernel_*" } }”h]”hŒÑftrace.instance { foo { tracer = "function" ftrace.filters = "user_*" } bar { tracer = "function" ftrace.filters = "kernel_*" } }”…”�”}”hj0 sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Mhjó h²hubhþ)�”}”(hŒaThe instance node also accepts event nodes so that each instance can customize its event tracing.”h]”hŒaThe instance node also accepts event nodes so that each instance can customize its event tracing.”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Mhjó h²hubhþ)�”}”(hŒ¦With the trigger action and kprobes, you can trace function-graph while a function is called. For example, this will trace all function calls in the pci_proc_init()::”h]”hŒ¥With the trigger action and kprobes, you can trace function-graph while a function is called. For example, this will trace all function calls in the pci_proc_init():”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Mhjó h²hubj )�”}”(hXkftrace { tracing_on = 0 tracer = function_graph event.kprobes { start_event { probes = "pci_proc_init" actions = "traceon" } end_event { probes = "pci_proc_init%return" actions = "traceoff" } } }”h]”hXkftrace { tracing_on = 0 tracer = function_graph event.kprobes { start_event { probes = "pci_proc_init" actions = "traceon" } end_event { probes = "pci_proc_init%return" actions = "traceoff" } } }”…”�”}”hjZ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Mhjó h²hubhþ)�”}”(hŒyThis boot-time tracing also supports ftrace kernel parameters via boot config. For example, following kernel parameters::”h]”hŒxThis boot-time tracing also supports ftrace kernel parameters via boot config. For example, following kernel parameters:”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´M(hjó h²hubj )�”}”(hŒntrace_options=sym-addr trace_event=initcall:* tp_printk trace_buf_size=1M ftrace=function ftrace_filter="vfs*"”h]”hŒntrace_options=sym-addr trace_event=initcall:* tp_printk trace_buf_size=1M ftrace=function ftrace_filter="vfs*"”…”�”}”hjv sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´M,hjó h²hubhþ)�”}”(hŒ/This can be written in boot config like below::”h]”hŒ.This can be written in boot config like below:”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´M.hjó h²hubj )�”}”(hŒ©kernel { trace_options = sym-addr trace_event = "initcall:*" tp_printk trace_buf_size = 1M ftrace = function ftrace_filter = "vfs*" }”h]”hŒ©kernel { trace_options = sym-addr trace_event = "initcall:*" tp_printk trace_buf_size = 1M ftrace = function ftrace_filter = "vfs*" }”…”�”}”hj’ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´M0hjó h²hubhþ)�”}”(hŒDNote that parameters start with "kernel" prefix instead of "ftrace".”h]”hŒLNote that parameters start with “kernelâ€� prefix instead of “ftraceâ€�.”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´M9hjó h²hubeh}”(h]”Œexamples”ah ]”h"]”Œexamples”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÛubeh}”(h]”Œboot-time-tracing”ah ]”h"]”Œboot-time tracing”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”já Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œ1”]”jwaŒ2”]”j�auŒrefids”}”Œnameids”}”(j» j¸ jYjVj j| jôj‡j;jžj�jŠj“j�j§j¤jw jt jð jí j³ j° uŒ nametypes”}”(j» ‰jY‰j ‰jôˆj;ˆj�‰j“‰j§‰jw ‰jð ‰j³ ‰uh}”(j¸ hÊjVj5j| j\j�jwj™j�j‡j«jžj÷jŠj>j�j�j¤j–jt jªjí j‚ j° jó uŒ footnote_refs”}”(j! ]”jwaj# ]”j�auŒ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”(j«j÷eŒ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jï Ks…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.