tracing: Add -mcount-nop option support
[linux-2.6-block.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
77b44d1b 464 default y
413d37d1 465 help
40892367
RD
466 This allows the user to add tracing events (similar to tracepoints)
467 on the fly via the ftrace interface. See
5fb94e9c 468 Documentation/trace/kprobetrace.rst for more details.
77b44d1b
MH
469
470 Those events can be inserted wherever kprobes can probe, and record
471 various register and memory values.
472
40892367
RD
473 This option is also required by perf-probe subcommand of perf tools.
474 If you want to use perf tools, this option is strongly recommended.
413d37d1 475
45408c4f
MH
476config KPROBE_EVENTS_ON_NOTRACE
477 bool "Do NOT protect notrace function from kprobe events"
478 depends on KPROBE_EVENTS
479 depends on KPROBES_ON_FTRACE
480 default n
481 help
482 This is only for the developers who want to debug ftrace itself
483 using kprobe events.
484
485 If kprobes can use ftrace instead of breakpoint, ftrace related
486 functions are protected from kprobe-events to prevent an infinit
487 recursion or any unexpected execution path which leads to a kernel
488 crash.
489
490 This option disables such protection and allows you to put kprobe
491 events on ftrace functions for debugging ftrace by itself.
492 Note that this might let you shoot yourself in the foot.
493
494 If unsure, say N.
495
6b0b7551 496config UPROBE_EVENTS
f3f096cf
SD
497 bool "Enable uprobes-based dynamic events"
498 depends on ARCH_SUPPORTS_UPROBES
499 depends on MMU
09294e31 500 depends on PERF_EVENTS
f3f096cf
SD
501 select UPROBES
502 select PROBE_EVENTS
503 select TRACING
61f35d75 504 default y
f3f096cf
SD
505 help
506 This allows the user to add tracing events on top of userspace
507 dynamic events (similar to tracepoints) on the fly via the trace
508 events interface. Those events can be inserted wherever uprobes
509 can probe, and record various registers.
510 This option is required if you plan to use perf-probe subcommand
511 of perf tools on user space applications.
512
e1abf2cc
IM
513config BPF_EVENTS
514 depends on BPF_SYSCALL
6b0b7551 515 depends on (KPROBE_EVENTS || UPROBE_EVENTS) && PERF_EVENTS
e1abf2cc
IM
516 bool
517 default y
518 help
519 This allows the user to attach BPF programs to kprobe events.
520
8ab83f56
SD
521config PROBE_EVENTS
522 def_bool n
523
3d083395 524config DYNAMIC_FTRACE
db05021d 525 bool "enable/disable function tracing dynamically"
606576ce 526 depends on FUNCTION_TRACER
677aa9f7 527 depends on HAVE_DYNAMIC_FTRACE
3d083395
SR
528 default y
529 help
db05021d
SR
530 This option will modify all the calls to function tracing
531 dynamically (will patch them out of the binary image and
532 replace them with a No-Op instruction) on boot up. During
533 compile time, a table is made of all the locations that ftrace
534 can function trace, and this table is linked into the kernel
535 image. When this is enabled, functions can be individually
536 enabled, and the functions not enabled will not affect
537 performance of the system.
538
539 See the files in /sys/kernel/debug/tracing:
540 available_filter_functions
541 set_ftrace_filter
542 set_ftrace_notrace
3d083395 543
40892367
RD
544 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but
545 otherwise has native performance as long as no tracing is active.
3d083395 546
06aeaaea
MH
547config DYNAMIC_FTRACE_WITH_REGS
548 def_bool y
549 depends on DYNAMIC_FTRACE
550 depends on HAVE_DYNAMIC_FTRACE_WITH_REGS
551
bac429f0
SR
552config FUNCTION_PROFILER
553 bool "Kernel function profiler"
493762fc 554 depends on FUNCTION_TRACER
bac429f0
SR
555 default n
556 help
40892367
RD
557 This option enables the kernel function profiler. A file is created
558 in debugfs called function_profile_enabled which defaults to zero.
559 When a 1 is echoed into this file profiling begins, and when a
560 zero is entered, profiling stops. A "functions" file is created in
561 the trace_stats directory; this file shows the list of functions that
562 have been hit and their counters.
bac429f0 563
40892367 564 If in doubt, say N.
bac429f0 565
9802d865
JB
566config BPF_KPROBE_OVERRIDE
567 bool "Enable BPF programs to override a kprobed function"
568 depends on BPF_EVENTS
540adea3 569 depends on FUNCTION_ERROR_INJECTION
9802d865
JB
570 default n
571 help
572 Allows BPF to override the execution of a probed function and
573 set a different return value. This is used for error injection.
574
8da3821b
SR
575config FTRACE_MCOUNT_RECORD
576 def_bool y
577 depends on DYNAMIC_FTRACE
578 depends on HAVE_FTRACE_MCOUNT_RECORD
579
60a11774
SR
580config FTRACE_SELFTEST
581 bool
582
583config FTRACE_STARTUP_TEST
584 bool "Perform a startup test on ftrace"
5e0a0939 585 depends on GENERIC_TRACER
60a11774
SR
586 select FTRACE_SELFTEST
587 help
588 This option performs a series of startup tests on ftrace. On bootup
589 a series of tests are made to verify that the tracer is
590 functioning properly. It will do tests on all the configured
591 tracers of ftrace.
17d80fd0 592
1f5a6b45
SR
593config EVENT_TRACE_TEST_SYSCALLS
594 bool "Run selftest on syscall events"
595 depends on FTRACE_STARTUP_TEST
596 help
597 This option will also enable testing every syscall event.
598 It only enables the event and disables it and runs various loads
599 with the event enabled. This adds a bit more time for kernel boot
600 up since it runs this on every system call defined.
601
602 TBD - enable a way to actually call the syscalls as we test their
603 events
604
fe6f90e5
PP
605config MMIOTRACE
606 bool "Memory mapped IO tracing"
40ada30f 607 depends on HAVE_MMIOTRACE_SUPPORT && PCI
5e0a0939 608 select GENERIC_TRACER
fe6f90e5
PP
609 help
610 Mmiotrace traces Memory Mapped I/O access and is meant for
611 debugging and reverse engineering. It is called from the ioremap
612 implementation and works via page faults. Tracing is disabled by
613 default and can be enabled at run-time.
614
5fb94e9c 615 See Documentation/trace/mmiotrace.rst.
fe6f90e5
PP
616 If you are not helping to develop drivers, say N.
617
08d43a5f
TZ
618config TRACING_MAP
619 bool
620 depends on ARCH_HAVE_NMI_SAFE_CMPXCHG
08d43a5f
TZ
621 help
622 tracing_map is a special-purpose lock-free map for tracing,
623 separated out as a stand-alone facility in order to allow it
624 to be shared between multiple tracers. It isn't meant to be
625 generally used outside of that context, and is normally
626 selected by tracers that use it.
627
7ef224d1
TZ
628config HIST_TRIGGERS
629 bool "Histogram triggers"
630 depends on ARCH_HAVE_NMI_SAFE_CMPXCHG
631 select TRACING_MAP
7ad8fb61 632 select TRACING
7ef224d1
TZ
633 default n
634 help
635 Hist triggers allow one or more arbitrary trace event fields
636 to be aggregated into hash tables and dumped to stdout by
637 reading a debugfs/tracefs file. They're useful for
638 gathering quick and dirty (though precise) summaries of
639 event activity as an initial guide for further investigation
640 using more advanced tools.
641
89e270c1
TZ
642 Inter-event tracing of quantities such as latencies is also
643 supported using hist triggers under this option.
644
645 See Documentation/trace/histogram.txt.
7ef224d1
TZ
646 If in doubt, say N.
647
fe6f90e5
PP
648config MMIOTRACE_TEST
649 tristate "Test module for mmiotrace"
650 depends on MMIOTRACE && m
651 help
652 This is a dumb module for testing mmiotrace. It is very dangerous
653 as it will write garbage to IO memory starting at a given address.
654 However, it should be safe to use on e.g. unused portion of VRAM.
655
656 Say N, unless you absolutely know what you are doing.
657
81dc9f0e
SRRH
658config TRACEPOINT_BENCHMARK
659 bool "Add tracepoint that benchmarks tracepoints"
660 help
661 This option creates the tracepoint "benchmark:benchmark_event".
662 When the tracepoint is enabled, it kicks off a kernel thread that
663 goes into an infinite loop (calling cond_sched() to let other tasks
664 run), and calls the tracepoint. Each iteration will record the time
665 it took to write to the tracepoint and the next iteration that
666 data will be passed to the tracepoint itself. That is, the tracepoint
667 will report the time it took to do the previous tracepoint.
668 The string written to the tracepoint is a static string of 128 bytes
669 to keep the time the same. The initial string is simply a write of
670 "START". The second string records the cold cache time of the first
671 write which is not added to the rest of the calculations.
672
673 As it is a tight loop, it benchmarks as hot cache. That's fine because
674 we care most about hot paths that are probably in cache already.
675
676 An example of the output:
677
678 START
679 first=3672 [COLD CACHED]
680 last=632 first=3672 max=632 min=632 avg=316 std=446 std^2=199712
681 last=278 first=3672 max=632 min=278 avg=303 std=316 std^2=100337
682 last=277 first=3672 max=632 min=277 avg=296 std=258 std^2=67064
683 last=273 first=3672 max=632 min=273 avg=292 std=224 std^2=50411
684 last=273 first=3672 max=632 min=273 avg=288 std=200 std^2=40389
685 last=281 first=3672 max=632 min=273 avg=287 std=183 std^2=33666
686
687
5092dbc9
SR
688config RING_BUFFER_BENCHMARK
689 tristate "Ring buffer benchmark stress tester"
690 depends on RING_BUFFER
691 help
40892367
RD
692 This option creates a test to stress the ring buffer and benchmark it.
693 It creates its own ring buffer such that it will not interfere with
5092dbc9
SR
694 any other users of the ring buffer (such as ftrace). It then creates
695 a producer and consumer that will run for 10 seconds and sleep for
696 10 seconds. Each interval it will print out the number of events
697 it recorded and give a rough estimate of how long each iteration took.
698
699 It does not disable interrupts or raise its priority, so it may be
700 affected by processes that are running.
701
40892367 702 If unsure, say N.
5092dbc9 703
6c43e554
SRRH
704config RING_BUFFER_STARTUP_TEST
705 bool "Ring buffer startup self test"
706 depends on RING_BUFFER
707 help
708 Run a simple self test on the ring buffer on boot up. Late in the
709 kernel boot sequence, the test will start that kicks off
710 a thread per cpu. Each thread will write various size events
711 into the ring buffer. Another thread is created to send IPIs
712 to each of the threads, where the IPI handler will also write
713 to the ring buffer, to test/stress the nesting ability.
714 If any anomalies are discovered, a warning will be displayed
715 and all ring buffers will be disabled.
716
717 The test runs for 10 seconds. This will slow your boot time
718 by at least 10 more seconds.
719
720 At the end of the test, statics and more checks are done.
721 It will output the stats of each per cpu buffer. What
722 was written, the sizes, what was read, what was lost, and
723 other similar details.
724
725 If unsure, say N
726
f96e8577
JFG
727config PREEMPTIRQ_DELAY_TEST
728 tristate "Preempt / IRQ disable delay thread to test latency tracers"
729 depends on m
730 help
731 Select this option to build a test module that can help test latency
732 tracers by executing a preempt or irq disable section with a user
733 configurable delay. The module busy waits for the duration of the
734 critical section.
735
736 For example, the following invocation forces a one-time irq-disabled
737 critical section for 500us:
738 modprobe preemptirq_delay_test test_mode=irq delay=500000
739
740 If unsure, say N
741
681bec03
JL
742config TRACE_EVAL_MAP_FILE
743 bool "Show eval mappings for trace events"
9828413d
SRRH
744 depends on TRACING
745 help
681bec03
JL
746 The "print fmt" of the trace events will show the enum/sizeof names
747 instead of their values. This can cause problems for user space tools
748 that use this string to parse the raw data as user space does not know
9828413d
SRRH
749 how to convert the string to its value.
750
751 To fix this, there's a special macro in the kernel that can be used
681bec03
JL
752 to convert an enum/sizeof into its value. If this macro is used, then
753 the print fmt strings will be converted to their values.
9828413d
SRRH
754
755 If something does not get converted properly, this option can be
681bec03 756 used to show what enums/sizeof the kernel tried to convert.
9828413d 757
681bec03
JL
758 This option is for debugging the conversions. A file is created
759 in the tracing directory called "eval_map" that will show the
9828413d
SRRH
760 names matched with their values and what trace event system they
761 belong too.
762
763 Normally, the mapping of the strings to values will be freed after
764 boot up or module load. With this option, they will not be freed, as
681bec03 765 they are needed for the "eval_map" file. Enabling this option will
9828413d
SRRH
766 increase the memory footprint of the running kernel.
767
768 If unsure, say N
769
ddd70280
TS
770config TRACING_EVENTS_GPIO
771 bool "Trace gpio events"
772 depends on GPIOLIB
773 default y
774 help
775 Enable tracing events for gpio subsystem
776
4ed9f071 777endif # FTRACE
40ada30f
IM
778
779endif # TRACING_SUPPORT
780