xref: /linux-6.15/kernel/trace/Kconfig (revision 40ada30f)
116444a8aSArnaldo Carvalho de Melo#
2606576ceSSteven Rostedt# Architectures that offer an FUNCTION_TRACER implementation should
3606576ceSSteven Rostedt#  select HAVE_FUNCTION_TRACER:
416444a8aSArnaldo Carvalho de Melo#
52a3a4f66SFrédéric Weisbecker
68d26487fSTörök Edwinconfig USER_STACKTRACE_SUPPORT
78d26487fSTörök Edwin	bool
88d26487fSTörök Edwin
92a3a4f66SFrédéric Weisbeckerconfig NOP_TRACER
102a3a4f66SFrédéric Weisbecker	bool
112a3a4f66SFrédéric Weisbecker
1278d904b4SSteven Rostedtconfig HAVE_FTRACE_NMI_ENTER
1378d904b4SSteven Rostedt	bool
1478d904b4SSteven Rostedt
15606576ceSSteven Rostedtconfig HAVE_FUNCTION_TRACER
1616444a8aSArnaldo Carvalho de Melo	bool
17bc0c38d1SSteven Rostedt
18fb52607aSFrederic Weisbeckerconfig HAVE_FUNCTION_GRAPH_TRACER
1915e6cb36SFrederic Weisbecker	bool
2015e6cb36SFrederic Weisbecker
2160a7ecf4SSteven Rostedtconfig HAVE_FUNCTION_TRACE_MCOUNT_TEST
2260a7ecf4SSteven Rostedt	bool
2360a7ecf4SSteven Rostedt	help
2460a7ecf4SSteven Rostedt	 This gets selected when the arch tests the function_trace_stop
2560a7ecf4SSteven Rostedt	 variable at the mcount call site. Otherwise, this variable
2660a7ecf4SSteven Rostedt	 is tested by the called function.
2760a7ecf4SSteven Rostedt
28677aa9f7SSteven Rostedtconfig HAVE_DYNAMIC_FTRACE
29677aa9f7SSteven Rostedt	bool
30677aa9f7SSteven Rostedt
318da3821bSSteven Rostedtconfig HAVE_FTRACE_MCOUNT_RECORD
328da3821bSSteven Rostedt	bool
338da3821bSSteven Rostedt
341e9b51c2SMarkus Metzgerconfig HAVE_HW_BRANCH_TRACER
351e9b51c2SMarkus Metzger	bool
361e9b51c2SMarkus Metzger
37352ad25aSSteven Rostedtconfig TRACER_MAX_TRACE
38352ad25aSSteven Rostedt	bool
39352ad25aSSteven Rostedt
407a8e76a3SSteven Rostedtconfig RING_BUFFER
417a8e76a3SSteven Rostedt	bool
427a8e76a3SSteven Rostedt
4378d904b4SSteven Rostedtconfig FTRACE_NMI_ENTER
4478d904b4SSteven Rostedt       bool
4578d904b4SSteven Rostedt       depends on HAVE_FTRACE_NMI_ENTER
4678d904b4SSteven Rostedt       default y
4778d904b4SSteven Rostedt
48bc0c38d1SSteven Rostedtconfig TRACING
49bc0c38d1SSteven Rostedt	bool
50bc0c38d1SSteven Rostedt	select DEBUG_FS
517a8e76a3SSteven Rostedt	select RING_BUFFER
52c2c80529SAl Viro	select STACKTRACE if STACKTRACE_SUPPORT
535f87f112SIngo Molnar	select TRACEPOINTS
54f3384b28SSteven Rostedt	select NOP_TRACER
55bc0c38d1SSteven Rostedt
56*40ada30fSIngo Molnar#
57*40ada30fSIngo Molnar# Minimum requirements an architecture has to meet for us to
58*40ada30fSIngo Molnar# be able to offer generic tracing facilities:
59*40ada30fSIngo Molnar#
60*40ada30fSIngo Molnarconfig TRACING_SUPPORT
61*40ada30fSIngo Molnar	bool
62*40ada30fSIngo Molnar	depends on TRACE_IRQFLAGS_SUPPORT
63*40ada30fSIngo Molnar	depends on STACKTRACE_SUPPORT
64*40ada30fSIngo Molnar
65*40ada30fSIngo Molnarif TRACING_SUPPORT
66*40ada30fSIngo Molnar
6717d80fd0SPeter Zijlstramenu "Tracers"
6817d80fd0SPeter Zijlstra
69606576ceSSteven Rostedtconfig FUNCTION_TRACER
701b29b018SSteven Rostedt	bool "Kernel Function Tracer"
71606576ceSSteven Rostedt	depends on HAVE_FUNCTION_TRACER
721b29b018SSteven Rostedt	select FRAME_POINTER
734d7a077cSSteven Rostedt	select KALLSYMS
741b29b018SSteven Rostedt	select TRACING
7535e8e302SSteven Rostedt	select CONTEXT_SWITCH_TRACER
761b29b018SSteven Rostedt	help
771b29b018SSteven Rostedt	  Enable the kernel to trace every kernel function. This is done
781b29b018SSteven Rostedt	  by using a compiler feature to insert a small, 5-byte No-Operation
791b29b018SSteven Rostedt	  instruction to the beginning of every kernel function, which NOP
801b29b018SSteven Rostedt	  sequence is then dynamically patched into a tracer call when
811b29b018SSteven Rostedt	  tracing is enabled by the administrator. If it's runtime disabled
821b29b018SSteven Rostedt	  (the bootup default), then the overhead of the instructions is very
831b29b018SSteven Rostedt	  small and not measurable even in micro-benchmarks.
8435e8e302SSteven Rostedt
85fb52607aSFrederic Weisbeckerconfig FUNCTION_GRAPH_TRACER
86fb52607aSFrederic Weisbecker	bool "Kernel Function Graph Tracer"
87fb52607aSFrederic Weisbecker	depends on HAVE_FUNCTION_GRAPH_TRACER
8815e6cb36SFrederic Weisbecker	depends on FUNCTION_TRACER
89764f3b95SIngo Molnar	default y
9015e6cb36SFrederic Weisbecker	help
91fb52607aSFrederic Weisbecker	  Enable the kernel to trace a function at both its return
92fb52607aSFrederic Weisbecker	  and its entry.
93fb52607aSFrederic Weisbecker	  It's first purpose is to trace the duration of functions and
94fb52607aSFrederic Weisbecker	  draw a call graph for each thread with some informations like
95fb52607aSFrederic Weisbecker	  the return value.
96fb52607aSFrederic Weisbecker	  This is done by setting the current return address on the current
97fb52607aSFrederic Weisbecker	  task structure into a stack of calls.
9815e6cb36SFrederic Weisbecker
9981d68a96SSteven Rostedtconfig IRQSOFF_TRACER
10081d68a96SSteven Rostedt	bool "Interrupts-off Latency Tracer"
10181d68a96SSteven Rostedt	default n
10281d68a96SSteven Rostedt	depends on TRACE_IRQFLAGS_SUPPORT
10381d68a96SSteven Rostedt	depends on GENERIC_TIME
10481d68a96SSteven Rostedt	select TRACE_IRQFLAGS
10581d68a96SSteven Rostedt	select TRACING
10681d68a96SSteven Rostedt	select TRACER_MAX_TRACE
10781d68a96SSteven Rostedt	help
10881d68a96SSteven Rostedt	  This option measures the time spent in irqs-off critical
10981d68a96SSteven Rostedt	  sections, with microsecond accuracy.
11081d68a96SSteven Rostedt
11181d68a96SSteven Rostedt	  The default measurement method is a maximum search, which is
11281d68a96SSteven Rostedt	  disabled by default and can be runtime (re-)started
11381d68a96SSteven Rostedt	  via:
11481d68a96SSteven Rostedt
11581d68a96SSteven Rostedt	      echo 0 > /debugfs/tracing/tracing_max_latency
11681d68a96SSteven Rostedt
1176cd8a4bbSSteven Rostedt	  (Note that kernel size and overhead increases with this option
1186cd8a4bbSSteven Rostedt	  enabled. This option and the preempt-off timing option can be
1196cd8a4bbSSteven Rostedt	  used together or separately.)
1206cd8a4bbSSteven Rostedt
1216cd8a4bbSSteven Rostedtconfig PREEMPT_TRACER
1226cd8a4bbSSteven Rostedt	bool "Preemption-off Latency Tracer"
1236cd8a4bbSSteven Rostedt	default n
1246cd8a4bbSSteven Rostedt	depends on GENERIC_TIME
1256cd8a4bbSSteven Rostedt	depends on PREEMPT
1266cd8a4bbSSteven Rostedt	select TRACING
1276cd8a4bbSSteven Rostedt	select TRACER_MAX_TRACE
1286cd8a4bbSSteven Rostedt	help
1296cd8a4bbSSteven Rostedt	  This option measures the time spent in preemption off critical
1306cd8a4bbSSteven Rostedt	  sections, with microsecond accuracy.
1316cd8a4bbSSteven Rostedt
1326cd8a4bbSSteven Rostedt	  The default measurement method is a maximum search, which is
1336cd8a4bbSSteven Rostedt	  disabled by default and can be runtime (re-)started
1346cd8a4bbSSteven Rostedt	  via:
1356cd8a4bbSSteven Rostedt
1366cd8a4bbSSteven Rostedt	      echo 0 > /debugfs/tracing/tracing_max_latency
1376cd8a4bbSSteven Rostedt
1386cd8a4bbSSteven Rostedt	  (Note that kernel size and overhead increases with this option
1396cd8a4bbSSteven Rostedt	  enabled. This option and the irqs-off timing option can be
1406cd8a4bbSSteven Rostedt	  used together or separately.)
1416cd8a4bbSSteven Rostedt
142f06c3810SIngo Molnarconfig SYSPROF_TRACER
143f06c3810SIngo Molnar	bool "Sysprof Tracer"
1444d2df795SThomas Gleixner	depends on X86
145f06c3810SIngo Molnar	select TRACING
146b22f4858SFrederic Weisbecker	select CONTEXT_SWITCH_TRACER
147f06c3810SIngo Molnar	help
148f06c3810SIngo Molnar	  This tracer provides the trace needed by the 'Sysprof' userspace
149f06c3810SIngo Molnar	  tool.
150f06c3810SIngo Molnar
151352ad25aSSteven Rostedtconfig SCHED_TRACER
152352ad25aSSteven Rostedt	bool "Scheduling Latency Tracer"
153352ad25aSSteven Rostedt	select TRACING
154352ad25aSSteven Rostedt	select CONTEXT_SWITCH_TRACER
155352ad25aSSteven Rostedt	select TRACER_MAX_TRACE
156352ad25aSSteven Rostedt	help
157352ad25aSSteven Rostedt	  This tracer tracks the latency of the highest priority task
158352ad25aSSteven Rostedt	  to be scheduled in, starting from the point it has woken up.
159352ad25aSSteven Rostedt
16035e8e302SSteven Rostedtconfig CONTEXT_SWITCH_TRACER
16135e8e302SSteven Rostedt	bool "Trace process context switches"
16235e8e302SSteven Rostedt	select TRACING
16335e8e302SSteven Rostedt	select MARKERS
16435e8e302SSteven Rostedt	help
16535e8e302SSteven Rostedt	  This tracer gets called from the context switch and records
16635e8e302SSteven Rostedt	  all switching of tasks.
16735e8e302SSteven Rostedt
168b77e38aaSSteven Rostedtconfig EVENT_TRACER
169b77e38aaSSteven Rostedt	bool "Trace various events in the kernel"
170b77e38aaSSteven Rostedt	select TRACING
171b77e38aaSSteven Rostedt	help
172b77e38aaSSteven Rostedt	  This tracer hooks to various trace points in the kernel
173b77e38aaSSteven Rostedt	  allowing the user to pick and choose which trace point they
174b77e38aaSSteven Rostedt	  want to trace.
175b77e38aaSSteven Rostedt
1761f5c2abbSFrédéric Weisbeckerconfig BOOT_TRACER
1771f5c2abbSFrédéric Weisbecker	bool "Trace boot initcalls"
1781f5c2abbSFrédéric Weisbecker	select TRACING
179ea31e72dSFrederic Weisbecker	select CONTEXT_SWITCH_TRACER
1801f5c2abbSFrédéric Weisbecker	help
1811f5c2abbSFrédéric Weisbecker	  This tracer helps developers to optimize boot times: it records
18298d9c66aSIngo Molnar	  the timings of the initcalls and traces key events and the identity
18398d9c66aSIngo Molnar	  of tasks that can cause boot delays, such as context-switches.
18498d9c66aSIngo Molnar
18598d9c66aSIngo Molnar	  Its aim is to be parsed by the /scripts/bootgraph.pl tool to
18698d9c66aSIngo Molnar	  produce pretty graphics about boot inefficiencies, giving a visual
18798d9c66aSIngo Molnar	  representation of the delays during initcalls - but the raw
18898d9c66aSIngo Molnar	  /debug/tracing/trace text output is readable too.
18998d9c66aSIngo Molnar
19079fb0768SSteven Rostedt	  You must pass in ftrace=initcall to the kernel command line
19179fb0768SSteven Rostedt	  to enable this on bootup.
1921f5c2abbSFrédéric Weisbecker
1932ed84eebSSteven Rostedtconfig TRACE_BRANCH_PROFILING
1941f0d69a9SSteven Rostedt	bool "Trace likely/unlikely profiler"
1951f0d69a9SSteven Rostedt	select TRACING
1961f0d69a9SSteven Rostedt	help
1971f0d69a9SSteven Rostedt	  This tracer profiles all the the likely and unlikely macros
1981f0d69a9SSteven Rostedt	  in the kernel. It will display the results in:
1991f0d69a9SSteven Rostedt
20045b79749SSteven Rostedt	  /debugfs/tracing/profile_annotated_branch
2011f0d69a9SSteven Rostedt
2021f0d69a9SSteven Rostedt	  Note: this will add a significant overhead, only turn this
2031f0d69a9SSteven Rostedt	  on if you need to profile the system's use of these macros.
2041f0d69a9SSteven Rostedt
2051f0d69a9SSteven Rostedt	  Say N if unsure.
2061f0d69a9SSteven Rostedt
2072bcd521aSSteven Rostedtconfig PROFILE_ALL_BRANCHES
2082bcd521aSSteven Rostedt	bool "Profile all if conditionals"
2092bcd521aSSteven Rostedt	depends on TRACE_BRANCH_PROFILING
2102bcd521aSSteven Rostedt	help
2112bcd521aSSteven Rostedt	  This tracer profiles all branch conditions. Every if ()
2122bcd521aSSteven Rostedt	  taken in the kernel is recorded whether it hit or miss.
2132bcd521aSSteven Rostedt	  The results will be displayed in:
2142bcd521aSSteven Rostedt
2152bcd521aSSteven Rostedt	  /debugfs/tracing/profile_branch
2162bcd521aSSteven Rostedt
2172bcd521aSSteven Rostedt	  This configuration, when enabled, will impose a great overhead
2182bcd521aSSteven Rostedt	  on the system. This should only be enabled when the system
2192bcd521aSSteven Rostedt	  is to be analyzed
2202bcd521aSSteven Rostedt
2212bcd521aSSteven Rostedt	  Say N if unsure.
2222bcd521aSSteven Rostedt
2232ed84eebSSteven Rostedtconfig TRACING_BRANCHES
22452f232cbSSteven Rostedt	bool
22552f232cbSSteven Rostedt	help
22652f232cbSSteven Rostedt	  Selected by tracers that will trace the likely and unlikely
22752f232cbSSteven Rostedt	  conditions. This prevents the tracers themselves from being
22852f232cbSSteven Rostedt	  profiled. Profiling the tracing infrastructure can only happen
22952f232cbSSteven Rostedt	  when the likelys and unlikelys are not being traced.
23052f232cbSSteven Rostedt
2312ed84eebSSteven Rostedtconfig BRANCH_TRACER
23252f232cbSSteven Rostedt	bool "Trace likely/unlikely instances"
2332ed84eebSSteven Rostedt	depends on TRACE_BRANCH_PROFILING
2342ed84eebSSteven Rostedt	select TRACING_BRANCHES
23552f232cbSSteven Rostedt	help
23652f232cbSSteven Rostedt	  This traces the events of likely and unlikely condition
23752f232cbSSteven Rostedt	  calls in the kernel.  The difference between this and the
23852f232cbSSteven Rostedt	  "Trace likely/unlikely profiler" is that this is not a
23952f232cbSSteven Rostedt	  histogram of the callers, but actually places the calling
24052f232cbSSteven Rostedt	  events into a running trace buffer to see when and where the
24152f232cbSSteven Rostedt	  events happened, as well as their results.
24252f232cbSSteven Rostedt
24352f232cbSSteven Rostedt	  Say N if unsure.
24452f232cbSSteven Rostedt
245f3f47a67SArjan van de Venconfig POWER_TRACER
246f3f47a67SArjan van de Ven	bool "Trace power consumption behavior"
247f3f47a67SArjan van de Ven	depends on X86
248f3f47a67SArjan van de Ven	select TRACING
249f3f47a67SArjan van de Ven	help
250f3f47a67SArjan van de Ven	  This tracer helps developers to analyze and optimize the kernels
251f3f47a67SArjan van de Ven	  power management decisions, specifically the C-state and P-state
252f3f47a67SArjan van de Ven	  behavior.
253f3f47a67SArjan van de Ven
254f3f47a67SArjan van de Ven
255e5a81b62SSteven Rostedtconfig STACK_TRACER
256e5a81b62SSteven Rostedt	bool "Trace max stack"
257606576ceSSteven Rostedt	depends on HAVE_FUNCTION_TRACER
258606576ceSSteven Rostedt	select FUNCTION_TRACER
259e5a81b62SSteven Rostedt	select STACKTRACE
2604d7a077cSSteven Rostedt	select KALLSYMS
261e5a81b62SSteven Rostedt	help
2624519d9e5SIngo Molnar	  This special tracer records the maximum stack footprint of the
2634519d9e5SIngo Molnar	  kernel and displays it in debugfs/tracing/stack_trace.
2644519d9e5SIngo Molnar
2654519d9e5SIngo Molnar	  This tracer works by hooking into every function call that the
2664519d9e5SIngo Molnar	  kernel executes, and keeping a maximum stack depth value and
267f38f1d2aSSteven Rostedt	  stack-trace saved.  If this is configured with DYNAMIC_FTRACE
268f38f1d2aSSteven Rostedt	  then it will not have any overhead while the stack tracer
269f38f1d2aSSteven Rostedt	  is disabled.
270f38f1d2aSSteven Rostedt
271f38f1d2aSSteven Rostedt	  To enable the stack tracer on bootup, pass in 'stacktrace'
272f38f1d2aSSteven Rostedt	  on the kernel command line.
273f38f1d2aSSteven Rostedt
274f38f1d2aSSteven Rostedt	  The stack tracer can also be enabled or disabled via the
275f38f1d2aSSteven Rostedt	  sysctl kernel.stack_tracer_enabled
2764519d9e5SIngo Molnar
2774519d9e5SIngo Molnar	  Say N if unsure.
278e5a81b62SSteven Rostedt
279a93751caSMarkus Metzgerconfig HW_BRANCH_TRACER
2801e9b51c2SMarkus Metzger	depends on HAVE_HW_BRANCH_TRACER
281a93751caSMarkus Metzger	bool "Trace hw branches"
2821e9b51c2SMarkus Metzger	select TRACING
2831e9b51c2SMarkus Metzger	help
2841e9b51c2SMarkus Metzger	  This tracer records all branches on the system in a circular
2851e9b51c2SMarkus Metzger	  buffer giving access to the last N branches for each cpu.
2861e9b51c2SMarkus Metzger
28736994e58SFrederic Weisbeckerconfig KMEMTRACE
28836994e58SFrederic Weisbecker	bool "Trace SLAB allocations"
28936994e58SFrederic Weisbecker	select TRACING
29036994e58SFrederic Weisbecker	help
29136994e58SFrederic Weisbecker	  kmemtrace provides tracing for slab allocator functions, such as
29236994e58SFrederic Weisbecker	  kmalloc, kfree, kmem_cache_alloc, kmem_cache_free etc.. Collected
29336994e58SFrederic Weisbecker	  data is then fed to the userspace application in order to analyse
29436994e58SFrederic Weisbecker	  allocation hotspots, internal fragmentation and so on, making it
29536994e58SFrederic Weisbecker	  possible to see how well an allocator performs, as well as debug
29636994e58SFrederic Weisbecker	  and profile kernel code.
29736994e58SFrederic Weisbecker
29836994e58SFrederic Weisbecker	  This requires an userspace application to use. See
29936994e58SFrederic Weisbecker	  Documentation/vm/kmemtrace.txt for more information.
30036994e58SFrederic Weisbecker
30136994e58SFrederic Weisbecker	  Saying Y will make the kernel somewhat larger and slower. However,
30236994e58SFrederic Weisbecker	  if you disable kmemtrace at run-time or boot-time, the performance
30336994e58SFrederic Weisbecker	  impact is minimal (depending on the arch the kernel is built for).
30436994e58SFrederic Weisbecker
30536994e58SFrederic Weisbecker	  If unsure, say N.
30636994e58SFrederic Weisbecker
307e1d8aa9fSFrederic Weisbeckerconfig WORKQUEUE_TRACER
308e1d8aa9fSFrederic Weisbecker	bool "Trace workqueues"
309e1d8aa9fSFrederic Weisbecker	select TRACING
310e1d8aa9fSFrederic Weisbecker	help
311e1d8aa9fSFrederic Weisbecker	  The workqueue tracer provides some statistical informations
312e1d8aa9fSFrederic Weisbecker          about each cpu workqueue thread such as the number of the
313e1d8aa9fSFrederic Weisbecker          works inserted and executed since their creation. It can help
314e1d8aa9fSFrederic Weisbecker          to evaluate the amount of work each of them have to perform.
315e1d8aa9fSFrederic Weisbecker          For example it can help a developer to decide whether he should
316e1d8aa9fSFrederic Weisbecker          choose a per cpu workqueue instead of a singlethreaded one.
317e1d8aa9fSFrederic Weisbecker
3182db270a8SFrederic Weisbeckerconfig BLK_DEV_IO_TRACE
3192db270a8SFrederic Weisbecker	bool "Support for tracing block io actions"
3202db270a8SFrederic Weisbecker	depends on SYSFS
3211dfba05dSIngo Molnar	depends on BLOCK
3222db270a8SFrederic Weisbecker	select RELAY
3232db270a8SFrederic Weisbecker	select DEBUG_FS
3242db270a8SFrederic Weisbecker	select TRACEPOINTS
3252db270a8SFrederic Weisbecker	select TRACING
3262db270a8SFrederic Weisbecker	select STACKTRACE
3272db270a8SFrederic Weisbecker	help
3282db270a8SFrederic Weisbecker	  Say Y here if you want to be able to trace the block layer actions
3292db270a8SFrederic Weisbecker	  on a given queue. Tracing allows you to see any traffic happening
3302db270a8SFrederic Weisbecker	  on a block device queue. For more information (and the userspace
3312db270a8SFrederic Weisbecker	  support tools needed), fetch the blktrace tools from:
3322db270a8SFrederic Weisbecker
3332db270a8SFrederic Weisbecker	  git://git.kernel.dk/blktrace.git
3342db270a8SFrederic Weisbecker
3352db270a8SFrederic Weisbecker	  Tracing also is possible using the ftrace interface, e.g.:
3362db270a8SFrederic Weisbecker
3372db270a8SFrederic Weisbecker	    echo 1 > /sys/block/sda/sda1/trace/enable
3382db270a8SFrederic Weisbecker	    echo blk > /sys/kernel/debug/tracing/current_tracer
3392db270a8SFrederic Weisbecker	    cat /sys/kernel/debug/tracing/trace_pipe
3402db270a8SFrederic Weisbecker
3412db270a8SFrederic Weisbecker	  If unsure, say N.
34236994e58SFrederic Weisbecker
3433d083395SSteven Rostedtconfig DYNAMIC_FTRACE
3443d083395SSteven Rostedt	bool "enable/disable ftrace tracepoints dynamically"
345606576ceSSteven Rostedt	depends on FUNCTION_TRACER
346677aa9f7SSteven Rostedt	depends on HAVE_DYNAMIC_FTRACE
3473d083395SSteven Rostedt	default y
3483d083395SSteven Rostedt	help
3493d083395SSteven Rostedt         This option will modify all the calls to ftrace dynamically
3503d083395SSteven Rostedt	 (will patch them out of the binary image and replaces them
3513d083395SSteven Rostedt	 with a No-Op instruction) as they are called. A table is
3523d083395SSteven Rostedt	 created to dynamically enable them again.
3533d083395SSteven Rostedt
354606576ceSSteven Rostedt	 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but otherwise
3553d083395SSteven Rostedt	 has native performance as long as no tracing is active.
3563d083395SSteven Rostedt
3573d083395SSteven Rostedt	 The changes to the code are done by a kernel thread that
3583d083395SSteven Rostedt	 wakes up once a second and checks to see if any ftrace calls
3593d083395SSteven Rostedt	 were made. If so, it runs stop_machine (stops all CPUS)
3603d083395SSteven Rostedt	 and modifies the code to jump over the call to ftrace.
36160a11774SSteven Rostedt
3628da3821bSSteven Rostedtconfig FTRACE_MCOUNT_RECORD
3638da3821bSSteven Rostedt	def_bool y
3648da3821bSSteven Rostedt	depends on DYNAMIC_FTRACE
3658da3821bSSteven Rostedt	depends on HAVE_FTRACE_MCOUNT_RECORD
3668da3821bSSteven Rostedt
36760a11774SSteven Rostedtconfig FTRACE_SELFTEST
36860a11774SSteven Rostedt	bool
36960a11774SSteven Rostedt
37060a11774SSteven Rostedtconfig FTRACE_STARTUP_TEST
37160a11774SSteven Rostedt	bool "Perform a startup test on ftrace"
372*40ada30fSIngo Molnar	depends on TRACING
37360a11774SSteven Rostedt	select FTRACE_SELFTEST
37460a11774SSteven Rostedt	help
37560a11774SSteven Rostedt	  This option performs a series of startup tests on ftrace. On bootup
37660a11774SSteven Rostedt	  a series of tests are made to verify that the tracer is
37760a11774SSteven Rostedt	  functioning properly. It will do tests on all the configured
37860a11774SSteven Rostedt	  tracers of ftrace.
37917d80fd0SPeter Zijlstra
380fe6f90e5SPekka Paalanenconfig MMIOTRACE
381fe6f90e5SPekka Paalanen	bool "Memory mapped IO tracing"
382*40ada30fSIngo Molnar	depends on HAVE_MMIOTRACE_SUPPORT && PCI
383fe6f90e5SPekka Paalanen	select TRACING
384fe6f90e5SPekka Paalanen	help
385fe6f90e5SPekka Paalanen	  Mmiotrace traces Memory Mapped I/O access and is meant for
386fe6f90e5SPekka Paalanen	  debugging and reverse engineering. It is called from the ioremap
387fe6f90e5SPekka Paalanen	  implementation and works via page faults. Tracing is disabled by
388fe6f90e5SPekka Paalanen	  default and can be enabled at run-time.
389fe6f90e5SPekka Paalanen
390fe6f90e5SPekka Paalanen	  See Documentation/tracers/mmiotrace.txt.
391fe6f90e5SPekka Paalanen	  If you are not helping to develop drivers, say N.
392fe6f90e5SPekka Paalanen
393fe6f90e5SPekka Paalanenconfig MMIOTRACE_TEST
394fe6f90e5SPekka Paalanen	tristate "Test module for mmiotrace"
395fe6f90e5SPekka Paalanen	depends on MMIOTRACE && m
396fe6f90e5SPekka Paalanen	help
397fe6f90e5SPekka Paalanen	  This is a dumb module for testing mmiotrace. It is very dangerous
398fe6f90e5SPekka Paalanen	  as it will write garbage to IO memory starting at a given address.
399fe6f90e5SPekka Paalanen	  However, it should be safe to use on e.g. unused portion of VRAM.
400fe6f90e5SPekka Paalanen
401fe6f90e5SPekka Paalanen	  Say N, unless you absolutely know what you are doing.
402fe6f90e5SPekka Paalanen
40317d80fd0SPeter Zijlstraendmenu
404*40ada30fSIngo Molnar
405*40ada30fSIngo Molnarendif # TRACING_SUPPORT
406*40ada30fSIngo Molnar
407