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