Merge tag 'tags/bcm2835-defconfig-next-2020-03-27' into defconfig/next
[linux-2.6-microblaze.git] / lib / Kconfig.debug
1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "Kernel hacking"
3
4 menu "printk and dmesg options"
5
6 config PRINTK_TIME
7         bool "Show timing information on printks"
8         depends on PRINTK
9         help
10           Selecting this option causes time stamps of the printk()
11           messages to be added to the output of the syslog() system
12           call and at the console.
13
14           The timestamp is always recorded internally, and exported
15           to /dev/kmsg. This flag just specifies if the timestamp should
16           be included, not that the timestamp is recorded.
17
18           The behavior is also controlled by the kernel command line
19           parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst
20
21 config PRINTK_CALLER
22         bool "Show caller information on printks"
23         depends on PRINTK
24         help
25           Selecting this option causes printk() to add a caller "thread id" (if
26           in task context) or a caller "processor id" (if not in task context)
27           to every message.
28
29           This option is intended for environments where multiple threads
30           concurrently call printk() for many times, for it is difficult to
31           interpret without knowing where these lines (or sometimes individual
32           line which was divided into multiple lines due to race) came from.
33
34           Since toggling after boot makes the code racy, currently there is
35           no option to enable/disable at the kernel command line parameter or
36           sysfs interface.
37
38 config CONSOLE_LOGLEVEL_DEFAULT
39         int "Default console loglevel (1-15)"
40         range 1 15
41         default "7"
42         help
43           Default loglevel to determine what will be printed on the console.
44
45           Setting a default here is equivalent to passing in loglevel=<x> in
46           the kernel bootargs. loglevel=<x> continues to override whatever
47           value is specified here as well.
48
49           Note: This does not affect the log level of un-prefixed printk()
50           usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
51           option.
52
53 config CONSOLE_LOGLEVEL_QUIET
54         int "quiet console loglevel (1-15)"
55         range 1 15
56         default "4"
57         help
58           loglevel to use when "quiet" is passed on the kernel commandline.
59
60           When "quiet" is passed on the kernel commandline this loglevel
61           will be used as the loglevel. IOW passing "quiet" will be the
62           equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
63
64 config MESSAGE_LOGLEVEL_DEFAULT
65         int "Default message log level (1-7)"
66         range 1 7
67         default "4"
68         help
69           Default log level for printk statements with no specified priority.
70
71           This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
72           that are auditing their logs closely may want to set it to a lower
73           priority.
74
75           Note: This does not affect what message level gets printed on the console
76           by default. To change that, use loglevel=<x> in the kernel bootargs,
77           or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.
78
79 config BOOT_PRINTK_DELAY
80         bool "Delay each boot printk message by N milliseconds"
81         depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
82         help
83           This build option allows you to read kernel boot messages
84           by inserting a short delay after each one.  The delay is
85           specified in milliseconds on the kernel command line,
86           using "boot_delay=N".
87
88           It is likely that you would also need to use "lpj=M" to preset
89           the "loops per jiffie" value.
90           See a previous boot log for the "lpj" value to use for your
91           system, and then set "lpj=M" before setting "boot_delay=N".
92           NOTE:  Using this option may adversely affect SMP systems.
93           I.e., processors other than the first one may not boot up.
94           BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
95           what it believes to be lockup conditions.
96
97 config DYNAMIC_DEBUG
98         bool "Enable dynamic printk() support"
99         default n
100         depends on PRINTK
101         depends on (DEBUG_FS || PROC_FS)
102         help
103
104           Compiles debug level messages into the kernel, which would not
105           otherwise be available at runtime. These messages can then be
106           enabled/disabled based on various levels of scope - per source file,
107           function, module, format string, and line number. This mechanism
108           implicitly compiles in all pr_debug() and dev_dbg() calls, which
109           enlarges the kernel text size by about 2%.
110
111           If a source file is compiled with DEBUG flag set, any
112           pr_debug() calls in it are enabled by default, but can be
113           disabled at runtime as below.  Note that DEBUG flag is
114           turned on by many CONFIG_*DEBUG* options.
115
116           Usage:
117
118           Dynamic debugging is controlled via the 'dynamic_debug/control' file,
119           which is contained in the 'debugfs' filesystem or procfs.
120           Thus, the debugfs or procfs filesystem must first be mounted before
121           making use of this feature.
122           We refer the control file as: <debugfs>/dynamic_debug/control. This
123           file contains a list of the debug statements that can be enabled. The
124           format for each line of the file is:
125
126                 filename:lineno [module]function flags format
127
128           filename : source file of the debug statement
129           lineno : line number of the debug statement
130           module : module that contains the debug statement
131           function : function that contains the debug statement
132           flags : '=p' means the line is turned 'on' for printing
133           format : the format used for the debug statement
134
135           From a live system:
136
137                 nullarbor:~ # cat <debugfs>/dynamic_debug/control
138                 # filename:lineno [module]function flags format
139                 fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
140                 fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
141                 fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
142
143           Example usage:
144
145                 // enable the message at line 1603 of file svcsock.c
146                 nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
147                                                 <debugfs>/dynamic_debug/control
148
149                 // enable all the messages in file svcsock.c
150                 nullarbor:~ # echo -n 'file svcsock.c +p' >
151                                                 <debugfs>/dynamic_debug/control
152
153                 // enable all the messages in the NFS server module
154                 nullarbor:~ # echo -n 'module nfsd +p' >
155                                                 <debugfs>/dynamic_debug/control
156
157                 // enable all 12 messages in the function svc_process()
158                 nullarbor:~ # echo -n 'func svc_process +p' >
159                                                 <debugfs>/dynamic_debug/control
160
161                 // disable all 12 messages in the function svc_process()
162                 nullarbor:~ # echo -n 'func svc_process -p' >
163                                                 <debugfs>/dynamic_debug/control
164
165           See Documentation/admin-guide/dynamic-debug-howto.rst for additional
166           information.
167
168 config SYMBOLIC_ERRNAME
169         bool "Support symbolic error names in printf"
170         default y if PRINTK
171         help
172           If you say Y here, the kernel's printf implementation will
173           be able to print symbolic error names such as ENOSPC instead
174           of the number 28. It makes the kernel image slightly larger
175           (about 3KB), but can make the kernel logs easier to read.
176
177 config DEBUG_BUGVERBOSE
178         bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
179         depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
180         default y
181         help
182           Say Y here to make BUG() panics output the file name and line number
183           of the BUG call as well as the EIP and oops trace.  This aids
184           debugging but costs about 70-100K of memory.
185
186 endmenu # "printk and dmesg options"
187
188 menu "Compile-time checks and compiler options"
189
190 config DEBUG_INFO
191         bool "Compile the kernel with debug info"
192         depends on DEBUG_KERNEL && !COMPILE_TEST
193         help
194           If you say Y here the resulting kernel image will include
195           debugging info resulting in a larger kernel image.
196           This adds debug symbols to the kernel and modules (gcc -g), and
197           is needed if you intend to use kernel crashdump or binary object
198           tools like crash, kgdb, LKCD, gdb, etc on the kernel.
199           Say Y here only if you plan to debug the kernel.
200
201           If unsure, say N.
202
203 config DEBUG_INFO_REDUCED
204         bool "Reduce debugging information"
205         depends on DEBUG_INFO
206         help
207           If you say Y here gcc is instructed to generate less debugging
208           information for structure types. This means that tools that
209           need full debugging information (like kgdb or systemtap) won't
210           be happy. But if you merely need debugging information to
211           resolve line numbers there is no loss. Advantage is that
212           build directory object sizes shrink dramatically over a full
213           DEBUG_INFO build and compile times are reduced too.
214           Only works with newer gcc versions.
215
216 config DEBUG_INFO_SPLIT
217         bool "Produce split debuginfo in .dwo files"
218         depends on DEBUG_INFO
219         depends on $(cc-option,-gsplit-dwarf)
220         help
221           Generate debug info into separate .dwo files. This significantly
222           reduces the build directory size for builds with DEBUG_INFO,
223           because it stores the information only once on disk in .dwo
224           files instead of multiple times in object files and executables.
225           In addition the debug information is also compressed.
226
227           Requires recent gcc (4.7+) and recent gdb/binutils.
228           Any tool that packages or reads debug information would need
229           to know about the .dwo files and include them.
230           Incompatible with older versions of ccache.
231
232 config DEBUG_INFO_DWARF4
233         bool "Generate dwarf4 debuginfo"
234         depends on DEBUG_INFO
235         depends on $(cc-option,-gdwarf-4)
236         help
237           Generate dwarf4 debug info. This requires recent versions
238           of gcc and gdb. It makes the debug information larger.
239           But it significantly improves the success of resolving
240           variables in gdb on optimized code.
241
242 config DEBUG_INFO_BTF
243         bool "Generate BTF typeinfo"
244         depends on DEBUG_INFO
245         help
246           Generate deduplicated BTF type information from DWARF debug info.
247           Turning this on expects presence of pahole tool, which will convert
248           DWARF type info into equivalent deduplicated BTF type info.
249
250 config GDB_SCRIPTS
251         bool "Provide GDB scripts for kernel debugging"
252         depends on DEBUG_INFO
253         help
254           This creates the required links to GDB helper scripts in the
255           build directory. If you load vmlinux into gdb, the helper
256           scripts will be automatically imported by gdb as well, and
257           additional functions are available to analyze a Linux kernel
258           instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
259           for further details.
260
261 config ENABLE_MUST_CHECK
262         bool "Enable __must_check logic"
263         default y
264         help
265           Enable the __must_check logic in the kernel build.  Disable this to
266           suppress the "warning: ignoring return value of 'foo', declared with
267           attribute warn_unused_result" messages.
268
269 config FRAME_WARN
270         int "Warn for stack frames larger than"
271         range 0 8192
272         default 2048 if GCC_PLUGIN_LATENT_ENTROPY
273         default 1280 if (!64BIT && PARISC)
274         default 1024 if (!64BIT && !PARISC)
275         default 2048 if 64BIT
276         help
277           Tell gcc to warn at build time for stack frames larger than this.
278           Setting this too low will cause a lot of warnings.
279           Setting it to 0 disables the warning.
280
281 config STRIP_ASM_SYMS
282         bool "Strip assembler-generated symbols during link"
283         default n
284         help
285           Strip internal assembler-generated symbols during a link (symbols
286           that look like '.Lxxx') so they don't pollute the output of
287           get_wchan() and suchlike.
288
289 config READABLE_ASM
290         bool "Generate readable assembler code"
291         depends on DEBUG_KERNEL
292         help
293           Disable some compiler optimizations that tend to generate human unreadable
294           assembler output. This may make the kernel slightly slower, but it helps
295           to keep kernel developers who have to stare a lot at assembler listings
296           sane.
297
298 config HEADERS_INSTALL
299         bool "Install uapi headers to usr/include"
300         depends on !UML
301         help
302           This option will install uapi headers (headers exported to user-space)
303           into the usr/include directory for use during the kernel build.
304           This is unneeded for building the kernel itself, but needed for some
305           user-space program samples. It is also needed by some features such
306           as uapi header sanity checks.
307
308 config DEBUG_SECTION_MISMATCH
309         bool "Enable full Section mismatch analysis"
310         help
311           The section mismatch analysis checks if there are illegal
312           references from one section to another section.
313           During linktime or runtime, some sections are dropped;
314           any use of code/data previously in these sections would
315           most likely result in an oops.
316           In the code, functions and variables are annotated with
317           __init,, etc. (see the full list in include/linux/init.h),
318           which results in the code/data being placed in specific sections.
319           The section mismatch analysis is always performed after a full
320           kernel build, and enabling this option causes the following
321           additional step to occur:
322           - Add the option -fno-inline-functions-called-once to gcc commands.
323             When inlining a function annotated with __init in a non-init
324             function, we would lose the section information and thus
325             the analysis would not catch the illegal reference.
326             This option tells gcc to inline less (but it does result in
327             a larger kernel).
328
329 config SECTION_MISMATCH_WARN_ONLY
330         bool "Make section mismatch errors non-fatal"
331         default y
332         help
333           If you say N here, the build process will fail if there are any
334           section mismatch, instead of just throwing warnings.
335
336           If unsure, say Y.
337
338 #
339 # Select this config option from the architecture Kconfig, if it
340 # is preferred to always offer frame pointers as a config
341 # option on the architecture (regardless of KERNEL_DEBUG):
342 #
343 config ARCH_WANT_FRAME_POINTERS
344         bool
345
346 config FRAME_POINTER
347         bool "Compile the kernel with frame pointers"
348         depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
349         default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
350         help
351           If you say Y here the resulting kernel image will be slightly
352           larger and slower, but it gives very useful debugging information
353           in case of kernel bugs. (precise oopses/stacktraces/warnings)
354
355 config STACK_VALIDATION
356         bool "Compile-time stack metadata validation"
357         depends on HAVE_STACK_VALIDATION
358         default n
359         help
360           Add compile-time checks to validate stack metadata, including frame
361           pointers (if CONFIG_FRAME_POINTER is enabled).  This helps ensure
362           that runtime stack traces are more reliable.
363
364           This is also a prerequisite for generation of ORC unwind data, which
365           is needed for CONFIG_UNWINDER_ORC.
366
367           For more information, see
368           tools/objtool/Documentation/stack-validation.txt.
369
370 config DEBUG_FORCE_WEAK_PER_CPU
371         bool "Force weak per-cpu definitions"
372         depends on DEBUG_KERNEL
373         help
374           s390 and alpha require percpu variables in modules to be
375           defined weak to work around addressing range issue which
376           puts the following two restrictions on percpu variable
377           definitions.
378
379           1. percpu symbols must be unique whether static or not
380           2. percpu variables can't be defined inside a function
381
382           To ensure that generic code follows the above rules, this
383           option forces all percpu variables to be defined as weak.
384
385 endmenu # "Compiler options"
386
387 menu "Generic Kernel Debugging Instruments"
388
389 config MAGIC_SYSRQ
390         bool "Magic SysRq key"
391         depends on !UML
392         help
393           If you say Y here, you will have some control over the system even
394           if the system crashes for example during kernel debugging (e.g., you
395           will be able to flush the buffer cache to disk, reboot the system
396           immediately or dump some status information). This is accomplished
397           by pressing various keys while holding SysRq (Alt+PrintScreen). It
398           also works on a serial console (on PC hardware at least), if you
399           send a BREAK and then within 5 seconds a command keypress. The
400           keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
401           Don't say Y unless you really know what this hack does.
402
403 config MAGIC_SYSRQ_DEFAULT_ENABLE
404         hex "Enable magic SysRq key functions by default"
405         depends on MAGIC_SYSRQ
406         default 0x1
407         help
408           Specifies which SysRq key functions are enabled by default.
409           This may be set to 1 or 0 to enable or disable them all, or
410           to a bitmask as described in Documentation/admin-guide/sysrq.rst.
411
412 config MAGIC_SYSRQ_SERIAL
413         bool "Enable magic SysRq key over serial"
414         depends on MAGIC_SYSRQ
415         default y
416         help
417           Many embedded boards have a disconnected TTL level serial which can
418           generate some garbage that can lead to spurious false sysrq detects.
419           This option allows you to decide whether you want to enable the
420           magic SysRq key.
421
422 config MAGIC_SYSRQ_SERIAL_SEQUENCE
423         string "Char sequence that enables magic SysRq over serial"
424         depends on MAGIC_SYSRQ_SERIAL
425         default ""
426         help
427           Specifies a sequence of characters that can follow BREAK to enable
428           SysRq on a serial console.
429
430           If unsure, leave an empty string and the option will not be enabled.
431
432 config DEBUG_FS
433         bool "Debug Filesystem"
434         help
435           debugfs is a virtual file system that kernel developers use to put
436           debugging files into.  Enable this option to be able to read and
437           write to these files.
438
439           For detailed documentation on the debugfs API, see
440           Documentation/filesystems/.
441
442           If unsure, say N.
443
444 source "lib/Kconfig.kgdb"
445
446 source "lib/Kconfig.ubsan"
447
448 endmenu
449
450 config DEBUG_KERNEL
451         bool "Kernel debugging"
452         help
453           Say Y here if you are developing drivers or trying to debug and
454           identify kernel problems.
455
456 config DEBUG_MISC
457         bool "Miscellaneous debug code"
458         default DEBUG_KERNEL
459         depends on DEBUG_KERNEL
460         help
461           Say Y here if you need to enable miscellaneous debug code that should
462           be under a more specific debug option but isn't.
463
464
465 menu "Memory Debugging"
466
467 source "mm/Kconfig.debug"
468
469 config DEBUG_OBJECTS
470         bool "Debug object operations"
471         depends on DEBUG_KERNEL
472         help
473           If you say Y here, additional code will be inserted into the
474           kernel to track the life time of various objects and validate
475           the operations on those objects.
476
477 config DEBUG_OBJECTS_SELFTEST
478         bool "Debug objects selftest"
479         depends on DEBUG_OBJECTS
480         help
481           This enables the selftest of the object debug code.
482
483 config DEBUG_OBJECTS_FREE
484         bool "Debug objects in freed memory"
485         depends on DEBUG_OBJECTS
486         help
487           This enables checks whether a k/v free operation frees an area
488           which contains an object which has not been deactivated
489           properly. This can make kmalloc/kfree-intensive workloads
490           much slower.
491
492 config DEBUG_OBJECTS_TIMERS
493         bool "Debug timer objects"
494         depends on DEBUG_OBJECTS
495         help
496           If you say Y here, additional code will be inserted into the
497           timer routines to track the life time of timer objects and
498           validate the timer operations.
499
500 config DEBUG_OBJECTS_WORK
501         bool "Debug work objects"
502         depends on DEBUG_OBJECTS
503         help
504           If you say Y here, additional code will be inserted into the
505           work queue routines to track the life time of work objects and
506           validate the work operations.
507
508 config DEBUG_OBJECTS_RCU_HEAD
509         bool "Debug RCU callbacks objects"
510         depends on DEBUG_OBJECTS
511         help
512           Enable this to turn on debugging of RCU list heads (call_rcu() usage).
513
514 config DEBUG_OBJECTS_PERCPU_COUNTER
515         bool "Debug percpu counter objects"
516         depends on DEBUG_OBJECTS
517         help
518           If you say Y here, additional code will be inserted into the
519           percpu counter routines to track the life time of percpu counter
520           objects and validate the percpu counter operations.
521
522 config DEBUG_OBJECTS_ENABLE_DEFAULT
523         int "debug_objects bootup default value (0-1)"
524         range 0 1
525         default "1"
526         depends on DEBUG_OBJECTS
527         help
528           Debug objects boot parameter default value
529
530 config DEBUG_SLAB
531         bool "Debug slab memory allocations"
532         depends on DEBUG_KERNEL && SLAB
533         help
534           Say Y here to have the kernel do limited verification on memory
535           allocation as well as poisoning memory on free to catch use of freed
536           memory. This can make kmalloc/kfree-intensive workloads much slower.
537
538 config SLUB_DEBUG_ON
539         bool "SLUB debugging on by default"
540         depends on SLUB && SLUB_DEBUG
541         default n
542         help
543           Boot with debugging on by default. SLUB boots by default with
544           the runtime debug capabilities switched off. Enabling this is
545           equivalent to specifying the "slub_debug" parameter on boot.
546           There is no support for more fine grained debug control like
547           possible with slub_debug=xxx. SLUB debugging may be switched
548           off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
549           "slub_debug=-".
550
551 config SLUB_STATS
552         default n
553         bool "Enable SLUB performance statistics"
554         depends on SLUB && SYSFS
555         help
556           SLUB statistics are useful to debug SLUBs allocation behavior in
557           order find ways to optimize the allocator. This should never be
558           enabled for production use since keeping statistics slows down
559           the allocator by a few percentage points. The slabinfo command
560           supports the determination of the most active slabs to figure
561           out which slabs are relevant to a particular load.
562           Try running: slabinfo -DA
563
564 config HAVE_DEBUG_KMEMLEAK
565         bool
566
567 config DEBUG_KMEMLEAK
568         bool "Kernel memory leak detector"
569         depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
570         select DEBUG_FS
571         select STACKTRACE if STACKTRACE_SUPPORT
572         select KALLSYMS
573         select CRC32
574         help
575           Say Y here if you want to enable the memory leak
576           detector. The memory allocation/freeing is traced in a way
577           similar to the Boehm's conservative garbage collector, the
578           difference being that the orphan objects are not freed but
579           only shown in /sys/kernel/debug/kmemleak. Enabling this
580           feature will introduce an overhead to memory
581           allocations. See Documentation/dev-tools/kmemleak.rst for more
582           details.
583
584           Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
585           of finding leaks due to the slab objects poisoning.
586
587           In order to access the kmemleak file, debugfs needs to be
588           mounted (usually at /sys/kernel/debug).
589
590 config DEBUG_KMEMLEAK_MEM_POOL_SIZE
591         int "Kmemleak memory pool size"
592         depends on DEBUG_KMEMLEAK
593         range 200 1000000
594         default 16000
595         help
596           Kmemleak must track all the memory allocations to avoid
597           reporting false positives. Since memory may be allocated or
598           freed before kmemleak is fully initialised, use a static pool
599           of metadata objects to track such callbacks. After kmemleak is
600           fully initialised, this memory pool acts as an emergency one
601           if slab allocations fail.
602
603 config DEBUG_KMEMLEAK_TEST
604         tristate "Simple test for the kernel memory leak detector"
605         depends on DEBUG_KMEMLEAK && m
606         help
607           This option enables a module that explicitly leaks memory.
608
609           If unsure, say N.
610
611 config DEBUG_KMEMLEAK_DEFAULT_OFF
612         bool "Default kmemleak to off"
613         depends on DEBUG_KMEMLEAK
614         help
615           Say Y here to disable kmemleak by default. It can then be enabled
616           on the command line via kmemleak=on.
617
618 config DEBUG_KMEMLEAK_AUTO_SCAN
619         bool "Enable kmemleak auto scan thread on boot up"
620         default y
621         depends on DEBUG_KMEMLEAK
622         help
623           Depending on the cpu, kmemleak scan may be cpu intensive and can
624           stall user tasks at times. This option enables/disables automatic
625           kmemleak scan at boot up.
626
627           Say N here to disable kmemleak auto scan thread to stop automatic
628           scanning. Disabling this option disables automatic reporting of
629           memory leaks.
630
631           If unsure, say Y.
632
633 config DEBUG_STACK_USAGE
634         bool "Stack utilization instrumentation"
635         depends on DEBUG_KERNEL && !IA64
636         help
637           Enables the display of the minimum amount of free stack which each
638           task has ever had available in the sysrq-T and sysrq-P debug output.
639
640           This option will slow down process creation somewhat.
641
642 config SCHED_STACK_END_CHECK
643         bool "Detect stack corruption on calls to schedule()"
644         depends on DEBUG_KERNEL
645         default n
646         help
647           This option checks for a stack overrun on calls to schedule().
648           If the stack end location is found to be over written always panic as
649           the content of the corrupted region can no longer be trusted.
650           This is to ensure no erroneous behaviour occurs which could result in
651           data corruption or a sporadic crash at a later stage once the region
652           is examined. The runtime overhead introduced is minimal.
653
654 config DEBUG_VM
655         bool "Debug VM"
656         depends on DEBUG_KERNEL
657         help
658           Enable this to turn on extended checks in the virtual-memory system
659           that may impact performance.
660
661           If unsure, say N.
662
663 config DEBUG_VM_VMACACHE
664         bool "Debug VMA caching"
665         depends on DEBUG_VM
666         help
667           Enable this to turn on VMA caching debug information. Doing so
668           can cause significant overhead, so only enable it in non-production
669           environments.
670
671           If unsure, say N.
672
673 config DEBUG_VM_RB
674         bool "Debug VM red-black trees"
675         depends on DEBUG_VM
676         help
677           Enable VM red-black tree debugging information and extra validations.
678
679           If unsure, say N.
680
681 config DEBUG_VM_PGFLAGS
682         bool "Debug page-flags operations"
683         depends on DEBUG_VM
684         help
685           Enables extra validation on page flags operations.
686
687           If unsure, say N.
688
689 config ARCH_HAS_DEBUG_VIRTUAL
690         bool
691
692 config DEBUG_VIRTUAL
693         bool "Debug VM translations"
694         depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL
695         help
696           Enable some costly sanity checks in virtual to page code. This can
697           catch mistakes with virt_to_page() and friends.
698
699           If unsure, say N.
700
701 config DEBUG_NOMMU_REGIONS
702         bool "Debug the global anon/private NOMMU mapping region tree"
703         depends on DEBUG_KERNEL && !MMU
704         help
705           This option causes the global tree of anonymous and private mapping
706           regions to be regularly checked for invalid topology.
707
708 config DEBUG_MEMORY_INIT
709         bool "Debug memory initialisation" if EXPERT
710         default !EXPERT
711         help
712           Enable this for additional checks during memory initialisation.
713           The sanity checks verify aspects of the VM such as the memory model
714           and other information provided by the architecture. Verbose
715           information will be printed at KERN_DEBUG loglevel depending
716           on the mminit_loglevel= command-line option.
717
718           If unsure, say Y
719
720 config MEMORY_NOTIFIER_ERROR_INJECT
721         tristate "Memory hotplug notifier error injection module"
722         depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
723         help
724           This option provides the ability to inject artificial errors to
725           memory hotplug notifier chain callbacks.  It is controlled through
726           debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
727
728           If the notifier call chain should be failed with some events
729           notified, write the error code to "actions/<notifier event>/error".
730
731           Example: Inject memory hotplug offline error (-12 == -ENOMEM)
732
733           # cd /sys/kernel/debug/notifier-error-inject/memory
734           # echo -12 > actions/MEM_GOING_OFFLINE/error
735           # echo offline > /sys/devices/system/memory/memoryXXX/state
736           bash: echo: write error: Cannot allocate memory
737
738           To compile this code as a module, choose M here: the module will
739           be called memory-notifier-error-inject.
740
741           If unsure, say N.
742
743 config DEBUG_PER_CPU_MAPS
744         bool "Debug access to per_cpu maps"
745         depends on DEBUG_KERNEL
746         depends on SMP
747         help
748           Say Y to verify that the per_cpu map being accessed has
749           been set up. This adds a fair amount of code to kernel memory
750           and decreases performance.
751
752           Say N if unsure.
753
754 config DEBUG_HIGHMEM
755         bool "Highmem debugging"
756         depends on DEBUG_KERNEL && HIGHMEM
757         help
758           This option enables additional error checking for high memory
759           systems.  Disable for production systems.
760
761 config HAVE_DEBUG_STACKOVERFLOW
762         bool
763
764 config DEBUG_STACKOVERFLOW
765         bool "Check for stack overflows"
766         depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
767         ---help---
768           Say Y here if you want to check for overflows of kernel, IRQ
769           and exception stacks (if your architecture uses them). This
770           option will show detailed messages if free stack space drops
771           below a certain limit.
772
773           These kinds of bugs usually occur when call-chains in the
774           kernel get too deep, especially when interrupts are
775           involved.
776
777           Use this in cases where you see apparently random memory
778           corruption, especially if it appears in 'struct thread_info'
779
780           If in doubt, say "N".
781
782 source "lib/Kconfig.kasan"
783
784 endmenu # "Memory Debugging"
785
786 config DEBUG_SHIRQ
787         bool "Debug shared IRQ handlers"
788         depends on DEBUG_KERNEL
789         help
790           Enable this to generate a spurious interrupt as soon as a shared
791           interrupt handler is registered, and just before one is deregistered.
792           Drivers ought to be able to handle interrupts coming in at those
793           points; some don't and need to be caught.
794
795 menu "Debug Oops, Lockups and Hangs"
796
797 config PANIC_ON_OOPS
798         bool "Panic on Oops"
799         help
800           Say Y here to enable the kernel to panic when it oopses. This
801           has the same effect as setting oops=panic on the kernel command
802           line.
803
804           This feature is useful to ensure that the kernel does not do
805           anything erroneous after an oops which could result in data
806           corruption or other issues.
807
808           Say N if unsure.
809
810 config PANIC_ON_OOPS_VALUE
811         int
812         range 0 1
813         default 0 if !PANIC_ON_OOPS
814         default 1 if PANIC_ON_OOPS
815
816 config PANIC_TIMEOUT
817         int "panic timeout"
818         default 0
819         help
820           Set the timeout value (in seconds) until a reboot occurs when the
821           the kernel panics. If n = 0, then we wait forever. A timeout
822           value n > 0 will wait n seconds before rebooting, while a timeout
823           value n < 0 will reboot immediately.
824
825 config LOCKUP_DETECTOR
826         bool
827
828 config SOFTLOCKUP_DETECTOR
829         bool "Detect Soft Lockups"
830         depends on DEBUG_KERNEL && !S390
831         select LOCKUP_DETECTOR
832         help
833           Say Y here to enable the kernel to act as a watchdog to detect
834           soft lockups.
835
836           Softlockups are bugs that cause the kernel to loop in kernel
837           mode for more than 20 seconds, without giving other tasks a
838           chance to run.  The current stack trace is displayed upon
839           detection and the system will stay locked up.
840
841 config BOOTPARAM_SOFTLOCKUP_PANIC
842         bool "Panic (Reboot) On Soft Lockups"
843         depends on SOFTLOCKUP_DETECTOR
844         help
845           Say Y here to enable the kernel to panic on "soft lockups",
846           which are bugs that cause the kernel to loop in kernel
847           mode for more than 20 seconds (configurable using the watchdog_thresh
848           sysctl), without giving other tasks a chance to run.
849
850           The panic can be used in combination with panic_timeout,
851           to cause the system to reboot automatically after a
852           lockup has been detected. This feature is useful for
853           high-availability systems that have uptime guarantees and
854           where a lockup must be resolved ASAP.
855
856           Say N if unsure.
857
858 config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
859         int
860         depends on SOFTLOCKUP_DETECTOR
861         range 0 1
862         default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
863         default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
864
865 config HARDLOCKUP_DETECTOR_PERF
866         bool
867         select SOFTLOCKUP_DETECTOR
868
869 #
870 # Enables a timestamp based low pass filter to compensate for perf based
871 # hard lockup detection which runs too fast due to turbo modes.
872 #
873 config HARDLOCKUP_CHECK_TIMESTAMP
874         bool
875
876 #
877 # arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
878 # lockup detector rather than the perf based detector.
879 #
880 config HARDLOCKUP_DETECTOR
881         bool "Detect Hard Lockups"
882         depends on DEBUG_KERNEL && !S390
883         depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH
884         select LOCKUP_DETECTOR
885         select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
886         select HARDLOCKUP_DETECTOR_ARCH if HAVE_HARDLOCKUP_DETECTOR_ARCH
887         help
888           Say Y here to enable the kernel to act as a watchdog to detect
889           hard lockups.
890
891           Hardlockups are bugs that cause the CPU to loop in kernel mode
892           for more than 10 seconds, without letting other interrupts have a
893           chance to run.  The current stack trace is displayed upon detection
894           and the system will stay locked up.
895
896 config BOOTPARAM_HARDLOCKUP_PANIC
897         bool "Panic (Reboot) On Hard Lockups"
898         depends on HARDLOCKUP_DETECTOR
899         help
900           Say Y here to enable the kernel to panic on "hard lockups",
901           which are bugs that cause the kernel to loop in kernel
902           mode with interrupts disabled for more than 10 seconds (configurable
903           using the watchdog_thresh sysctl).
904
905           Say N if unsure.
906
907 config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
908         int
909         depends on HARDLOCKUP_DETECTOR
910         range 0 1
911         default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
912         default 1 if BOOTPARAM_HARDLOCKUP_PANIC
913
914 config DETECT_HUNG_TASK
915         bool "Detect Hung Tasks"
916         depends on DEBUG_KERNEL
917         default SOFTLOCKUP_DETECTOR
918         help
919           Say Y here to enable the kernel to detect "hung tasks",
920           which are bugs that cause the task to be stuck in
921           uninterruptible "D" state indefinitely.
922
923           When a hung task is detected, the kernel will print the
924           current stack trace (which you should report), but the
925           task will stay in uninterruptible state. If lockdep is
926           enabled then all held locks will also be reported. This
927           feature has negligible overhead.
928
929 config DEFAULT_HUNG_TASK_TIMEOUT
930         int "Default timeout for hung task detection (in seconds)"
931         depends on DETECT_HUNG_TASK
932         default 120
933         help
934           This option controls the default timeout (in seconds) used
935           to determine when a task has become non-responsive and should
936           be considered hung.
937
938           It can be adjusted at runtime via the kernel.hung_task_timeout_secs
939           sysctl or by writing a value to
940           /proc/sys/kernel/hung_task_timeout_secs.
941
942           A timeout of 0 disables the check.  The default is two minutes.
943           Keeping the default should be fine in most cases.
944
945 config BOOTPARAM_HUNG_TASK_PANIC
946         bool "Panic (Reboot) On Hung Tasks"
947         depends on DETECT_HUNG_TASK
948         help
949           Say Y here to enable the kernel to panic on "hung tasks",
950           which are bugs that cause the kernel to leave a task stuck
951           in uninterruptible "D" state.
952
953           The panic can be used in combination with panic_timeout,
954           to cause the system to reboot automatically after a
955           hung task has been detected. This feature is useful for
956           high-availability systems that have uptime guarantees and
957           where a hung tasks must be resolved ASAP.
958
959           Say N if unsure.
960
961 config BOOTPARAM_HUNG_TASK_PANIC_VALUE
962         int
963         depends on DETECT_HUNG_TASK
964         range 0 1
965         default 0 if !BOOTPARAM_HUNG_TASK_PANIC
966         default 1 if BOOTPARAM_HUNG_TASK_PANIC
967
968 config WQ_WATCHDOG
969         bool "Detect Workqueue Stalls"
970         depends on DEBUG_KERNEL
971         help
972           Say Y here to enable stall detection on workqueues.  If a
973           worker pool doesn't make forward progress on a pending work
974           item for over a given amount of time, 30s by default, a
975           warning message is printed along with dump of workqueue
976           state.  This can be configured through kernel parameter
977           "workqueue.watchdog_thresh" and its sysfs counterpart.
978
979 config TEST_LOCKUP
980         tristate "Test module to generate lockups"
981         help
982           This builds the "test_lockup" module that helps to make sure
983           that watchdogs and lockup detectors are working properly.
984
985           Depending on module parameters it could emulate soft or hard
986           lockup, "hung task", or locking arbitrary lock for a long time.
987           Also it could generate series of lockups with cooling-down periods.
988
989           If unsure, say N.
990
991 endmenu # "Debug lockups and hangs"
992
993 menu "Scheduler Debugging"
994
995 config SCHED_DEBUG
996         bool "Collect scheduler debugging info"
997         depends on DEBUG_KERNEL && PROC_FS
998         default y
999         help
1000           If you say Y here, the /proc/sched_debug file will be provided
1001           that can help debug the scheduler. The runtime overhead of this
1002           option is minimal.
1003
1004 config SCHED_INFO
1005         bool
1006         default n
1007
1008 config SCHEDSTATS
1009         bool "Collect scheduler statistics"
1010         depends on DEBUG_KERNEL && PROC_FS
1011         select SCHED_INFO
1012         help
1013           If you say Y here, additional code will be inserted into the
1014           scheduler and related routines to collect statistics about
1015           scheduler behavior and provide them in /proc/schedstat.  These
1016           stats may be useful for both tuning and debugging the scheduler
1017           If you aren't debugging the scheduler or trying to tune a specific
1018           application, you can say N to avoid the very slight overhead
1019           this adds.
1020
1021 endmenu
1022
1023 config DEBUG_TIMEKEEPING
1024         bool "Enable extra timekeeping sanity checking"
1025         help
1026           This option will enable additional timekeeping sanity checks
1027           which may be helpful when diagnosing issues where timekeeping
1028           problems are suspected.
1029
1030           This may include checks in the timekeeping hotpaths, so this
1031           option may have a (very small) performance impact to some
1032           workloads.
1033
1034           If unsure, say N.
1035
1036 config DEBUG_PREEMPT
1037         bool "Debug preemptible kernel"
1038         depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
1039         default y
1040         help
1041           If you say Y here then the kernel will use a debug variant of the
1042           commonly used smp_processor_id() function and will print warnings
1043           if kernel code uses it in a preemption-unsafe way. Also, the kernel
1044           will detect preemption count underflows.
1045
1046 menu "Lock Debugging (spinlocks, mutexes, etc...)"
1047
1048 config LOCK_DEBUGGING_SUPPORT
1049         bool
1050         depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1051         default y
1052
1053 config PROVE_LOCKING
1054         bool "Lock debugging: prove locking correctness"
1055         depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1056         select LOCKDEP
1057         select DEBUG_SPINLOCK
1058         select DEBUG_MUTEXES
1059         select DEBUG_RT_MUTEXES if RT_MUTEXES
1060         select DEBUG_RWSEMS
1061         select DEBUG_WW_MUTEX_SLOWPATH
1062         select DEBUG_LOCK_ALLOC
1063         select TRACE_IRQFLAGS
1064         default n
1065         help
1066          This feature enables the kernel to prove that all locking
1067          that occurs in the kernel runtime is mathematically
1068          correct: that under no circumstance could an arbitrary (and
1069          not yet triggered) combination of observed locking
1070          sequences (on an arbitrary number of CPUs, running an
1071          arbitrary number of tasks and interrupt contexts) cause a
1072          deadlock.
1073
1074          In short, this feature enables the kernel to report locking
1075          related deadlocks before they actually occur.
1076
1077          The proof does not depend on how hard and complex a
1078          deadlock scenario would be to trigger: how many
1079          participant CPUs, tasks and irq-contexts would be needed
1080          for it to trigger. The proof also does not depend on
1081          timing: if a race and a resulting deadlock is possible
1082          theoretically (no matter how unlikely the race scenario
1083          is), it will be proven so and will immediately be
1084          reported by the kernel (once the event is observed that
1085          makes the deadlock theoretically possible).
1086
1087          If a deadlock is impossible (i.e. the locking rules, as
1088          observed by the kernel, are mathematically correct), the
1089          kernel reports nothing.
1090
1091          NOTE: this feature can also be enabled for rwlocks, mutexes
1092          and rwsems - in which case all dependencies between these
1093          different locking variants are observed and mapped too, and
1094          the proof of observed correctness is also maintained for an
1095          arbitrary combination of these separate locking variants.
1096
1097          For more details, see Documentation/locking/lockdep-design.rst.
1098
1099 config PROVE_RAW_LOCK_NESTING
1100         bool "Enable raw_spinlock - spinlock nesting checks"
1101         depends on PROVE_LOCKING
1102         default n
1103         help
1104          Enable the raw_spinlock vs. spinlock nesting checks which ensure
1105          that the lock nesting rules for PREEMPT_RT enabled kernels are
1106          not violated.
1107
1108          NOTE: There are known nesting problems. So if you enable this
1109          option expect lockdep splats until these problems have been fully
1110          addressed which is work in progress. This config switch allows to
1111          identify and analyze these problems. It will be removed and the
1112          check permanentely enabled once the main issues have been fixed.
1113
1114          If unsure, select N.
1115
1116 config LOCK_STAT
1117         bool "Lock usage statistics"
1118         depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1119         select LOCKDEP
1120         select DEBUG_SPINLOCK
1121         select DEBUG_MUTEXES
1122         select DEBUG_RT_MUTEXES if RT_MUTEXES
1123         select DEBUG_LOCK_ALLOC
1124         default n
1125         help
1126          This feature enables tracking lock contention points
1127
1128          For more details, see Documentation/locking/lockstat.rst
1129
1130          This also enables lock events required by "perf lock",
1131          subcommand of perf.
1132          If you want to use "perf lock", you also need to turn on
1133          CONFIG_EVENT_TRACING.
1134
1135          CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
1136          (CONFIG_LOCKDEP defines "acquire" and "release" events.)
1137
1138 config DEBUG_RT_MUTEXES
1139         bool "RT Mutex debugging, deadlock detection"
1140         depends on DEBUG_KERNEL && RT_MUTEXES
1141         help
1142          This allows rt mutex semantics violations and rt mutex related
1143          deadlocks (lockups) to be detected and reported automatically.
1144
1145 config DEBUG_SPINLOCK
1146         bool "Spinlock and rw-lock debugging: basic checks"
1147         depends on DEBUG_KERNEL
1148         select UNINLINE_SPIN_UNLOCK
1149         help
1150           Say Y here and build SMP to catch missing spinlock initialization
1151           and certain other kinds of spinlock errors commonly made.  This is
1152           best used in conjunction with the NMI watchdog so that spinlock
1153           deadlocks are also debuggable.
1154
1155 config DEBUG_MUTEXES
1156         bool "Mutex debugging: basic checks"
1157         depends on DEBUG_KERNEL
1158         help
1159          This feature allows mutex semantics violations to be detected and
1160          reported.
1161
1162 config DEBUG_WW_MUTEX_SLOWPATH
1163         bool "Wait/wound mutex debugging: Slowpath testing"
1164         depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1165         select DEBUG_LOCK_ALLOC
1166         select DEBUG_SPINLOCK
1167         select DEBUG_MUTEXES
1168         help
1169          This feature enables slowpath testing for w/w mutex users by
1170          injecting additional -EDEADLK wound/backoff cases. Together with
1171          the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
1172          will test all possible w/w mutex interface abuse with the
1173          exception of simply not acquiring all the required locks.
1174          Note that this feature can introduce significant overhead, so
1175          it really should not be enabled in a production or distro kernel,
1176          even a debug kernel.  If you are a driver writer, enable it.  If
1177          you are a distro, do not.
1178
1179 config DEBUG_RWSEMS
1180         bool "RW Semaphore debugging: basic checks"
1181         depends on DEBUG_KERNEL
1182         help
1183           This debugging feature allows mismatched rw semaphore locks
1184           and unlocks to be detected and reported.
1185
1186 config DEBUG_LOCK_ALLOC
1187         bool "Lock debugging: detect incorrect freeing of live locks"
1188         depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1189         select DEBUG_SPINLOCK
1190         select DEBUG_MUTEXES
1191         select DEBUG_RT_MUTEXES if RT_MUTEXES
1192         select LOCKDEP
1193         help
1194          This feature will check whether any held lock (spinlock, rwlock,
1195          mutex or rwsem) is incorrectly freed by the kernel, via any of the
1196          memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
1197          vfree(), etc.), whether a live lock is incorrectly reinitialized via
1198          spin_lock_init()/mutex_init()/etc., or whether there is any lock
1199          held during task exit.
1200
1201 config LOCKDEP
1202         bool
1203         depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1204         select STACKTRACE
1205         select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86
1206         select KALLSYMS
1207         select KALLSYMS_ALL
1208
1209 config LOCKDEP_SMALL
1210         bool
1211
1212 config DEBUG_LOCKDEP
1213         bool "Lock dependency engine debugging"
1214         depends on DEBUG_KERNEL && LOCKDEP
1215         help
1216           If you say Y here, the lock dependency engine will do
1217           additional runtime checks to debug itself, at the price
1218           of more runtime overhead.
1219
1220 config DEBUG_ATOMIC_SLEEP
1221         bool "Sleep inside atomic section checking"
1222         select PREEMPT_COUNT
1223         depends on DEBUG_KERNEL
1224         depends on !ARCH_NO_PREEMPT
1225         help
1226           If you say Y here, various routines which may sleep will become very
1227           noisy if they are called inside atomic sections: when a spinlock is
1228           held, inside an rcu read side critical section, inside preempt disabled
1229           sections, inside an interrupt, etc...
1230
1231 config DEBUG_LOCKING_API_SELFTESTS
1232         bool "Locking API boot-time self-tests"
1233         depends on DEBUG_KERNEL
1234         help
1235           Say Y here if you want the kernel to run a short self-test during
1236           bootup. The self-test checks whether common types of locking bugs
1237           are detected by debugging mechanisms or not. (if you disable
1238           lock debugging then those bugs wont be detected of course.)
1239           The following locking APIs are covered: spinlocks, rwlocks,
1240           mutexes and rwsems.
1241
1242 config LOCK_TORTURE_TEST
1243         tristate "torture tests for locking"
1244         depends on DEBUG_KERNEL
1245         select TORTURE_TEST
1246         help
1247           This option provides a kernel module that runs torture tests
1248           on kernel locking primitives.  The kernel module may be built
1249           after the fact on the running kernel to be tested, if desired.
1250
1251           Say Y here if you want kernel locking-primitive torture tests
1252           to be built into the kernel.
1253           Say M if you want these torture tests to build as a module.
1254           Say N if you are unsure.
1255
1256 config WW_MUTEX_SELFTEST
1257         tristate "Wait/wound mutex selftests"
1258         help
1259           This option provides a kernel module that runs tests on the
1260           on the struct ww_mutex locking API.
1261
1262           It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction
1263           with this test harness.
1264
1265           Say M if you want these self tests to build as a module.
1266           Say N if you are unsure.
1267
1268 endmenu # lock debugging
1269
1270 config TRACE_IRQFLAGS
1271         bool
1272         help
1273           Enables hooks to interrupt enabling and disabling for
1274           either tracing or lock debugging.
1275
1276 config STACKTRACE
1277         bool "Stack backtrace support"
1278         depends on STACKTRACE_SUPPORT
1279         help
1280           This option causes the kernel to create a /proc/pid/stack for
1281           every process, showing its current stack trace.
1282           It is also used by various kernel debugging features that require
1283           stack trace generation.
1284
1285 config WARN_ALL_UNSEEDED_RANDOM
1286         bool "Warn for all uses of unseeded randomness"
1287         default n
1288         help
1289           Some parts of the kernel contain bugs relating to their use of
1290           cryptographically secure random numbers before it's actually possible
1291           to generate those numbers securely. This setting ensures that these
1292           flaws don't go unnoticed, by enabling a message, should this ever
1293           occur. This will allow people with obscure setups to know when things
1294           are going wrong, so that they might contact developers about fixing
1295           it.
1296
1297           Unfortunately, on some models of some architectures getting
1298           a fully seeded CRNG is extremely difficult, and so this can
1299           result in dmesg getting spammed for a surprisingly long
1300           time.  This is really bad from a security perspective, and
1301           so architecture maintainers really need to do what they can
1302           to get the CRNG seeded sooner after the system is booted.
1303           However, since users cannot do anything actionable to
1304           address this, by default the kernel will issue only a single
1305           warning for the first use of unseeded randomness.
1306
1307           Say Y here if you want to receive warnings for all uses of
1308           unseeded randomness.  This will be of use primarily for
1309           those developers interested in improving the security of
1310           Linux kernels running on their architecture (or
1311           subarchitecture).
1312
1313 config DEBUG_KOBJECT
1314         bool "kobject debugging"
1315         depends on DEBUG_KERNEL
1316         help
1317           If you say Y here, some extra kobject debugging messages will be sent
1318           to the syslog.
1319
1320 config DEBUG_KOBJECT_RELEASE
1321         bool "kobject release debugging"
1322         depends on DEBUG_OBJECTS_TIMERS
1323         help
1324           kobjects are reference counted objects.  This means that their
1325           last reference count put is not predictable, and the kobject can
1326           live on past the point at which a driver decides to drop it's
1327           initial reference to the kobject gained on allocation.  An
1328           example of this would be a struct device which has just been
1329           unregistered.
1330
1331           However, some buggy drivers assume that after such an operation,
1332           the memory backing the kobject can be immediately freed.  This
1333           goes completely against the principles of a refcounted object.
1334
1335           If you say Y here, the kernel will delay the release of kobjects
1336           on the last reference count to improve the visibility of this
1337           kind of kobject release bug.
1338
1339 config HAVE_DEBUG_BUGVERBOSE
1340         bool
1341
1342 menu "Debug kernel data structures"
1343
1344 config DEBUG_LIST
1345         bool "Debug linked list manipulation"
1346         depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
1347         help
1348           Enable this to turn on extended checks in the linked-list
1349           walking routines.
1350
1351           If unsure, say N.
1352
1353 config DEBUG_PLIST
1354         bool "Debug priority linked list manipulation"
1355         depends on DEBUG_KERNEL
1356         help
1357           Enable this to turn on extended checks in the priority-ordered
1358           linked-list (plist) walking routines.  This checks the entire
1359           list multiple times during each manipulation.
1360
1361           If unsure, say N.
1362
1363 config DEBUG_SG
1364         bool "Debug SG table operations"
1365         depends on DEBUG_KERNEL
1366         help
1367           Enable this to turn on checks on scatter-gather tables. This can
1368           help find problems with drivers that do not properly initialize
1369           their sg tables.
1370
1371           If unsure, say N.
1372
1373 config DEBUG_NOTIFIERS
1374         bool "Debug notifier call chains"
1375         depends on DEBUG_KERNEL
1376         help
1377           Enable this to turn on sanity checking for notifier call chains.
1378           This is most useful for kernel developers to make sure that
1379           modules properly unregister themselves from notifier chains.
1380           This is a relatively cheap check but if you care about maximum
1381           performance, say N.
1382
1383 config BUG_ON_DATA_CORRUPTION
1384         bool "Trigger a BUG when data corruption is detected"
1385         select DEBUG_LIST
1386         help
1387           Select this option if the kernel should BUG when it encounters
1388           data corruption in kernel memory structures when they get checked
1389           for validity.
1390
1391           If unsure, say N.
1392
1393 endmenu
1394
1395 config DEBUG_CREDENTIALS
1396         bool "Debug credential management"
1397         depends on DEBUG_KERNEL
1398         help
1399           Enable this to turn on some debug checking for credential
1400           management.  The additional code keeps track of the number of
1401           pointers from task_structs to any given cred struct, and checks to
1402           see that this number never exceeds the usage count of the cred
1403           struct.
1404
1405           Furthermore, if SELinux is enabled, this also checks that the
1406           security pointer in the cred struct is never seen to be invalid.
1407
1408           If unsure, say N.
1409
1410 source "kernel/rcu/Kconfig.debug"
1411
1412 config DEBUG_WQ_FORCE_RR_CPU
1413         bool "Force round-robin CPU selection for unbound work items"
1414         depends on DEBUG_KERNEL
1415         default n
1416         help
1417           Workqueue used to implicitly guarantee that work items queued
1418           without explicit CPU specified are put on the local CPU.  This
1419           guarantee is no longer true and while local CPU is still
1420           preferred work items may be put on foreign CPUs.  Kernel
1421           parameter "workqueue.debug_force_rr_cpu" is added to force
1422           round-robin CPU selection to flush out usages which depend on the
1423           now broken guarantee.  This config option enables the debug
1424           feature by default.  When enabled, memory and cache locality will
1425           be impacted.
1426
1427 config DEBUG_BLOCK_EXT_DEVT
1428         bool "Force extended block device numbers and spread them"
1429         depends on DEBUG_KERNEL
1430         depends on BLOCK
1431         default n
1432         help
1433           BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1434           SOME DISTRIBUTIONS.  DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1435           YOU ARE DOING.  Distros, please enable this and fix whatever
1436           is broken.
1437
1438           Conventionally, block device numbers are allocated from
1439           predetermined contiguous area.  However, extended block area
1440           may introduce non-contiguous block device numbers.  This
1441           option forces most block device numbers to be allocated from
1442           the extended space and spreads them to discover kernel or
1443           userland code paths which assume predetermined contiguous
1444           device number allocation.
1445
1446           Note that turning on this debug option shuffles all the
1447           device numbers for all IDE and SCSI devices including libata
1448           ones, so root partition specified using device number
1449           directly (via rdev or root=MAJ:MIN) won't work anymore.
1450           Textual device names (root=/dev/sdXn) will continue to work.
1451
1452           Say N if you are unsure.
1453
1454 config CPU_HOTPLUG_STATE_CONTROL
1455         bool "Enable CPU hotplug state control"
1456         depends on DEBUG_KERNEL
1457         depends on HOTPLUG_CPU
1458         default n
1459         help
1460           Allows to write steps between "offline" and "online" to the CPUs
1461           sysfs target file so states can be stepped granular. This is a debug
1462           option for now as the hotplug machinery cannot be stopped and
1463           restarted at arbitrary points yet.
1464
1465           Say N if your are unsure.
1466
1467 config LATENCYTOP
1468         bool "Latency measuring infrastructure"
1469         depends on DEBUG_KERNEL
1470         depends on STACKTRACE_SUPPORT
1471         depends on PROC_FS
1472         select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1473         select KALLSYMS
1474         select KALLSYMS_ALL
1475         select STACKTRACE
1476         select SCHEDSTATS
1477         select SCHED_DEBUG
1478         help
1479           Enable this option if you want to use the LatencyTOP tool
1480           to find out which userspace is blocking on what kernel operations.
1481
1482 source "kernel/trace/Kconfig"
1483
1484 config PROVIDE_OHCI1394_DMA_INIT
1485         bool "Remote debugging over FireWire early on boot"
1486         depends on PCI && X86
1487         help
1488           If you want to debug problems which hang or crash the kernel early
1489           on boot and the crashing machine has a FireWire port, you can use
1490           this feature to remotely access the memory of the crashed machine
1491           over FireWire. This employs remote DMA as part of the OHCI1394
1492           specification which is now the standard for FireWire controllers.
1493
1494           With remote DMA, you can monitor the printk buffer remotely using
1495           firescope and access all memory below 4GB using fireproxy from gdb.
1496           Even controlling a kernel debugger is possible using remote DMA.
1497
1498           Usage:
1499
1500           If ohci1394_dma=early is used as boot parameter, it will initialize
1501           all OHCI1394 controllers which are found in the PCI config space.
1502
1503           As all changes to the FireWire bus such as enabling and disabling
1504           devices cause a bus reset and thereby disable remote DMA for all
1505           devices, be sure to have the cable plugged and FireWire enabled on
1506           the debugging host before booting the debug target for debugging.
1507
1508           This code (~1k) is freed after boot. By then, the firewire stack
1509           in charge of the OHCI-1394 controllers should be used instead.
1510
1511           See Documentation/debugging-via-ohci1394.txt for more information.
1512
1513 source "samples/Kconfig"
1514
1515 config ARCH_HAS_DEVMEM_IS_ALLOWED
1516         bool
1517
1518 config STRICT_DEVMEM
1519         bool "Filter access to /dev/mem"
1520         depends on MMU && DEVMEM
1521         depends on ARCH_HAS_DEVMEM_IS_ALLOWED
1522         default y if PPC || X86 || ARM64
1523         help
1524           If this option is disabled, you allow userspace (root) access to all
1525           of memory, including kernel and userspace memory. Accidental
1526           access to this is obviously disastrous, but specific access can
1527           be used by people debugging the kernel. Note that with PAT support
1528           enabled, even in this case there are restrictions on /dev/mem
1529           use due to the cache aliasing requirements.
1530
1531           If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
1532           file only allows userspace access to PCI space and the BIOS code and
1533           data regions.  This is sufficient for dosemu and X and all common
1534           users of /dev/mem.
1535
1536           If in doubt, say Y.
1537
1538 config IO_STRICT_DEVMEM
1539         bool "Filter I/O access to /dev/mem"
1540         depends on STRICT_DEVMEM
1541         help
1542           If this option is disabled, you allow userspace (root) access to all
1543           io-memory regardless of whether a driver is actively using that
1544           range.  Accidental access to this is obviously disastrous, but
1545           specific access can be used by people debugging kernel drivers.
1546
1547           If this option is switched on, the /dev/mem file only allows
1548           userspace access to *idle* io-memory ranges (see /proc/iomem) This
1549           may break traditional users of /dev/mem (dosemu, legacy X, etc...)
1550           if the driver using a given range cannot be disabled.
1551
1552           If in doubt, say Y.
1553
1554 menu "$(SRCARCH) Debugging"
1555
1556 source "arch/$(SRCARCH)/Kconfig.debug"
1557
1558 endmenu
1559
1560 menu "Kernel Testing and Coverage"
1561
1562 source "lib/kunit/Kconfig"
1563
1564 config NOTIFIER_ERROR_INJECTION
1565         tristate "Notifier error injection"
1566         depends on DEBUG_KERNEL
1567         select DEBUG_FS
1568         help
1569           This option provides the ability to inject artificial errors to
1570           specified notifier chain callbacks. It is useful to test the error
1571           handling of notifier call chain failures.
1572
1573           Say N if unsure.
1574
1575 config PM_NOTIFIER_ERROR_INJECT
1576         tristate "PM notifier error injection module"
1577         depends on PM && NOTIFIER_ERROR_INJECTION
1578         default m if PM_DEBUG
1579         help
1580           This option provides the ability to inject artificial errors to
1581           PM notifier chain callbacks.  It is controlled through debugfs
1582           interface /sys/kernel/debug/notifier-error-inject/pm
1583
1584           If the notifier call chain should be failed with some events
1585           notified, write the error code to "actions/<notifier event>/error".
1586
1587           Example: Inject PM suspend error (-12 = -ENOMEM)
1588
1589           # cd /sys/kernel/debug/notifier-error-inject/pm/
1590           # echo -12 > actions/PM_SUSPEND_PREPARE/error
1591           # echo mem > /sys/power/state
1592           bash: echo: write error: Cannot allocate memory
1593
1594           To compile this code as a module, choose M here: the module will
1595           be called pm-notifier-error-inject.
1596
1597           If unsure, say N.
1598
1599 config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1600         tristate "OF reconfig notifier error injection module"
1601         depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
1602         help
1603           This option provides the ability to inject artificial errors to
1604           OF reconfig notifier chain callbacks.  It is controlled
1605           through debugfs interface under
1606           /sys/kernel/debug/notifier-error-inject/OF-reconfig/
1607
1608           If the notifier call chain should be failed with some events
1609           notified, write the error code to "actions/<notifier event>/error".
1610
1611           To compile this code as a module, choose M here: the module will
1612           be called of-reconfig-notifier-error-inject.
1613
1614           If unsure, say N.
1615
1616 config NETDEV_NOTIFIER_ERROR_INJECT
1617         tristate "Netdev notifier error injection module"
1618         depends on NET && NOTIFIER_ERROR_INJECTION
1619         help
1620           This option provides the ability to inject artificial errors to
1621           netdevice notifier chain callbacks.  It is controlled through debugfs
1622           interface /sys/kernel/debug/notifier-error-inject/netdev
1623
1624           If the notifier call chain should be failed with some events
1625           notified, write the error code to "actions/<notifier event>/error".
1626
1627           Example: Inject netdevice mtu change error (-22 = -EINVAL)
1628
1629           # cd /sys/kernel/debug/notifier-error-inject/netdev
1630           # echo -22 > actions/NETDEV_CHANGEMTU/error
1631           # ip link set eth0 mtu 1024
1632           RTNETLINK answers: Invalid argument
1633
1634           To compile this code as a module, choose M here: the module will
1635           be called netdev-notifier-error-inject.
1636
1637           If unsure, say N.
1638
1639 config FUNCTION_ERROR_INJECTION
1640         def_bool y
1641         depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1642
1643 config FAULT_INJECTION
1644         bool "Fault-injection framework"
1645         depends on DEBUG_KERNEL
1646         help
1647           Provide fault-injection framework.
1648           For more details, see Documentation/fault-injection/.
1649
1650 config FAILSLAB
1651         bool "Fault-injection capability for kmalloc"
1652         depends on FAULT_INJECTION
1653         depends on SLAB || SLUB
1654         help
1655           Provide fault-injection capability for kmalloc.
1656
1657 config FAIL_PAGE_ALLOC
1658         bool "Fault-injection capability for alloc_pages()"
1659         depends on FAULT_INJECTION
1660         help
1661           Provide fault-injection capability for alloc_pages().
1662
1663 config FAIL_MAKE_REQUEST
1664         bool "Fault-injection capability for disk IO"
1665         depends on FAULT_INJECTION && BLOCK
1666         help
1667           Provide fault-injection capability for disk IO.
1668
1669 config FAIL_IO_TIMEOUT
1670         bool "Fault-injection capability for faking disk interrupts"
1671         depends on FAULT_INJECTION && BLOCK
1672         help
1673           Provide fault-injection capability on end IO handling. This
1674           will make the block layer "forget" an interrupt as configured,
1675           thus exercising the error handling.
1676
1677           Only works with drivers that use the generic timeout handling,
1678           for others it wont do anything.
1679
1680 config FAIL_FUTEX
1681         bool "Fault-injection capability for futexes"
1682         select DEBUG_FS
1683         depends on FAULT_INJECTION && FUTEX
1684         help
1685           Provide fault-injection capability for futexes.
1686
1687 config FAULT_INJECTION_DEBUG_FS
1688         bool "Debugfs entries for fault-injection capabilities"
1689         depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1690         help
1691           Enable configuration of fault-injection capabilities via debugfs.
1692
1693 config FAIL_FUNCTION
1694         bool "Fault-injection capability for functions"
1695         depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1696         help
1697           Provide function-based fault-injection capability.
1698           This will allow you to override a specific function with a return
1699           with given return value. As a result, function caller will see
1700           an error value and have to handle it. This is useful to test the
1701           error handling in various subsystems.
1702
1703 config FAIL_MMC_REQUEST
1704         bool "Fault-injection capability for MMC IO"
1705         depends on FAULT_INJECTION_DEBUG_FS && MMC
1706         help
1707           Provide fault-injection capability for MMC IO.
1708           This will make the mmc core return data errors. This is
1709           useful to test the error handling in the mmc block device
1710           and to test how the mmc host driver handles retries from
1711           the block device.
1712
1713 config FAULT_INJECTION_STACKTRACE_FILTER
1714         bool "stacktrace filter for fault-injection capabilities"
1715         depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
1716         depends on !X86_64
1717         select STACKTRACE
1718         select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1719         help
1720           Provide stacktrace filter for fault-injection capabilities
1721
1722 config ARCH_HAS_KCOV
1723         bool
1724         help
1725           An architecture should select this when it can successfully
1726           build and run with CONFIG_KCOV. This typically requires
1727           disabling instrumentation for some early boot code.
1728
1729 config CC_HAS_SANCOV_TRACE_PC
1730         def_bool $(cc-option,-fsanitize-coverage=trace-pc)
1731
1732
1733 config KCOV
1734         bool "Code coverage for fuzzing"
1735         depends on ARCH_HAS_KCOV
1736         depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
1737         select DEBUG_FS
1738         select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
1739         help
1740           KCOV exposes kernel code coverage information in a form suitable
1741           for coverage-guided fuzzing (randomized testing).
1742
1743           If RANDOMIZE_BASE is enabled, PC values will not be stable across
1744           different machines and across reboots. If you need stable PC values,
1745           disable RANDOMIZE_BASE.
1746
1747           For more details, see Documentation/dev-tools/kcov.rst.
1748
1749 config KCOV_ENABLE_COMPARISONS
1750         bool "Enable comparison operands collection by KCOV"
1751         depends on KCOV
1752         depends on $(cc-option,-fsanitize-coverage=trace-cmp)
1753         help
1754           KCOV also exposes operands of every comparison in the instrumented
1755           code along with operand sizes and PCs of the comparison instructions.
1756           These operands can be used by fuzzing engines to improve the quality
1757           of fuzzing coverage.
1758
1759 config KCOV_INSTRUMENT_ALL
1760         bool "Instrument all code by default"
1761         depends on KCOV
1762         default y
1763         help
1764           If you are doing generic system call fuzzing (like e.g. syzkaller),
1765           then you will want to instrument the whole kernel and you should
1766           say y here. If you are doing more targeted fuzzing (like e.g.
1767           filesystem fuzzing with AFL) then you will want to enable coverage
1768           for more specific subsets of files, and should say n here.
1769
1770 menuconfig RUNTIME_TESTING_MENU
1771         bool "Runtime Testing"
1772         def_bool y
1773
1774 if RUNTIME_TESTING_MENU
1775
1776 config LKDTM
1777         tristate "Linux Kernel Dump Test Tool Module"
1778         depends on DEBUG_FS
1779         help
1780         This module enables testing of the different dumping mechanisms by
1781         inducing system failures at predefined crash points.
1782         If you don't need it: say N
1783         Choose M here to compile this code as a module. The module will be
1784         called lkdtm.
1785
1786         Documentation on how to use the module can be found in
1787         Documentation/fault-injection/provoke-crashes.rst
1788
1789 config TEST_LIST_SORT
1790         tristate "Linked list sorting test"
1791         depends on DEBUG_KERNEL || m
1792         help
1793           Enable this to turn on 'list_sort()' function test. This test is
1794           executed only once during system boot (so affects only boot time),
1795           or at module load time.
1796
1797           If unsure, say N.
1798
1799 config TEST_MIN_HEAP
1800         tristate "Min heap test"
1801         depends on DEBUG_KERNEL || m
1802         help
1803           Enable this to turn on min heap function tests. This test is
1804           executed only once during system boot (so affects only boot time),
1805           or at module load time.
1806
1807           If unsure, say N.
1808
1809 config TEST_SORT
1810         tristate "Array-based sort test"
1811         depends on DEBUG_KERNEL || m
1812         help
1813           This option enables the self-test function of 'sort()' at boot,
1814           or at module load time.
1815
1816           If unsure, say N.
1817
1818 config KPROBES_SANITY_TEST
1819         bool "Kprobes sanity tests"
1820         depends on DEBUG_KERNEL
1821         depends on KPROBES
1822         help
1823           This option provides for testing basic kprobes functionality on
1824           boot. Samples of kprobe and kretprobe are inserted and
1825           verified for functionality.
1826
1827           Say N if you are unsure.
1828
1829 config BACKTRACE_SELF_TEST
1830         tristate "Self test for the backtrace code"
1831         depends on DEBUG_KERNEL
1832         help
1833           This option provides a kernel module that can be used to test
1834           the kernel stack backtrace code. This option is not useful
1835           for distributions or general kernels, but only for kernel
1836           developers working on architecture code.
1837
1838           Note that if you want to also test saved backtraces, you will
1839           have to enable STACKTRACE as well.
1840
1841           Say N if you are unsure.
1842
1843 config RBTREE_TEST
1844         tristate "Red-Black tree test"
1845         depends on DEBUG_KERNEL
1846         help
1847           A benchmark measuring the performance of the rbtree library.
1848           Also includes rbtree invariant checks.
1849
1850 config REED_SOLOMON_TEST
1851         tristate "Reed-Solomon library test"
1852         depends on DEBUG_KERNEL || m
1853         select REED_SOLOMON
1854         select REED_SOLOMON_ENC16
1855         select REED_SOLOMON_DEC16
1856         help
1857           This option enables the self-test function of rslib at boot,
1858           or at module load time.
1859
1860           If unsure, say N.
1861
1862 config INTERVAL_TREE_TEST
1863         tristate "Interval tree test"
1864         depends on DEBUG_KERNEL
1865         select INTERVAL_TREE
1866         help
1867           A benchmark measuring the performance of the interval tree library
1868
1869 config PERCPU_TEST
1870         tristate "Per cpu operations test"
1871         depends on m && DEBUG_KERNEL
1872         help
1873           Enable this option to build test module which validates per-cpu
1874           operations.
1875
1876           If unsure, say N.
1877
1878 config ATOMIC64_SELFTEST
1879         tristate "Perform an atomic64_t self-test"
1880         help
1881           Enable this option to test the atomic64_t functions at boot or
1882           at module load time.
1883
1884           If unsure, say N.
1885
1886 config ASYNC_RAID6_TEST
1887         tristate "Self test for hardware accelerated raid6 recovery"
1888         depends on ASYNC_RAID6_RECOV
1889         select ASYNC_MEMCPY
1890         ---help---
1891           This is a one-shot self test that permutes through the
1892           recovery of all the possible two disk failure scenarios for a
1893           N-disk array.  Recovery is performed with the asynchronous
1894           raid6 recovery routines, and will optionally use an offload
1895           engine if one is available.
1896
1897           If unsure, say N.
1898
1899 config TEST_HEXDUMP
1900         tristate "Test functions located in the hexdump module at runtime"
1901
1902 config TEST_STRING_HELPERS
1903         tristate "Test functions located in the string_helpers module at runtime"
1904
1905 config TEST_STRSCPY
1906         tristate "Test strscpy*() family of functions at runtime"
1907
1908 config TEST_KSTRTOX
1909         tristate "Test kstrto*() family of functions at runtime"
1910
1911 config TEST_PRINTF
1912         tristate "Test printf() family of functions at runtime"
1913
1914 config TEST_BITMAP
1915         tristate "Test bitmap_*() family of functions at runtime"
1916         help
1917           Enable this option to test the bitmap functions at boot.
1918
1919           If unsure, say N.
1920
1921 config TEST_BITFIELD
1922         tristate "Test bitfield functions at runtime"
1923         help
1924           Enable this option to test the bitfield functions at boot.
1925
1926           If unsure, say N.
1927
1928 config TEST_UUID
1929         tristate "Test functions located in the uuid module at runtime"
1930
1931 config TEST_XARRAY
1932         tristate "Test the XArray code at runtime"
1933
1934 config TEST_OVERFLOW
1935         tristate "Test check_*_overflow() functions at runtime"
1936
1937 config TEST_RHASHTABLE
1938         tristate "Perform selftest on resizable hash table"
1939         help
1940           Enable this option to test the rhashtable functions at boot.
1941
1942           If unsure, say N.
1943
1944 config TEST_HASH
1945         tristate "Perform selftest on hash functions"
1946         help
1947           Enable this option to test the kernel's integer (<linux/hash.h>),
1948           string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1949           hash functions on boot (or module load).
1950
1951           This is intended to help people writing architecture-specific
1952           optimized versions.  If unsure, say N.
1953
1954 config TEST_IDA
1955         tristate "Perform selftest on IDA functions"
1956
1957 config TEST_PARMAN
1958         tristate "Perform selftest on priority array manager"
1959         depends on PARMAN
1960         help
1961           Enable this option to test priority array manager on boot
1962           (or module load).
1963
1964           If unsure, say N.
1965
1966 config TEST_IRQ_TIMINGS
1967         bool "IRQ timings selftest"
1968         depends on IRQ_TIMINGS
1969         help
1970           Enable this option to test the irq timings code on boot.
1971
1972           If unsure, say N.
1973
1974 config TEST_LKM
1975         tristate "Test module loading with 'hello world' module"
1976         depends on m
1977         help
1978           This builds the "test_module" module that emits "Hello, world"
1979           on printk when loaded. It is designed to be used for basic
1980           evaluation of the module loading subsystem (for example when
1981           validating module verification). It lacks any extra dependencies,
1982           and will not normally be loaded by the system unless explicitly
1983           requested by name.
1984
1985           If unsure, say N.
1986
1987 config TEST_VMALLOC
1988         tristate "Test module for stress/performance analysis of vmalloc allocator"
1989         default n
1990        depends on MMU
1991         depends on m
1992         help
1993           This builds the "test_vmalloc" module that should be used for
1994           stress and performance analysis. So, any new change for vmalloc
1995           subsystem can be evaluated from performance and stability point
1996           of view.
1997
1998           If unsure, say N.
1999
2000 config TEST_USER_COPY
2001         tristate "Test user/kernel boundary protections"
2002         depends on m
2003         help
2004           This builds the "test_user_copy" module that runs sanity checks
2005           on the copy_to/from_user infrastructure, making sure basic
2006           user/kernel boundary testing is working. If it fails to load,
2007           a regression has been detected in the user/kernel memory boundary
2008           protections.
2009
2010           If unsure, say N.
2011
2012 config TEST_BPF
2013         tristate "Test BPF filter functionality"
2014         depends on m && NET
2015         help
2016           This builds the "test_bpf" module that runs various test vectors
2017           against the BPF interpreter or BPF JIT compiler depending on the
2018           current setting. This is in particular useful for BPF JIT compiler
2019           development, but also to run regression tests against changes in
2020           the interpreter code. It also enables test stubs for eBPF maps and
2021           verifier used by user space verifier testsuite.
2022
2023           If unsure, say N.
2024
2025 config TEST_BLACKHOLE_DEV
2026         tristate "Test blackhole netdev functionality"
2027         depends on m && NET
2028         help
2029           This builds the "test_blackhole_dev" module that validates the
2030           data path through this blackhole netdev.
2031
2032           If unsure, say N.
2033
2034 config FIND_BIT_BENCHMARK
2035         tristate "Test find_bit functions"
2036         help
2037           This builds the "test_find_bit" module that measure find_*_bit()
2038           functions performance.
2039
2040           If unsure, say N.
2041
2042 config TEST_FIRMWARE
2043         tristate "Test firmware loading via userspace interface"
2044         depends on FW_LOADER
2045         help
2046           This builds the "test_firmware" module that creates a userspace
2047           interface for testing firmware loading. This can be used to
2048           control the triggering of firmware loading without needing an
2049           actual firmware-using device. The contents can be rechecked by
2050           userspace.
2051
2052           If unsure, say N.
2053
2054 config TEST_SYSCTL
2055         tristate "sysctl test driver"
2056         depends on PROC_SYSCTL
2057         help
2058           This builds the "test_sysctl" module. This driver enables to test the
2059           proc sysctl interfaces available to drivers safely without affecting
2060           production knobs which might alter system functionality.
2061
2062           If unsure, say N.
2063
2064 config SYSCTL_KUNIT_TEST
2065         tristate "KUnit test for sysctl"
2066         depends on KUNIT
2067         help
2068           This builds the proc sysctl unit test, which runs on boot.
2069           Tests the API contract and implementation correctness of sysctl.
2070           For more information on KUnit and unit tests in general please refer
2071           to the KUnit documentation in Documentation/dev-tools/kunit/.
2072
2073           If unsure, say N.
2074
2075 config LIST_KUNIT_TEST
2076         tristate "KUnit Test for Kernel Linked-list structures"
2077         depends on KUNIT
2078         help
2079           This builds the linked list KUnit test suite.
2080           It tests that the API and basic functionality of the list_head type
2081           and associated macros.
2082
2083           KUnit tests run during boot and output the results to the debug log
2084           in TAP format (http://testanything.org/). Only useful for kernel devs
2085           running the KUnit test harness, and not intended for inclusion into a
2086           production build.
2087
2088           For more information on KUnit and unit tests in general please refer
2089           to the KUnit documentation in Documentation/dev-tools/kunit/.
2090
2091           If unsure, say N.
2092
2093 config TEST_UDELAY
2094         tristate "udelay test driver"
2095         help
2096           This builds the "udelay_test" module that helps to make sure
2097           that udelay() is working properly.
2098
2099           If unsure, say N.
2100
2101 config TEST_STATIC_KEYS
2102         tristate "Test static keys"
2103         depends on m
2104         help
2105           Test the static key interfaces.
2106
2107           If unsure, say N.
2108
2109 config TEST_KMOD
2110         tristate "kmod stress tester"
2111         depends on m
2112         depends on NETDEVICES && NET_CORE && INET # for TUN
2113         depends on BLOCK
2114         select TEST_LKM
2115         select XFS_FS
2116         select TUN
2117         select BTRFS_FS
2118         help
2119           Test the kernel's module loading mechanism: kmod. kmod implements
2120           support to load modules using the Linux kernel's usermode helper.
2121           This test provides a series of tests against kmod.
2122
2123           Although technically you can either build test_kmod as a module or
2124           into the kernel we disallow building it into the kernel since
2125           it stress tests request_module() and this will very likely cause
2126           some issues by taking over precious threads available from other
2127           module load requests, ultimately this could be fatal.
2128
2129           To run tests run:
2130
2131           tools/testing/selftests/kmod/kmod.sh --help
2132
2133           If unsure, say N.
2134
2135 config TEST_DEBUG_VIRTUAL
2136         tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2137         depends on DEBUG_VIRTUAL
2138         help
2139           Test the kernel's ability to detect incorrect calls to
2140           virt_to_phys() done against the non-linear part of the
2141           kernel's virtual address map.
2142
2143           If unsure, say N.
2144
2145 config TEST_MEMCAT_P
2146         tristate "Test memcat_p() helper function"
2147         help
2148           Test the memcat_p() helper for correctly merging two
2149           pointer arrays together.
2150
2151           If unsure, say N.
2152
2153 config TEST_LIVEPATCH
2154         tristate "Test livepatching"
2155         default n
2156         depends on DYNAMIC_DEBUG
2157         depends on LIVEPATCH
2158         depends on m
2159         help
2160           Test kernel livepatching features for correctness.  The tests will
2161           load test modules that will be livepatched in various scenarios.
2162
2163           To run all the livepatching tests:
2164
2165           make -C tools/testing/selftests TARGETS=livepatch run_tests
2166
2167           Alternatively, individual tests may be invoked:
2168
2169           tools/testing/selftests/livepatch/test-callbacks.sh
2170           tools/testing/selftests/livepatch/test-livepatch.sh
2171           tools/testing/selftests/livepatch/test-shadow-vars.sh
2172
2173           If unsure, say N.
2174
2175 config TEST_OBJAGG
2176         tristate "Perform selftest on object aggreration manager"
2177         default n
2178         depends on OBJAGG
2179         help
2180           Enable this option to test object aggregation manager on boot
2181           (or module load).
2182
2183
2184 config TEST_STACKINIT
2185         tristate "Test level of stack variable initialization"
2186         help
2187           Test if the kernel is zero-initializing stack variables and
2188           padding. Coverage is controlled by compiler flags,
2189           CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2190           or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2191
2192           If unsure, say N.
2193
2194 config TEST_MEMINIT
2195         tristate "Test heap/page initialization"
2196         help
2197           Test if the kernel is zero-initializing heap and page allocations.
2198           This can be useful to test init_on_alloc and init_on_free features.
2199
2200           If unsure, say N.
2201
2202 endif # RUNTIME_TESTING_MENU
2203
2204 config MEMTEST
2205         bool "Memtest"
2206         ---help---
2207           This option adds a kernel parameter 'memtest', which allows memtest
2208           to be set.
2209                 memtest=0, mean disabled; -- default
2210                 memtest=1, mean do 1 test pattern;
2211                 ...
2212                 memtest=17, mean do 17 test patterns.
2213           If you are unsure how to answer this question, answer N.
2214
2215
2216
2217 config HYPERV_TESTING
2218         bool "Microsoft Hyper-V driver testing"
2219         default n
2220         depends on HYPERV && DEBUG_FS
2221         help
2222           Select this option to enable Hyper-V vmbus testing.
2223
2224 endmenu # "Kernel Testing and Coverage"
2225
2226 endmenu # Kernel hacking