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