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