]> Git Repo - linux.git/blame - kernel/trace/Kconfig
Merge tag 'arc-5.0-final' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
[linux.git] / kernel / trace / Kconfig
CommitLineData
16444a8a 1#
606576ce
SR
2# Architectures that offer an FUNCTION_TRACER implementation should
3# select HAVE_FUNCTION_TRACER:
16444a8a 4#
2a3a4f66 5
8d26487f
TE
6config USER_STACKTRACE_SUPPORT
7 bool
8
2a3a4f66
FW
9config NOP_TRACER
10 bool
11
78d904b4
SR
12config HAVE_FTRACE_NMI_ENTER
13 bool
555f386c 14 help
5fb94e9c 15 See Documentation/trace/ftrace-design.rst
78d904b4 16
606576ce 17config HAVE_FUNCTION_TRACER
16444a8a 18 bool
555f386c 19 help
5fb94e9c 20 See Documentation/trace/ftrace-design.rst
bc0c38d1 21
fb52607a 22config HAVE_FUNCTION_GRAPH_TRACER
15e6cb36 23 bool
555f386c 24 help
5fb94e9c 25 See Documentation/trace/ftrace-design.rst
15e6cb36 26
677aa9f7
SR
27config HAVE_DYNAMIC_FTRACE
28 bool
555f386c 29 help
5fb94e9c 30 See Documentation/trace/ftrace-design.rst
677aa9f7 31
06aeaaea
MH
32config HAVE_DYNAMIC_FTRACE_WITH_REGS
33 bool
34
8da3821b
SR
35config HAVE_FTRACE_MCOUNT_RECORD
36 bool
555f386c 37 help
5fb94e9c 38 See Documentation/trace/ftrace-design.rst
8da3821b 39
66700001 40config HAVE_SYSCALL_TRACEPOINTS
ee08c6ec 41 bool
555f386c 42 help
5fb94e9c 43 See Documentation/trace/ftrace-design.rst
ee08c6ec 44
a2546fae
SR
45config HAVE_FENTRY
46 bool
47 help
48 Arch supports the gcc options -pg with -mfentry
49
2f4df001
VG
50config HAVE_NOP_MCOUNT
51 bool
52 help
53 Arch supports the gcc options -pg with -mrecord-mcount and -nop-mcount
54
cf4db259 55config HAVE_C_RECORDMCOUNT
72441cb1
SR
56 bool
57 help
58 C version of recordmcount available?
59
352ad25a
SR
60config TRACER_MAX_TRACE
61 bool
62
ea632e9f
JT
63config TRACE_CLOCK
64 bool
65
7a8e76a3
SR
66config RING_BUFFER
67 bool
ea632e9f 68 select TRACE_CLOCK
22287688 69 select IRQ_WORK
7a8e76a3 70
78d904b4
SR
71config FTRACE_NMI_ENTER
72 bool
73 depends on HAVE_FTRACE_NMI_ENTER
74 default y
75
5f77a88b 76config EVENT_TRACING
b11c53e1 77 select CONTEXT_SWITCH_TRACER
60f1d5e3 78 select GLOB
b11c53e1
Z
79 bool
80
81config CONTEXT_SWITCH_TRACER
5f77a88b
TZ
82 bool
83
85bac32c
SR
84config RING_BUFFER_ALLOW_SWAP
85 bool
86 help
87 Allow the use of ring_buffer_swap_cpu.
88 Adds a very slight overhead to tracing when enabled.
89
c3bc8fd6
JFG
90config PREEMPTIRQ_TRACEPOINTS
91 bool
92 depends on TRACE_PREEMPT_TOGGLE || TRACE_IRQFLAGS
93 select TRACING
94 default y
95 help
96 Create preempt/irq toggle tracepoints if needed, so that other parts
97 of the kernel can use them to generate or add hooks to them.
98
5e0a0939
SR
99# All tracer options should select GENERIC_TRACER. For those options that are
100# enabled by all tracers (context switch and event tracer) they select TRACING.
101# This allows those options to appear when no other tracer is selected. But the
102# options do not appear when something else selects it. We need the two options
103# GENERIC_TRACER and TRACING to avoid circular dependencies to accomplish the
40892367 104# hiding of the automatic options.
5e0a0939 105
bc0c38d1
SR
106config TRACING
107 bool
108 select DEBUG_FS
7a8e76a3 109 select RING_BUFFER
c2c80529 110 select STACKTRACE if STACKTRACE_SUPPORT
5f87f112 111 select TRACEPOINTS
f3384b28 112 select NOP_TRACER
769b0441 113 select BINARY_PRINTF
5f77a88b 114 select EVENT_TRACING
ea632e9f 115 select TRACE_CLOCK
bc0c38d1 116
5e0a0939
SR
117config GENERIC_TRACER
118 bool
119 select TRACING
120
40ada30f
IM
121#
122# Minimum requirements an architecture has to meet for us to
123# be able to offer generic tracing facilities:
124#
125config TRACING_SUPPORT
126 bool
0ea5ee03 127 depends on TRACE_IRQFLAGS_SUPPORT
40ada30f 128 depends on STACKTRACE_SUPPORT
422d3c7a 129 default y
40ada30f
IM
130
131if TRACING_SUPPORT
132
4ed9f071
SR
133menuconfig FTRACE
134 bool "Tracers"
65b77242 135 default y if DEBUG_KERNEL
4ed9f071 136 help
40892367 137 Enable the kernel tracing infrastructure.
4ed9f071
SR
138
139if FTRACE
17d80fd0 140
606576ce 141config FUNCTION_TRACER
1b29b018 142 bool "Kernel Function Tracer"
606576ce 143 depends on HAVE_FUNCTION_TRACER
4d7a077c 144 select KALLSYMS
5e0a0939 145 select GENERIC_TRACER
35e8e302 146 select CONTEXT_SWITCH_TRACER
0598e4f0
SRV
147 select GLOB
148 select TASKS_RCU if PREEMPT
1b29b018
SR
149 help
150 Enable the kernel to trace every kernel function. This is done
151 by using a compiler feature to insert a small, 5-byte No-Operation
40892367 152 instruction at the beginning of every kernel function, which NOP
1b29b018
SR
153 sequence is then dynamically patched into a tracer call when
154 tracing is enabled by the administrator. If it's runtime disabled
155 (the bootup default), then the overhead of the instructions is very
156 small and not measurable even in micro-benchmarks.
35e8e302 157
fb52607a
FW
158config FUNCTION_GRAPH_TRACER
159 bool "Kernel Function Graph Tracer"
160 depends on HAVE_FUNCTION_GRAPH_TRACER
15e6cb36 161 depends on FUNCTION_TRACER
eb4a0378 162 depends on !X86_32 || !CC_OPTIMIZE_FOR_SIZE
764f3b95 163 default y
15e6cb36 164 help
fb52607a
FW
165 Enable the kernel to trace a function at both its return
166 and its entry.
692105b8
ML
167 Its first purpose is to trace the duration of functions and
168 draw a call graph for each thread with some information like
40892367 169 the return value. This is done by setting the current return
692105b8 170 address on the current task structure into a stack of calls.
15e6cb36 171
c3bc8fd6
JFG
172config TRACE_PREEMPT_TOGGLE
173 bool
174 help
175 Enables hooks which will be called when preemption is first disabled,
176 and last enabled.
bac429f0 177
d5915816
JF
178config PREEMPTIRQ_EVENTS
179 bool "Enable trace events for preempt and irq disable/enable"
180 select TRACE_IRQFLAGS
c3bc8fd6
JFG
181 select TRACE_PREEMPT_TOGGLE if PREEMPT
182 select GENERIC_TRACER
d5915816
JF
183 default n
184 help
185 Enable tracing of disable and enable events for preemption and irqs.
d5915816 186
81d68a96
SR
187config IRQSOFF_TRACER
188 bool "Interrupts-off Latency Tracer"
189 default n
190 depends on TRACE_IRQFLAGS_SUPPORT
592913ec 191 depends on !ARCH_USES_GETTIMEOFFSET
81d68a96 192 select TRACE_IRQFLAGS
5e0a0939 193 select GENERIC_TRACER
81d68a96 194 select TRACER_MAX_TRACE
85bac32c 195 select RING_BUFFER_ALLOW_SWAP
22cffc2b 196 select TRACER_SNAPSHOT
0b85ffc2 197 select TRACER_SNAPSHOT_PER_CPU_SWAP
81d68a96
SR
198 help
199 This option measures the time spent in irqs-off critical
200 sections, with microsecond accuracy.
201
202 The default measurement method is a maximum search, which is
203 disabled by default and can be runtime (re-)started
204 via:
205
156f5a78 206 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
81d68a96 207
40892367 208 (Note that kernel size and overhead increase with this option
6cd8a4bb
SR
209 enabled. This option and the preempt-off timing option can be
210 used together or separately.)
211
212config PREEMPT_TRACER
213 bool "Preemption-off Latency Tracer"
214 default n
592913ec 215 depends on !ARCH_USES_GETTIMEOFFSET
6cd8a4bb 216 depends on PREEMPT
5e0a0939 217 select GENERIC_TRACER
6cd8a4bb 218 select TRACER_MAX_TRACE
85bac32c 219 select RING_BUFFER_ALLOW_SWAP
22cffc2b 220 select TRACER_SNAPSHOT
0b85ffc2 221 select TRACER_SNAPSHOT_PER_CPU_SWAP
c3bc8fd6 222 select TRACE_PREEMPT_TOGGLE
6cd8a4bb 223 help
40892367 224 This option measures the time spent in preemption-off critical
6cd8a4bb
SR
225 sections, with microsecond accuracy.
226
227 The default measurement method is a maximum search, which is
228 disabled by default and can be runtime (re-)started
229 via:
230
156f5a78 231 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
6cd8a4bb 232
40892367 233 (Note that kernel size and overhead increase with this option
6cd8a4bb
SR
234 enabled. This option and the irqs-off timing option can be
235 used together or separately.)
236
352ad25a
SR
237config SCHED_TRACER
238 bool "Scheduling Latency Tracer"
5e0a0939 239 select GENERIC_TRACER
352ad25a
SR
240 select CONTEXT_SWITCH_TRACER
241 select TRACER_MAX_TRACE
22cffc2b 242 select TRACER_SNAPSHOT
352ad25a
SR
243 help
244 This tracer tracks the latency of the highest priority task
245 to be scheduled in, starting from the point it has woken up.
246
e7c15cd8
SRRH
247config HWLAT_TRACER
248 bool "Tracer to detect hardware latencies (like SMIs)"
249 select GENERIC_TRACER
250 help
251 This tracer, when enabled will create one or more kernel threads,
c5c1ea75 252 depending on what the cpumask file is set to, which each thread
e7c15cd8
SRRH
253 spinning in a loop looking for interruptions caused by
254 something other than the kernel. For example, if a
255 System Management Interrupt (SMI) takes a noticeable amount of
256 time, this tracer will detect it. This is useful for testing
257 if a system is reliable for Real Time tasks.
258
259 Some files are created in the tracing directory when this
260 is enabled:
261
262 hwlat_detector/width - time in usecs for how long to spin for
263 hwlat_detector/window - time in usecs between the start of each
264 iteration
265
266 A kernel thread is created that will spin with interrupts disabled
c5c1ea75 267 for "width" microseconds in every "window" cycle. It will not spin
e7c15cd8
SRRH
268 for "window - width" microseconds, where the system can
269 continue to operate.
270
271 The output will appear in the trace and trace_pipe files.
272
273 When the tracer is not running, it has no affect on the system,
274 but when it is running, it can cause the system to be
275 periodically non responsive. Do not run this tracer on a
276 production system.
277
278 To enable this tracer, echo in "hwlat" into the current_tracer
279 file. Every time a latency is greater than tracing_thresh, it will
280 be recorded into the ring buffer.
281
897f17a6
SR
282config ENABLE_DEFAULT_TRACERS
283 bool "Trace process context switches and events"
5e0a0939 284 depends on !GENERIC_TRACER
b77e38aa
SR
285 select TRACING
286 help
40892367 287 This tracer hooks to various trace points in the kernel,
b77e38aa 288 allowing the user to pick and choose which trace point they
897f17a6 289 want to trace. It also includes the sched_switch tracer plugin.
a7abe97f 290
ee08c6ec
FW
291config FTRACE_SYSCALLS
292 bool "Trace syscalls"
66700001 293 depends on HAVE_SYSCALL_TRACEPOINTS
5e0a0939 294 select GENERIC_TRACER
0ea1c415 295 select KALLSYMS
ee08c6ec
FW
296 help
297 Basic tracer to catch the syscall entry and exit events.
298
debdd57f
HT
299config TRACER_SNAPSHOT
300 bool "Create a snapshot trace buffer"
301 select TRACER_MAX_TRACE
302 help
303 Allow tracing users to take snapshot of the current buffer using the
304 ftrace interface, e.g.:
305
306 echo 1 > /sys/kernel/debug/tracing/snapshot
307 cat snapshot
308
0b85ffc2
SRRH
309config TRACER_SNAPSHOT_PER_CPU_SWAP
310 bool "Allow snapshot to swap per CPU"
311 depends on TRACER_SNAPSHOT
312 select RING_BUFFER_ALLOW_SWAP
313 help
314 Allow doing a snapshot of a single CPU buffer instead of a
315 full swap (all buffers). If this is set, then the following is
316 allowed:
317
318 echo 1 > /sys/kernel/debug/tracing/per_cpu/cpu2/snapshot
319
320 After which, only the tracing buffer for CPU 2 was swapped with
321 the main tracing buffer, and the other CPU buffers remain the same.
322
323 When this is enabled, this adds a little more overhead to the
324 trace recording, as it needs to add some checks to synchronize
325 recording with swaps. But this does not affect the performance
326 of the overall system. This is enabled by default when the preempt
327 or irq latency tracers are enabled, as those need to swap as well
328 and already adds the overhead (plus a lot more).
329
2ed84eeb 330config TRACE_BRANCH_PROFILING
9ae5b879 331 bool
5e0a0939 332 select GENERIC_TRACER
9ae5b879
SR
333
334choice
335 prompt "Branch Profiling"
336 default BRANCH_PROFILE_NONE
337 help
338 The branch profiling is a software profiler. It will add hooks
339 into the C conditionals to test which path a branch takes.
340
341 The likely/unlikely profiler only looks at the conditions that
342 are annotated with a likely or unlikely macro.
343
40892367 344 The "all branch" profiler will profile every if-statement in the
9ae5b879 345 kernel. This profiler will also enable the likely/unlikely
40892367 346 profiler.
9ae5b879 347
40892367
RD
348 Either of the above profilers adds a bit of overhead to the system.
349 If unsure, choose "No branch profiling".
9ae5b879
SR
350
351config BRANCH_PROFILE_NONE
352 bool "No branch profiling"
353 help
40892367
RD
354 No branch profiling. Branch profiling adds a bit of overhead.
355 Only enable it if you want to analyse the branching behavior.
356 Otherwise keep it disabled.
9ae5b879
SR
357
358config PROFILE_ANNOTATED_BRANCHES
359 bool "Trace likely/unlikely profiler"
360 select TRACE_BRANCH_PROFILING
1f0d69a9 361 help
59bf8964 362 This tracer profiles all likely and unlikely macros
1f0d69a9
SR
363 in the kernel. It will display the results in:
364
13e5befa 365 /sys/kernel/debug/tracing/trace_stat/branch_annotated
1f0d69a9 366
40892367 367 Note: this will add a significant overhead; only turn this
1f0d69a9
SR
368 on if you need to profile the system's use of these macros.
369
2bcd521a 370config PROFILE_ALL_BRANCHES
68e76e03 371 bool "Profile all if conditionals" if !FORTIFY_SOURCE
9ae5b879 372 select TRACE_BRANCH_PROFILING
2bcd521a
SR
373 help
374 This tracer profiles all branch conditions. Every if ()
375 taken in the kernel is recorded whether it hit or miss.
376 The results will be displayed in:
377
13e5befa 378 /sys/kernel/debug/tracing/trace_stat/branch_all
2bcd521a 379
9ae5b879
SR
380 This option also enables the likely/unlikely profiler.
381
2bcd521a
SR
382 This configuration, when enabled, will impose a great overhead
383 on the system. This should only be enabled when the system
40892367 384 is to be analyzed in much detail.
9ae5b879 385endchoice
2bcd521a 386
2ed84eeb 387config TRACING_BRANCHES
52f232cb
SR
388 bool
389 help
390 Selected by tracers that will trace the likely and unlikely
391 conditions. This prevents the tracers themselves from being
392 profiled. Profiling the tracing infrastructure can only happen
393 when the likelys and unlikelys are not being traced.
394
2ed84eeb 395config BRANCH_TRACER
52f232cb 396 bool "Trace likely/unlikely instances"
2ed84eeb
SR
397 depends on TRACE_BRANCH_PROFILING
398 select TRACING_BRANCHES
52f232cb
SR
399 help
400 This traces the events of likely and unlikely condition
401 calls in the kernel. The difference between this and the
402 "Trace likely/unlikely profiler" is that this is not a
403 histogram of the callers, but actually places the calling
404 events into a running trace buffer to see when and where the
405 events happened, as well as their results.
406
407 Say N if unsure.
408
e5a81b62
SR
409config STACK_TRACER
410 bool "Trace max stack"
606576ce 411 depends on HAVE_FUNCTION_TRACER
606576ce 412 select FUNCTION_TRACER
e5a81b62 413 select STACKTRACE
4d7a077c 414 select KALLSYMS
e5a81b62 415 help
4519d9e5 416 This special tracer records the maximum stack footprint of the
156f5a78 417 kernel and displays it in /sys/kernel/debug/tracing/stack_trace.
4519d9e5
IM
418
419 This tracer works by hooking into every function call that the
420 kernel executes, and keeping a maximum stack depth value and
f38f1d2a
SR
421 stack-trace saved. If this is configured with DYNAMIC_FTRACE
422 then it will not have any overhead while the stack tracer
423 is disabled.
424
425 To enable the stack tracer on bootup, pass in 'stacktrace'
426 on the kernel command line.
427
428 The stack tracer can also be enabled or disabled via the
429 sysctl kernel.stack_tracer_enabled
4519d9e5
IM
430
431 Say N if unsure.
e5a81b62 432
2db270a8 433config BLK_DEV_IO_TRACE
40892367 434 bool "Support for tracing block IO actions"
2db270a8 435 depends on SYSFS
1dfba05d 436 depends on BLOCK
2db270a8
FW
437 select RELAY
438 select DEBUG_FS
439 select TRACEPOINTS
5e0a0939 440 select GENERIC_TRACER
2db270a8
FW
441 select STACKTRACE
442 help
443 Say Y here if you want to be able to trace the block layer actions
444 on a given queue. Tracing allows you to see any traffic happening
445 on a block device queue. For more information (and the userspace
446 support tools needed), fetch the blktrace tools from:
447
448 git://git.kernel.dk/blktrace.git
449
450 Tracing also is possible using the ftrace interface, e.g.:
451
452 echo 1 > /sys/block/sda/sda1/trace/enable
453 echo blk > /sys/kernel/debug/tracing/current_tracer
454 cat /sys/kernel/debug/tracing/trace_pipe
455
456 If unsure, say N.
36994e58 457
6b0b7551 458config KPROBE_EVENTS
413d37d1 459 depends on KPROBES
f850c30c 460 depends on HAVE_REGS_AND_STACK_ACCESS_API
77b44d1b 461 bool "Enable kprobes-based dynamic events"
413d37d1 462 select TRACING
8ab83f56 463 select PROBE_EVENTS
6212dd29 464 select DYNAMIC_EVENTS
77b44d1b 465 default y
413d37d1 466 help
40892367
RD
467 This allows the user to add tracing events (similar to tracepoints)
468 on the fly via the ftrace interface. See
5fb94e9c 469 Documentation/trace/kprobetrace.rst for more details.
77b44d1b
MH
470
471 Those events can be inserted wherever kprobes can probe, and record
472 various register and memory values.
473
40892367
RD
474 This option is also required by perf-probe subcommand of perf tools.
475 If you want to use perf tools, this option is strongly recommended.
413d37d1 476
45408c4f
MH
477config KPROBE_EVENTS_ON_NOTRACE
478 bool "Do NOT protect notrace function from kprobe events"
479 depends on KPROBE_EVENTS
480 depends on KPROBES_ON_FTRACE
481 default n
482 help
483 This is only for the developers who want to debug ftrace itself
484 using kprobe events.
485
486 If kprobes can use ftrace instead of breakpoint, ftrace related
487 functions are protected from kprobe-events to prevent an infinit
488 recursion or any unexpected execution path which leads to a kernel
489 crash.
490
491 This option disables such protection and allows you to put kprobe
492 events on ftrace functions for debugging ftrace by itself.
493 Note that this might let you shoot yourself in the foot.
494
495 If unsure, say N.
496
6b0b7551 497config UPROBE_EVENTS
f3f096cf
SD
498 bool "Enable uprobes-based dynamic events"
499 depends on ARCH_SUPPORTS_UPROBES
500 depends on MMU
09294e31 501 depends on PERF_EVENTS
f3f096cf
SD
502 select UPROBES
503 select PROBE_EVENTS
0597c49c 504 select DYNAMIC_EVENTS
f3f096cf 505 select TRACING
61f35d75 506 default y
f3f096cf
SD
507 help
508 This allows the user to add tracing events on top of userspace
509 dynamic events (similar to tracepoints) on the fly via the trace
510 events interface. Those events can be inserted wherever uprobes
511 can probe, and record various registers.
512 This option is required if you plan to use perf-probe subcommand
513 of perf tools on user space applications.
514
e1abf2cc
IM
515config BPF_EVENTS
516 depends on BPF_SYSCALL
6b0b7551 517 depends on (KPROBE_EVENTS || UPROBE_EVENTS) && PERF_EVENTS
e1abf2cc
IM
518 bool
519 default y
520 help
521 This allows the user to attach BPF programs to kprobe events.
522
5448d44c
MH
523config DYNAMIC_EVENTS
524 def_bool n
525
8ab83f56
SD
526config PROBE_EVENTS
527 def_bool n
528
3d083395 529config DYNAMIC_FTRACE
db05021d 530 bool "enable/disable function tracing dynamically"
606576ce 531 depends on FUNCTION_TRACER
677aa9f7 532 depends on HAVE_DYNAMIC_FTRACE
3d083395
SR
533 default y
534 help
db05021d
SR
535 This option will modify all the calls to function tracing
536 dynamically (will patch them out of the binary image and
537 replace them with a No-Op instruction) on boot up. During
538 compile time, a table is made of all the locations that ftrace
539 can function trace, and this table is linked into the kernel
540 image. When this is enabled, functions can be individually
541 enabled, and the functions not enabled will not affect
542 performance of the system.
543
544 See the files in /sys/kernel/debug/tracing:
545 available_filter_functions
546 set_ftrace_filter
547 set_ftrace_notrace
3d083395 548
40892367
RD
549 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but
550 otherwise has native performance as long as no tracing is active.
3d083395 551
06aeaaea
MH
552config DYNAMIC_FTRACE_WITH_REGS
553 def_bool y
554 depends on DYNAMIC_FTRACE
555 depends on HAVE_DYNAMIC_FTRACE_WITH_REGS
556
bac429f0
SR
557config FUNCTION_PROFILER
558 bool "Kernel function profiler"
493762fc 559 depends on FUNCTION_TRACER
bac429f0
SR
560 default n
561 help
40892367
RD
562 This option enables the kernel function profiler. A file is created
563 in debugfs called function_profile_enabled which defaults to zero.
564 When a 1 is echoed into this file profiling begins, and when a
565 zero is entered, profiling stops. A "functions" file is created in
1fee4f77 566 the trace_stat directory; this file shows the list of functions that
40892367 567 have been hit and their counters.
bac429f0 568
40892367 569 If in doubt, say N.
bac429f0 570
9802d865
JB
571config BPF_KPROBE_OVERRIDE
572 bool "Enable BPF programs to override a kprobed function"
573 depends on BPF_EVENTS
540adea3 574 depends on FUNCTION_ERROR_INJECTION
9802d865
JB
575 default n
576 help
577 Allows BPF to override the execution of a probed function and
578 set a different return value. This is used for error injection.
579
8da3821b
SR
580config FTRACE_MCOUNT_RECORD
581 def_bool y
582 depends on DYNAMIC_FTRACE
583 depends on HAVE_FTRACE_MCOUNT_RECORD
584
60a11774
SR
585config FTRACE_SELFTEST
586 bool
587
588config FTRACE_STARTUP_TEST
589 bool "Perform a startup test on ftrace"
5e0a0939 590 depends on GENERIC_TRACER
60a11774
SR
591 select FTRACE_SELFTEST
592 help
593 This option performs a series of startup tests on ftrace. On bootup
594 a series of tests are made to verify that the tracer is
595 functioning properly. It will do tests on all the configured
596 tracers of ftrace.
17d80fd0 597
1f5a6b45
SR
598config EVENT_TRACE_TEST_SYSCALLS
599 bool "Run selftest on syscall events"
600 depends on FTRACE_STARTUP_TEST
601 help
602 This option will also enable testing every syscall event.
603 It only enables the event and disables it and runs various loads
604 with the event enabled. This adds a bit more time for kernel boot
605 up since it runs this on every system call defined.
606
607 TBD - enable a way to actually call the syscalls as we test their
608 events
609
fe6f90e5
PP
610config MMIOTRACE
611 bool "Memory mapped IO tracing"
40ada30f 612 depends on HAVE_MMIOTRACE_SUPPORT && PCI
5e0a0939 613 select GENERIC_TRACER
fe6f90e5
PP
614 help
615 Mmiotrace traces Memory Mapped I/O access and is meant for
616 debugging and reverse engineering. It is called from the ioremap
617 implementation and works via page faults. Tracing is disabled by
618 default and can be enabled at run-time.
619
5fb94e9c 620 See Documentation/trace/mmiotrace.rst.
fe6f90e5
PP
621 If you are not helping to develop drivers, say N.
622
08d43a5f
TZ
623config TRACING_MAP
624 bool
625 depends on ARCH_HAVE_NMI_SAFE_CMPXCHG
08d43a5f
TZ
626 help
627 tracing_map is a special-purpose lock-free map for tracing,
628 separated out as a stand-alone facility in order to allow it
629 to be shared between multiple tracers. It isn't meant to be
630 generally used outside of that context, and is normally
631 selected by tracers that use it.
632
7ef224d1
TZ
633config HIST_TRIGGERS
634 bool "Histogram triggers"
635 depends on ARCH_HAVE_NMI_SAFE_CMPXCHG
636 select TRACING_MAP
7ad8fb61 637 select TRACING
7bbab38d 638 select DYNAMIC_EVENTS
7ef224d1
TZ
639 default n
640 help
641 Hist triggers allow one or more arbitrary trace event fields
642 to be aggregated into hash tables and dumped to stdout by
643 reading a debugfs/tracefs file. They're useful for
644 gathering quick and dirty (though precise) summaries of
645 event activity as an initial guide for further investigation
646 using more advanced tools.
647
89e270c1
TZ
648 Inter-event tracing of quantities such as latencies is also
649 supported using hist triggers under this option.
650
ea272257 651 See Documentation/trace/histogram.rst.
7ef224d1
TZ
652 If in doubt, say N.
653
fe6f90e5
PP
654config MMIOTRACE_TEST
655 tristate "Test module for mmiotrace"
656 depends on MMIOTRACE && m
657 help
658 This is a dumb module for testing mmiotrace. It is very dangerous
659 as it will write garbage to IO memory starting at a given address.
660 However, it should be safe to use on e.g. unused portion of VRAM.
661
662 Say N, unless you absolutely know what you are doing.
663
81dc9f0e
SRRH
664config TRACEPOINT_BENCHMARK
665 bool "Add tracepoint that benchmarks tracepoints"
666 help
667 This option creates the tracepoint "benchmark:benchmark_event".
668 When the tracepoint is enabled, it kicks off a kernel thread that
669 goes into an infinite loop (calling cond_sched() to let other tasks
670 run), and calls the tracepoint. Each iteration will record the time
671 it took to write to the tracepoint and the next iteration that
672 data will be passed to the tracepoint itself. That is, the tracepoint
673 will report the time it took to do the previous tracepoint.
674 The string written to the tracepoint is a static string of 128 bytes
675 to keep the time the same. The initial string is simply a write of
676 "START". The second string records the cold cache time of the first
677 write which is not added to the rest of the calculations.
678
679 As it is a tight loop, it benchmarks as hot cache. That's fine because
680 we care most about hot paths that are probably in cache already.
681
682 An example of the output:
683
684 START
685 first=3672 [COLD CACHED]
686 last=632 first=3672 max=632 min=632 avg=316 std=446 std^2=199712
687 last=278 first=3672 max=632 min=278 avg=303 std=316 std^2=100337
688 last=277 first=3672 max=632 min=277 avg=296 std=258 std^2=67064
689 last=273 first=3672 max=632 min=273 avg=292 std=224 std^2=50411
690 last=273 first=3672 max=632 min=273 avg=288 std=200 std^2=40389
691 last=281 first=3672 max=632 min=273 avg=287 std=183 std^2=33666
692
693
5092dbc9
SR
694config RING_BUFFER_BENCHMARK
695 tristate "Ring buffer benchmark stress tester"
696 depends on RING_BUFFER
697 help
40892367
RD
698 This option creates a test to stress the ring buffer and benchmark it.
699 It creates its own ring buffer such that it will not interfere with
5092dbc9
SR
700 any other users of the ring buffer (such as ftrace). It then creates
701 a producer and consumer that will run for 10 seconds and sleep for
702 10 seconds. Each interval it will print out the number of events
703 it recorded and give a rough estimate of how long each iteration took.
704
705 It does not disable interrupts or raise its priority, so it may be
706 affected by processes that are running.
707
40892367 708 If unsure, say N.
5092dbc9 709
6c43e554
SRRH
710config RING_BUFFER_STARTUP_TEST
711 bool "Ring buffer startup self test"
712 depends on RING_BUFFER
713 help
714 Run a simple self test on the ring buffer on boot up. Late in the
715 kernel boot sequence, the test will start that kicks off
716 a thread per cpu. Each thread will write various size events
717 into the ring buffer. Another thread is created to send IPIs
718 to each of the threads, where the IPI handler will also write
719 to the ring buffer, to test/stress the nesting ability.
720 If any anomalies are discovered, a warning will be displayed
721 and all ring buffers will be disabled.
722
723 The test runs for 10 seconds. This will slow your boot time
724 by at least 10 more seconds.
725
726 At the end of the test, statics and more checks are done.
727 It will output the stats of each per cpu buffer. What
728 was written, the sizes, what was read, what was lost, and
729 other similar details.
730
731 If unsure, say N
732
f96e8577
JFG
733config PREEMPTIRQ_DELAY_TEST
734 tristate "Preempt / IRQ disable delay thread to test latency tracers"
735 depends on m
736 help
737 Select this option to build a test module that can help test latency
738 tracers by executing a preempt or irq disable section with a user
739 configurable delay. The module busy waits for the duration of the
740 critical section.
741
742 For example, the following invocation forces a one-time irq-disabled
743 critical section for 500us:
744 modprobe preemptirq_delay_test test_mode=irq delay=500000
745
746 If unsure, say N
747
681bec03
JL
748config TRACE_EVAL_MAP_FILE
749 bool "Show eval mappings for trace events"
9828413d
SRRH
750 depends on TRACING
751 help
681bec03
JL
752 The "print fmt" of the trace events will show the enum/sizeof names
753 instead of their values. This can cause problems for user space tools
754 that use this string to parse the raw data as user space does not know
9828413d
SRRH
755 how to convert the string to its value.
756
757 To fix this, there's a special macro in the kernel that can be used
681bec03
JL
758 to convert an enum/sizeof into its value. If this macro is used, then
759 the print fmt strings will be converted to their values.
9828413d
SRRH
760
761 If something does not get converted properly, this option can be
681bec03 762 used to show what enums/sizeof the kernel tried to convert.
9828413d 763
681bec03
JL
764 This option is for debugging the conversions. A file is created
765 in the tracing directory called "eval_map" that will show the
9828413d
SRRH
766 names matched with their values and what trace event system they
767 belong too.
768
769 Normally, the mapping of the strings to values will be freed after
770 boot up or module load. With this option, they will not be freed, as
681bec03 771 they are needed for the "eval_map" file. Enabling this option will
9828413d
SRRH
772 increase the memory footprint of the running kernel.
773
774 If unsure, say N
775
ddd70280
TS
776config TRACING_EVENTS_GPIO
777 bool "Trace gpio events"
778 depends on GPIOLIB
779 default y
780 help
781 Enable tracing events for gpio subsystem
782
6b7dca40
MH
783config GCOV_PROFILE_FTRACE
784 bool "Enable GCOV profiling on ftrace subsystem"
785 depends on GCOV_KERNEL
786 help
787 Enable GCOV profiling on ftrace subsystem for checking
788 which functions/lines are tested.
789
790 If unsure, say N.
791
792 Note that on a kernel compiled with this config, ftrace will
793 run significantly slower.
794
4ed9f071 795endif # FTRACE
40ada30f
IM
796
797endif # TRACING_SUPPORT
798
This page took 0.64899 seconds and 4 git commands to generate.