8526397f06886bed08c8118c727b9bc9d0be916a
[platform/kernel/linux-rpi.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 menu "Debug kernel data structures"
1359
1360 config DEBUG_LIST
1361         bool "Debug linked list manipulation"
1362         depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
1363         help
1364           Enable this to turn on extended checks in the linked-list
1365           walking routines.
1366
1367           If unsure, say N.
1368
1369 config DEBUG_PLIST
1370         bool "Debug priority linked list manipulation"
1371         depends on DEBUG_KERNEL
1372         help
1373           Enable this to turn on extended checks in the priority-ordered
1374           linked-list (plist) walking routines.  This checks the entire
1375           list multiple times during each manipulation.
1376
1377           If unsure, say N.
1378
1379 config DEBUG_SG
1380         bool "Debug SG table operations"
1381         depends on DEBUG_KERNEL
1382         help
1383           Enable this to turn on checks on scatter-gather tables. This can
1384           help find problems with drivers that do not properly initialize
1385           their sg tables.
1386
1387           If unsure, say N.
1388
1389 config DEBUG_NOTIFIERS
1390         bool "Debug notifier call chains"
1391         depends on DEBUG_KERNEL
1392         help
1393           Enable this to turn on sanity checking for notifier call chains.
1394           This is most useful for kernel developers to make sure that
1395           modules properly unregister themselves from notifier chains.
1396           This is a relatively cheap check but if you care about maximum
1397           performance, say N.
1398
1399 config BUG_ON_DATA_CORRUPTION
1400         bool "Trigger a BUG when data corruption is detected"
1401         select DEBUG_LIST
1402         help
1403           Select this option if the kernel should BUG when it encounters
1404           data corruption in kernel memory structures when they get checked
1405           for validity.
1406
1407           If unsure, say N.
1408
1409 endmenu
1410
1411 config DEBUG_CREDENTIALS
1412         bool "Debug credential management"
1413         depends on DEBUG_KERNEL
1414         help
1415           Enable this to turn on some debug checking for credential
1416           management.  The additional code keeps track of the number of
1417           pointers from task_structs to any given cred struct, and checks to
1418           see that this number never exceeds the usage count of the cred
1419           struct.
1420
1421           Furthermore, if SELinux is enabled, this also checks that the
1422           security pointer in the cred struct is never seen to be invalid.
1423
1424           If unsure, say N.
1425
1426 source "kernel/rcu/Kconfig.debug"
1427
1428 config DEBUG_WQ_FORCE_RR_CPU
1429         bool "Force round-robin CPU selection for unbound work items"
1430         depends on DEBUG_KERNEL
1431         default n
1432         help
1433           Workqueue used to implicitly guarantee that work items queued
1434           without explicit CPU specified are put on the local CPU.  This
1435           guarantee is no longer true and while local CPU is still
1436           preferred work items may be put on foreign CPUs.  Kernel
1437           parameter "workqueue.debug_force_rr_cpu" is added to force
1438           round-robin CPU selection to flush out usages which depend on the
1439           now broken guarantee.  This config option enables the debug
1440           feature by default.  When enabled, memory and cache locality will
1441           be impacted.
1442
1443 config DEBUG_BLOCK_EXT_DEVT
1444         bool "Force extended block device numbers and spread them"
1445         depends on DEBUG_KERNEL
1446         depends on BLOCK
1447         default n
1448         help
1449           BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1450           SOME DISTRIBUTIONS.  DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1451           YOU ARE DOING.  Distros, please enable this and fix whatever
1452           is broken.
1453
1454           Conventionally, block device numbers are allocated from
1455           predetermined contiguous area.  However, extended block area
1456           may introduce non-contiguous block device numbers.  This
1457           option forces most block device numbers to be allocated from
1458           the extended space and spreads them to discover kernel or
1459           userland code paths which assume predetermined contiguous
1460           device number allocation.
1461
1462           Note that turning on this debug option shuffles all the
1463           device numbers for all IDE and SCSI devices including libata
1464           ones, so root partition specified using device number
1465           directly (via rdev or root=MAJ:MIN) won't work anymore.
1466           Textual device names (root=/dev/sdXn) will continue to work.
1467
1468           Say N if you are unsure.
1469
1470 config CPU_HOTPLUG_STATE_CONTROL
1471         bool "Enable CPU hotplug state control"
1472         depends on DEBUG_KERNEL
1473         depends on HOTPLUG_CPU
1474         default n
1475         help
1476           Allows to write steps between "offline" and "online" to the CPUs
1477           sysfs target file so states can be stepped granular. This is a debug
1478           option for now as the hotplug machinery cannot be stopped and
1479           restarted at arbitrary points yet.
1480
1481           Say N if your are unsure.
1482
1483 config NOTIFIER_ERROR_INJECTION
1484         tristate "Notifier error injection"
1485         depends on DEBUG_KERNEL
1486         select DEBUG_FS
1487         help
1488           This option provides the ability to inject artificial errors to
1489           specified notifier chain callbacks. It is useful to test the error
1490           handling of notifier call chain failures.
1491
1492           Say N if unsure.
1493
1494 config PM_NOTIFIER_ERROR_INJECT
1495         tristate "PM notifier error injection module"
1496         depends on PM && NOTIFIER_ERROR_INJECTION
1497         default m if PM_DEBUG
1498         help
1499           This option provides the ability to inject artificial errors to
1500           PM notifier chain callbacks.  It is controlled through debugfs
1501           interface /sys/kernel/debug/notifier-error-inject/pm
1502
1503           If the notifier call chain should be failed with some events
1504           notified, write the error code to "actions/<notifier event>/error".
1505
1506           Example: Inject PM suspend error (-12 = -ENOMEM)
1507
1508           # cd /sys/kernel/debug/notifier-error-inject/pm/
1509           # echo -12 > actions/PM_SUSPEND_PREPARE/error
1510           # echo mem > /sys/power/state
1511           bash: echo: write error: Cannot allocate memory
1512
1513           To compile this code as a module, choose M here: the module will
1514           be called pm-notifier-error-inject.
1515
1516           If unsure, say N.
1517
1518 config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1519         tristate "OF reconfig notifier error injection module"
1520         depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
1521         help
1522           This option provides the ability to inject artificial errors to
1523           OF reconfig notifier chain callbacks.  It is controlled
1524           through debugfs interface under
1525           /sys/kernel/debug/notifier-error-inject/OF-reconfig/
1526
1527           If the notifier call chain should be failed with some events
1528           notified, write the error code to "actions/<notifier event>/error".
1529
1530           To compile this code as a module, choose M here: the module will
1531           be called of-reconfig-notifier-error-inject.
1532
1533           If unsure, say N.
1534
1535 config NETDEV_NOTIFIER_ERROR_INJECT
1536         tristate "Netdev notifier error injection module"
1537         depends on NET && NOTIFIER_ERROR_INJECTION
1538         help
1539           This option provides the ability to inject artificial errors to
1540           netdevice notifier chain callbacks.  It is controlled through debugfs
1541           interface /sys/kernel/debug/notifier-error-inject/netdev
1542
1543           If the notifier call chain should be failed with some events
1544           notified, write the error code to "actions/<notifier event>/error".
1545
1546           Example: Inject netdevice mtu change error (-22 = -EINVAL)
1547
1548           # cd /sys/kernel/debug/notifier-error-inject/netdev
1549           # echo -22 > actions/NETDEV_CHANGEMTU/error
1550           # ip link set eth0 mtu 1024
1551           RTNETLINK answers: Invalid argument
1552
1553           To compile this code as a module, choose M here: the module will
1554           be called netdev-notifier-error-inject.
1555
1556           If unsure, say N.
1557
1558 config FUNCTION_ERROR_INJECTION
1559         def_bool y
1560         depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1561
1562 config FAULT_INJECTION
1563         bool "Fault-injection framework"
1564         depends on DEBUG_KERNEL
1565         help
1566           Provide fault-injection framework.
1567           For more details, see Documentation/fault-injection/.
1568
1569 config FAILSLAB
1570         bool "Fault-injection capability for kmalloc"
1571         depends on FAULT_INJECTION
1572         depends on SLAB || SLUB
1573         help
1574           Provide fault-injection capability for kmalloc.
1575
1576 config FAIL_PAGE_ALLOC
1577         bool "Fault-injection capabilitiy for alloc_pages()"
1578         depends on FAULT_INJECTION
1579         help
1580           Provide fault-injection capability for alloc_pages().
1581
1582 config FAIL_MAKE_REQUEST
1583         bool "Fault-injection capability for disk IO"
1584         depends on FAULT_INJECTION && BLOCK
1585         help
1586           Provide fault-injection capability for disk IO.
1587
1588 config FAIL_IO_TIMEOUT
1589         bool "Fault-injection capability for faking disk interrupts"
1590         depends on FAULT_INJECTION && BLOCK
1591         help
1592           Provide fault-injection capability on end IO handling. This
1593           will make the block layer "forget" an interrupt as configured,
1594           thus exercising the error handling.
1595
1596           Only works with drivers that use the generic timeout handling,
1597           for others it wont do anything.
1598
1599 config FAIL_FUTEX
1600         bool "Fault-injection capability for futexes"
1601         select DEBUG_FS
1602         depends on FAULT_INJECTION && FUTEX
1603         help
1604           Provide fault-injection capability for futexes.
1605
1606 config FAULT_INJECTION_DEBUG_FS
1607         bool "Debugfs entries for fault-injection capabilities"
1608         depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1609         help
1610           Enable configuration of fault-injection capabilities via debugfs.
1611
1612 config FAIL_FUNCTION
1613         bool "Fault-injection capability for functions"
1614         depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1615         help
1616           Provide function-based fault-injection capability.
1617           This will allow you to override a specific function with a return
1618           with given return value. As a result, function caller will see
1619           an error value and have to handle it. This is useful to test the
1620           error handling in various subsystems.
1621
1622 config FAIL_MMC_REQUEST
1623         bool "Fault-injection capability for MMC IO"
1624         depends on FAULT_INJECTION_DEBUG_FS && MMC
1625         help
1626           Provide fault-injection capability for MMC IO.
1627           This will make the mmc core return data errors. This is
1628           useful to test the error handling in the mmc block device
1629           and to test how the mmc host driver handles retries from
1630           the block device.
1631
1632 config FAULT_INJECTION_STACKTRACE_FILTER
1633         bool "stacktrace filter for fault-injection capabilities"
1634         depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
1635         depends on !X86_64
1636         select STACKTRACE
1637         select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1638         help
1639           Provide stacktrace filter for fault-injection capabilities
1640
1641 config LATENCYTOP
1642         bool "Latency measuring infrastructure"
1643         depends on DEBUG_KERNEL
1644         depends on STACKTRACE_SUPPORT
1645         depends on PROC_FS
1646         select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1647         select KALLSYMS
1648         select KALLSYMS_ALL
1649         select STACKTRACE
1650         select SCHEDSTATS
1651         select SCHED_DEBUG
1652         help
1653           Enable this option if you want to use the LatencyTOP tool
1654           to find out which userspace is blocking on what kernel operations.
1655
1656 source "kernel/trace/Kconfig"
1657
1658 config PROVIDE_OHCI1394_DMA_INIT
1659         bool "Remote debugging over FireWire early on boot"
1660         depends on PCI && X86
1661         help
1662           If you want to debug problems which hang or crash the kernel early
1663           on boot and the crashing machine has a FireWire port, you can use
1664           this feature to remotely access the memory of the crashed machine
1665           over FireWire. This employs remote DMA as part of the OHCI1394
1666           specification which is now the standard for FireWire controllers.
1667
1668           With remote DMA, you can monitor the printk buffer remotely using
1669           firescope and access all memory below 4GB using fireproxy from gdb.
1670           Even controlling a kernel debugger is possible using remote DMA.
1671
1672           Usage:
1673
1674           If ohci1394_dma=early is used as boot parameter, it will initialize
1675           all OHCI1394 controllers which are found in the PCI config space.
1676
1677           As all changes to the FireWire bus such as enabling and disabling
1678           devices cause a bus reset and thereby disable remote DMA for all
1679           devices, be sure to have the cable plugged and FireWire enabled on
1680           the debugging host before booting the debug target for debugging.
1681
1682           This code (~1k) is freed after boot. By then, the firewire stack
1683           in charge of the OHCI-1394 controllers should be used instead.
1684
1685           See Documentation/debugging-via-ohci1394.txt for more information.
1686
1687 source "lib/kunit/Kconfig"
1688
1689 menuconfig RUNTIME_TESTING_MENU
1690         bool "Runtime Testing"
1691         def_bool y
1692
1693 if RUNTIME_TESTING_MENU
1694
1695 config LKDTM
1696         tristate "Linux Kernel Dump Test Tool Module"
1697         depends on DEBUG_FS
1698         help
1699         This module enables testing of the different dumping mechanisms by
1700         inducing system failures at predefined crash points.
1701         If you don't need it: say N
1702         Choose M here to compile this code as a module. The module will be
1703         called lkdtm.
1704
1705         Documentation on how to use the module can be found in
1706         Documentation/fault-injection/provoke-crashes.rst
1707
1708 config TEST_LIST_SORT
1709         tristate "Linked list sorting test"
1710         depends on DEBUG_KERNEL || m
1711         help
1712           Enable this to turn on 'list_sort()' function test. This test is
1713           executed only once during system boot (so affects only boot time),
1714           or at module load time.
1715
1716           If unsure, say N.
1717
1718 config TEST_SORT
1719         tristate "Array-based sort test"
1720         depends on DEBUG_KERNEL || m
1721         help
1722           This option enables the self-test function of 'sort()' at boot,
1723           or at module load time.
1724
1725           If unsure, say N.
1726
1727 config KPROBES_SANITY_TEST
1728         bool "Kprobes sanity tests"
1729         depends on DEBUG_KERNEL
1730         depends on KPROBES
1731         help
1732           This option provides for testing basic kprobes functionality on
1733           boot. Samples of kprobe and kretprobe are inserted and
1734           verified for functionality.
1735
1736           Say N if you are unsure.
1737
1738 config BACKTRACE_SELF_TEST
1739         tristate "Self test for the backtrace code"
1740         depends on DEBUG_KERNEL
1741         help
1742           This option provides a kernel module that can be used to test
1743           the kernel stack backtrace code. This option is not useful
1744           for distributions or general kernels, but only for kernel
1745           developers working on architecture code.
1746
1747           Note that if you want to also test saved backtraces, you will
1748           have to enable STACKTRACE as well.
1749
1750           Say N if you are unsure.
1751
1752 config RBTREE_TEST
1753         tristate "Red-Black tree test"
1754         depends on DEBUG_KERNEL
1755         help
1756           A benchmark measuring the performance of the rbtree library.
1757           Also includes rbtree invariant checks.
1758
1759 config REED_SOLOMON_TEST
1760         tristate "Reed-Solomon library test"
1761         depends on DEBUG_KERNEL || m
1762         select REED_SOLOMON
1763         select REED_SOLOMON_ENC16
1764         select REED_SOLOMON_DEC16
1765         help
1766           This option enables the self-test function of rslib at boot,
1767           or at module load time.
1768
1769           If unsure, say N.
1770
1771 config INTERVAL_TREE_TEST
1772         tristate "Interval tree test"
1773         depends on DEBUG_KERNEL
1774         select INTERVAL_TREE
1775         help
1776           A benchmark measuring the performance of the interval tree library
1777
1778 config PERCPU_TEST
1779         tristate "Per cpu operations test"
1780         depends on m && DEBUG_KERNEL
1781         help
1782           Enable this option to build test module which validates per-cpu
1783           operations.
1784
1785           If unsure, say N.
1786
1787 config ATOMIC64_SELFTEST
1788         tristate "Perform an atomic64_t self-test"
1789         help
1790           Enable this option to test the atomic64_t functions at boot or
1791           at module load time.
1792
1793           If unsure, say N.
1794
1795 config ASYNC_RAID6_TEST
1796         tristate "Self test for hardware accelerated raid6 recovery"
1797         depends on ASYNC_RAID6_RECOV
1798         select ASYNC_MEMCPY
1799         ---help---
1800           This is a one-shot self test that permutes through the
1801           recovery of all the possible two disk failure scenarios for a
1802           N-disk array.  Recovery is performed with the asynchronous
1803           raid6 recovery routines, and will optionally use an offload
1804           engine if one is available.
1805
1806           If unsure, say N.
1807
1808 config TEST_HEXDUMP
1809         tristate "Test functions located in the hexdump module at runtime"
1810
1811 config TEST_STRING_HELPERS
1812         tristate "Test functions located in the string_helpers module at runtime"
1813
1814 config TEST_STRSCPY
1815         tristate "Test strscpy*() family of functions at runtime"
1816
1817 config TEST_KSTRTOX
1818         tristate "Test kstrto*() family of functions at runtime"
1819
1820 config TEST_PRINTF
1821         tristate "Test printf() family of functions at runtime"
1822
1823 config TEST_BITMAP
1824         tristate "Test bitmap_*() family of functions at runtime"
1825         help
1826           Enable this option to test the bitmap functions at boot.
1827
1828           If unsure, say N.
1829
1830 config TEST_BITFIELD
1831         tristate "Test bitfield functions at runtime"
1832         help
1833           Enable this option to test the bitfield functions at boot.
1834
1835           If unsure, say N.
1836
1837 config TEST_UUID
1838         tristate "Test functions located in the uuid module at runtime"
1839
1840 config TEST_XARRAY
1841         tristate "Test the XArray code at runtime"
1842
1843 config TEST_OVERFLOW
1844         tristate "Test check_*_overflow() functions at runtime"
1845
1846 config TEST_RHASHTABLE
1847         tristate "Perform selftest on resizable hash table"
1848         help
1849           Enable this option to test the rhashtable functions at boot.
1850
1851           If unsure, say N.
1852
1853 config TEST_HASH
1854         tristate "Perform selftest on hash functions"
1855         help
1856           Enable this option to test the kernel's integer (<linux/hash.h>),
1857           string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1858           hash functions on boot (or module load).
1859
1860           This is intended to help people writing architecture-specific
1861           optimized versions.  If unsure, say N.
1862
1863 config TEST_IDA
1864         tristate "Perform selftest on IDA functions"
1865
1866 config TEST_PARMAN
1867         tristate "Perform selftest on priority array manager"
1868         depends on PARMAN
1869         help
1870           Enable this option to test priority array manager on boot
1871           (or module load).
1872
1873           If unsure, say N.
1874
1875 config TEST_IRQ_TIMINGS
1876         bool "IRQ timings selftest"
1877         depends on IRQ_TIMINGS
1878         help
1879           Enable this option to test the irq timings code on boot.
1880
1881           If unsure, say N.
1882
1883 config TEST_LKM
1884         tristate "Test module loading with 'hello world' module"
1885         depends on m
1886         help
1887           This builds the "test_module" module that emits "Hello, world"
1888           on printk when loaded. It is designed to be used for basic
1889           evaluation of the module loading subsystem (for example when
1890           validating module verification). It lacks any extra dependencies,
1891           and will not normally be loaded by the system unless explicitly
1892           requested by name.
1893
1894           If unsure, say N.
1895
1896 config TEST_VMALLOC
1897         tristate "Test module for stress/performance analysis of vmalloc allocator"
1898         default n
1899        depends on MMU
1900         depends on m
1901         help
1902           This builds the "test_vmalloc" module that should be used for
1903           stress and performance analysis. So, any new change for vmalloc
1904           subsystem can be evaluated from performance and stability point
1905           of view.
1906
1907           If unsure, say N.
1908
1909 config TEST_USER_COPY
1910         tristate "Test user/kernel boundary protections"
1911         depends on m
1912         help
1913           This builds the "test_user_copy" module that runs sanity checks
1914           on the copy_to/from_user infrastructure, making sure basic
1915           user/kernel boundary testing is working. If it fails to load,
1916           a regression has been detected in the user/kernel memory boundary
1917           protections.
1918
1919           If unsure, say N.
1920
1921 config TEST_BPF
1922         tristate "Test BPF filter functionality"
1923         depends on m && NET
1924         help
1925           This builds the "test_bpf" module that runs various test vectors
1926           against the BPF interpreter or BPF JIT compiler depending on the
1927           current setting. This is in particular useful for BPF JIT compiler
1928           development, but also to run regression tests against changes in
1929           the interpreter code. It also enables test stubs for eBPF maps and
1930           verifier used by user space verifier testsuite.
1931
1932           If unsure, say N.
1933
1934 config TEST_BLACKHOLE_DEV
1935         tristate "Test blackhole netdev functionality"
1936         depends on m && NET
1937         help
1938           This builds the "test_blackhole_dev" module that validates the
1939           data path through this blackhole netdev.
1940
1941           If unsure, say N.
1942
1943 config FIND_BIT_BENCHMARK
1944         tristate "Test find_bit functions"
1945         help
1946           This builds the "test_find_bit" module that measure find_*_bit()
1947           functions performance.
1948
1949           If unsure, say N.
1950
1951 config TEST_FIRMWARE
1952         tristate "Test firmware loading via userspace interface"
1953         depends on FW_LOADER
1954         help
1955           This builds the "test_firmware" module that creates a userspace
1956           interface for testing firmware loading. This can be used to
1957           control the triggering of firmware loading without needing an
1958           actual firmware-using device. The contents can be rechecked by
1959           userspace.
1960
1961           If unsure, say N.
1962
1963 config TEST_SYSCTL
1964         tristate "sysctl test driver"
1965         depends on PROC_SYSCTL
1966         help
1967           This builds the "test_sysctl" module. This driver enables to test the
1968           proc sysctl interfaces available to drivers safely without affecting
1969           production knobs which might alter system functionality.
1970
1971           If unsure, say N.
1972
1973 config SYSCTL_KUNIT_TEST
1974         bool "KUnit test for sysctl"
1975         depends on KUNIT
1976         help
1977           This builds the proc sysctl unit test, which runs on boot.
1978           Tests the API contract and implementation correctness of sysctl.
1979           For more information on KUnit and unit tests in general please refer
1980           to the KUnit documentation in Documentation/dev-tools/kunit/.
1981
1982           If unsure, say N.
1983
1984 config LIST_KUNIT_TEST
1985         bool "KUnit Test for Kernel Linked-list structures"
1986         depends on KUNIT
1987         help
1988           This builds the linked list KUnit test suite.
1989           It tests that the API and basic functionality of the list_head type
1990           and associated macros.
1991
1992           KUnit tests run during boot and output the results to the debug log
1993           in TAP format (http://testanything.org/). Only useful for kernel devs
1994           running the KUnit test harness, and not intended for inclusion into a
1995           production build.
1996
1997           For more information on KUnit and unit tests in general please refer
1998           to the KUnit documentation in Documentation/dev-tools/kunit/.
1999
2000           If unsure, say N.
2001
2002 config TEST_UDELAY
2003         tristate "udelay test driver"
2004         help
2005           This builds the "udelay_test" module that helps to make sure
2006           that udelay() is working properly.
2007
2008           If unsure, say N.
2009
2010 config TEST_STATIC_KEYS
2011         tristate "Test static keys"
2012         depends on m
2013         help
2014           Test the static key interfaces.
2015
2016           If unsure, say N.
2017
2018 config TEST_KMOD
2019         tristate "kmod stress tester"
2020         depends on m
2021         depends on NETDEVICES && NET_CORE && INET # for TUN
2022         depends on BLOCK
2023         select TEST_LKM
2024         select XFS_FS
2025         select TUN
2026         select BTRFS_FS
2027         help
2028           Test the kernel's module loading mechanism: kmod. kmod implements
2029           support to load modules using the Linux kernel's usermode helper.
2030           This test provides a series of tests against kmod.
2031
2032           Although technically you can either build test_kmod as a module or
2033           into the kernel we disallow building it into the kernel since
2034           it stress tests request_module() and this will very likely cause
2035           some issues by taking over precious threads available from other
2036           module load requests, ultimately this could be fatal.
2037
2038           To run tests run:
2039
2040           tools/testing/selftests/kmod/kmod.sh --help
2041
2042           If unsure, say N.
2043
2044 config TEST_DEBUG_VIRTUAL
2045         tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2046         depends on DEBUG_VIRTUAL
2047         help
2048           Test the kernel's ability to detect incorrect calls to
2049           virt_to_phys() done against the non-linear part of the
2050           kernel's virtual address map.
2051
2052           If unsure, say N.
2053
2054 config TEST_MEMCAT_P
2055         tristate "Test memcat_p() helper function"
2056         help
2057           Test the memcat_p() helper for correctly merging two
2058           pointer arrays together.
2059
2060           If unsure, say N.
2061
2062 config TEST_LIVEPATCH
2063         tristate "Test livepatching"
2064         default n
2065         depends on DYNAMIC_DEBUG
2066         depends on LIVEPATCH
2067         depends on m
2068         help
2069           Test kernel livepatching features for correctness.  The tests will
2070           load test modules that will be livepatched in various scenarios.
2071
2072           To run all the livepatching tests:
2073
2074           make -C tools/testing/selftests TARGETS=livepatch run_tests
2075
2076           Alternatively, individual tests may be invoked:
2077
2078           tools/testing/selftests/livepatch/test-callbacks.sh
2079           tools/testing/selftests/livepatch/test-livepatch.sh
2080           tools/testing/selftests/livepatch/test-shadow-vars.sh
2081
2082           If unsure, say N.
2083
2084 config TEST_OBJAGG
2085         tristate "Perform selftest on object aggreration manager"
2086         default n
2087         depends on OBJAGG
2088         help
2089           Enable this option to test object aggregation manager on boot
2090           (or module load).
2091
2092
2093 config TEST_STACKINIT
2094         tristate "Test level of stack variable initialization"
2095         help
2096           Test if the kernel is zero-initializing stack variables and
2097           padding. Coverage is controlled by compiler flags,
2098           CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2099           or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2100
2101           If unsure, say N.
2102
2103 config TEST_MEMINIT
2104         tristate "Test heap/page initialization"
2105         help
2106           Test if the kernel is zero-initializing heap and page allocations.
2107           This can be useful to test init_on_alloc and init_on_free features.
2108
2109           If unsure, say N.
2110
2111 endif # RUNTIME_TESTING_MENU
2112
2113 config MEMTEST
2114         bool "Memtest"
2115         ---help---
2116           This option adds a kernel parameter 'memtest', which allows memtest
2117           to be set.
2118                 memtest=0, mean disabled; -- default
2119                 memtest=1, mean do 1 test pattern;
2120                 ...
2121                 memtest=17, mean do 17 test patterns.
2122           If you are unsure how to answer this question, answer N.
2123
2124 source "samples/Kconfig"
2125
2126 config ARCH_HAS_DEVMEM_IS_ALLOWED
2127         bool
2128
2129 config STRICT_DEVMEM
2130         bool "Filter access to /dev/mem"
2131         depends on MMU && DEVMEM
2132         depends on ARCH_HAS_DEVMEM_IS_ALLOWED
2133         default y if PPC || X86 || ARM64
2134         ---help---
2135           If this option is disabled, you allow userspace (root) access to all
2136           of memory, including kernel and userspace memory. Accidental
2137           access to this is obviously disastrous, but specific access can
2138           be used by people debugging the kernel. Note that with PAT support
2139           enabled, even in this case there are restrictions on /dev/mem
2140           use due to the cache aliasing requirements.
2141
2142           If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
2143           file only allows userspace access to PCI space and the BIOS code and
2144           data regions.  This is sufficient for dosemu and X and all common
2145           users of /dev/mem.
2146
2147           If in doubt, say Y.
2148
2149 config IO_STRICT_DEVMEM
2150         bool "Filter I/O access to /dev/mem"
2151         depends on STRICT_DEVMEM
2152         ---help---
2153           If this option is disabled, you allow userspace (root) access to all
2154           io-memory regardless of whether a driver is actively using that
2155           range.  Accidental access to this is obviously disastrous, but
2156           specific access can be used by people debugging kernel drivers.
2157
2158           If this option is switched on, the /dev/mem file only allows
2159           userspace access to *idle* io-memory ranges (see /proc/iomem) This
2160           may break traditional users of /dev/mem (dosemu, legacy X, etc...)
2161           if the driver using a given range cannot be disabled.
2162
2163           If in doubt, say Y.
2164
2165 menu "$(SRCARCH) Debugging"
2166
2167 source "arch/$(SRCARCH)/Kconfig.debug"
2168
2169 endmenu
2170
2171 config HYPERV_TESTING
2172         bool "Microsoft Hyper-V driver testing"
2173         default n
2174         depends on HYPERV && DEBUG_FS
2175         help
2176           Select this option to enable Hyper-V vmbus testing.
2177
2178 endmenu # Kernel hacking