blob: a4b9a102d6fa41ea52a322f9921d86e23332bff3 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001# SPDX-License-Identifier: GPL-2.0-only
2menu "Kernel hacking"
3
4menu "printk and dmesg options"
5
6config 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
21config 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
38config 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
53config 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
64config 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
79config 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
97config DYNAMIC_DEBUG
98 bool "Enable dynamic printk() support"
99 default n
100 depends on PRINTK
101 depends on (DEBUG_FS || PROC_FS)
102 select DYNAMIC_DEBUG_CORE
103 help
104
105 Compiles debug level messages into the kernel, which would not
106 otherwise be available at runtime. These messages can then be
107 enabled/disabled based on various levels of scope - per source file,
108 function, module, format string, and line number. This mechanism
109 implicitly compiles in all pr_debug() and dev_dbg() calls, which
110 enlarges the kernel text size by about 2%.
111
112 If a source file is compiled with DEBUG flag set, any
113 pr_debug() calls in it are enabled by default, but can be
114 disabled at runtime as below. Note that DEBUG flag is
115 turned on by many CONFIG_*DEBUG* options.
116
117 Usage:
118
119 Dynamic debugging is controlled via the 'dynamic_debug/control' file,
120 which is contained in the 'debugfs' filesystem or procfs.
121 Thus, the debugfs or procfs filesystem must first be mounted before
122 making use of this feature.
123 We refer the control file as: <debugfs>/dynamic_debug/control. This
124 file contains a list of the debug statements that can be enabled. The
125 format for each line of the file is:
126
127 filename:lineno [module]function flags format
128
129 filename : source file of the debug statement
130 lineno : line number of the debug statement
131 module : module that contains the debug statement
132 function : function that contains the debug statement
133 flags : '=p' means the line is turned 'on' for printing
134 format : the format used for the debug statement
135
136 From a live system:
137
138 nullarbor:~ # cat <debugfs>/dynamic_debug/control
139 # filename:lineno [module]function flags format
140 fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
141 fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
142 fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
143
144 Example usage:
145
146 // enable the message at line 1603 of file svcsock.c
147 nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
148 <debugfs>/dynamic_debug/control
149
150 // enable all the messages in file svcsock.c
151 nullarbor:~ # echo -n 'file svcsock.c +p' >
152 <debugfs>/dynamic_debug/control
153
154 // enable all the messages in the NFS server module
155 nullarbor:~ # echo -n 'module nfsd +p' >
156 <debugfs>/dynamic_debug/control
157
158 // enable all 12 messages in the function svc_process()
159 nullarbor:~ # echo -n 'func svc_process +p' >
160 <debugfs>/dynamic_debug/control
161
162 // disable all 12 messages in the function svc_process()
163 nullarbor:~ # echo -n 'func svc_process -p' >
164 <debugfs>/dynamic_debug/control
165
166 See Documentation/admin-guide/dynamic-debug-howto.rst for additional
167 information.
168
169config DYNAMIC_DEBUG_CORE
170 bool "Enable core function of dynamic debug support"
171 depends on PRINTK
172 depends on (DEBUG_FS || PROC_FS)
173 help
174 Enable core functional support of dynamic debug. It is useful
175 when you want to tie dynamic debug to your kernel modules with
176 DYNAMIC_DEBUG_MODULE defined for each of them, especially for
177 the case of embedded system where the kernel image size is
178 sensitive for people.
179
180endmenu # "printk and dmesg options"
181
182menu "Compile-time checks and compiler options"
183
184config DEBUG_INFO
185 bool "Compile the kernel with debug info"
186 depends on DEBUG_KERNEL && !COMPILE_TEST
187 help
188 If you say Y here the resulting kernel image will include
189 debugging info resulting in a larger kernel image.
190 This adds debug symbols to the kernel and modules (gcc -g), and
191 is needed if you intend to use kernel crashdump or binary object
192 tools like crash, kgdb, LKCD, gdb, etc on the kernel.
193 Say Y here only if you plan to debug the kernel.
194
195 If unsure, say N.
196
197config DEBUG_INFO_REDUCED
198 bool "Reduce debugging information"
199 depends on DEBUG_INFO
200 help
201 If you say Y here gcc is instructed to generate less debugging
202 information for structure types. This means that tools that
203 need full debugging information (like kgdb or systemtap) won't
204 be happy. But if you merely need debugging information to
205 resolve line numbers there is no loss. Advantage is that
206 build directory object sizes shrink dramatically over a full
207 DEBUG_INFO build and compile times are reduced too.
208 Only works with newer gcc versions.
209
210config DEBUG_INFO_SPLIT
211 bool "Produce split debuginfo in .dwo files"
212 depends on DEBUG_INFO
213 depends on $(cc-option,-gsplit-dwarf)
214 help
215 Generate debug info into separate .dwo files. This significantly
216 reduces the build directory size for builds with DEBUG_INFO,
217 because it stores the information only once on disk in .dwo
218 files instead of multiple times in object files and executables.
219 In addition the debug information is also compressed.
220
221 Requires recent gcc (4.7+) and recent gdb/binutils.
222 Any tool that packages or reads debug information would need
223 to know about the .dwo files and include them.
224 Incompatible with older versions of ccache.
225
226config DEBUG_INFO_DWARF4
227 bool "Generate dwarf4 debuginfo"
228 depends on DEBUG_INFO
229 depends on $(cc-option,-gdwarf-4)
230 help
231 Generate dwarf4 debug info. This requires recent versions
232 of gcc and gdb. It makes the debug information larger.
233 But it significantly improves the success of resolving
234 variables in gdb on optimized code.
235
236config DEBUG_INFO_BTF
237 bool "Generate BTF typeinfo"
238 depends on DEBUG_INFO
239 depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
240 depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
241 help
242 Generate deduplicated BTF type information from DWARF debug info.
243 Turning this on expects presence of pahole tool, which will convert
244 DWARF type info into equivalent deduplicated BTF type info.
245
246config GDB_SCRIPTS
247 bool "Provide GDB scripts for kernel debugging"
248 depends on DEBUG_INFO
249 help
250 This creates the required links to GDB helper scripts in the
251 build directory. If you load vmlinux into gdb, the helper
252 scripts will be automatically imported by gdb as well, and
253 additional functions are available to analyze a Linux kernel
254 instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
255 for further details.
256
257config ENABLE_MUST_CHECK
258 bool "Enable __must_check logic"
259 default y
260 help
261 Enable the __must_check logic in the kernel build. Disable this to
262 suppress the "warning: ignoring return value of 'foo', declared with
263 attribute warn_unused_result" messages.
264
265config FRAME_WARN
266 int "Warn for stack frames larger than (needs gcc 4.4)"
267 range 0 8192
268 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
269 default 2048 if PARISC
270 default 1536 if (!64BIT && XTENSA)
271 default 1280 if KASAN && !64BIT
272 default 1024 if !64BIT
273 default 2048 if 64BIT
274 help
275 Tell gcc to warn at build time for stack frames larger than this.
276 Setting this too low will cause a lot of warnings.
277 Setting it to 0 disables the warning.
278 Requires gcc 4.4
279
280config STRIP_ASM_SYMS
281 bool "Strip assembler-generated symbols during link"
282 default n
283 help
284 Strip internal assembler-generated symbols during a link (symbols
285 that look like '.Lxxx') so they don't pollute the output of
286 get_wchan() and suchlike.
287
288config READABLE_ASM
289 bool "Generate readable assembler code"
290 depends on DEBUG_KERNEL
291 help
292 Disable some compiler optimizations that tend to generate human unreadable
293 assembler output. This may make the kernel slightly slower, but it helps
294 to keep kernel developers who have to stare a lot at assembler listings
295 sane.
296
297config DEBUG_FS
298 bool "Debug Filesystem"
299 help
300 debugfs is a virtual file system that kernel developers use to put
301 debugging files into. Enable this option to be able to read and
302 write to these files.
303
304 For detailed documentation on the debugfs API, see
305 Documentation/filesystems/.
306
307 If unsure, say N.
308
309config HEADERS_INSTALL
310 bool "Install uapi headers to usr/include"
311 depends on !UML
312 help
313 This option will install uapi headers (headers exported to user-space)
314 into the usr/include directory for use during the kernel build.
315 This is unneeded for building the kernel itself, but needed for some
316 user-space program samples. It is also needed by some features such
317 as uapi header sanity checks.
318
319config OPTIMIZE_INLINING
320 def_bool y
321 help
322 This option determines if the kernel forces gcc to inline the functions
323 developers have marked 'inline'. Doing so takes away freedom from gcc to
324 do what it thinks is best, which is desirable for the gcc 3.x series of
325 compilers. The gcc 4.x series have a rewritten inlining algorithm and
326 enabling this option will generate a smaller kernel there. Hopefully
327 this algorithm is so good that allowing gcc 4.x and above to make the
328 decision will become the default in the future. Until then this option
329 is there to test gcc for this.
330
331config DEBUG_SECTION_MISMATCH
332 bool "Enable full Section mismatch analysis"
333 help
334 The section mismatch analysis checks if there are illegal
335 references from one section to another section.
336 During linktime or runtime, some sections are dropped;
337 any use of code/data previously in these sections would
338 most likely result in an oops.
339 In the code, functions and variables are annotated with
340 __init,, etc. (see the full list in include/linux/init.h),
341 which results in the code/data being placed in specific sections.
342 The section mismatch analysis is always performed after a full
343 kernel build, and enabling this option causes the following
344 additional step to occur:
345 - Add the option -fno-inline-functions-called-once to gcc commands.
346 When inlining a function annotated with __init in a non-init
347 function, we would lose the section information and thus
348 the analysis would not catch the illegal reference.
349 This option tells gcc to inline less (but it does result in
350 a larger kernel).
351
352config SECTION_MISMATCH_WARN_ONLY
353 bool "Make section mismatch errors non-fatal"
354 default y
355 help
356 If you say N here, the build process will fail if there are any
357 section mismatch, instead of just throwing warnings.
358
359 If unsure, say Y.
360
361#
362# Select this config option from the architecture Kconfig, if it
363# is preferred to always offer frame pointers as a config
364# option on the architecture (regardless of KERNEL_DEBUG):
365#
366config ARCH_WANT_FRAME_POINTERS
367 bool
368
369config FRAME_POINTER
370 bool "Compile the kernel with frame pointers"
371 depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
372 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
373 help
374 If you say Y here the resulting kernel image will be slightly
375 larger and slower, but it gives very useful debugging information
376 in case of kernel bugs. (precise oopses/stacktraces/warnings)
377
378config STACK_VALIDATION
379 bool "Compile-time stack metadata validation"
380 depends on HAVE_STACK_VALIDATION
381 default n
382 help
383 Add compile-time checks to validate stack metadata, including frame
384 pointers (if CONFIG_FRAME_POINTER is enabled). This helps ensure
385 that runtime stack traces are more reliable.
386
387 This is also a prerequisite for generation of ORC unwind data, which
388 is needed for CONFIG_UNWINDER_ORC.
389
390 For more information, see
391 tools/objtool/Documentation/stack-validation.txt.
392
393config DEBUG_FORCE_WEAK_PER_CPU
394 bool "Force weak per-cpu definitions"
395 depends on DEBUG_KERNEL
396 help
397 s390 and alpha require percpu variables in modules to be
398 defined weak to work around addressing range issue which
399 puts the following two restrictions on percpu variable
400 definitions.
401
402 1. percpu symbols must be unique whether static or not
403 2. percpu variables can't be defined inside a function
404
405 To ensure that generic code follows the above rules, this
406 option forces all percpu variables to be defined as weak.
407
408endmenu # "Compiler options"
409
410config MAGIC_SYSRQ
411 bool "Magic SysRq key"
412 depends on !UML
413 help
414 If you say Y here, you will have some control over the system even
415 if the system crashes for example during kernel debugging (e.g., you
416 will be able to flush the buffer cache to disk, reboot the system
417 immediately or dump some status information). This is accomplished
418 by pressing various keys while holding SysRq (Alt+PrintScreen). It
419 also works on a serial console (on PC hardware at least), if you
420 send a BREAK and then within 5 seconds a command keypress. The
421 keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
422 Don't say Y unless you really know what this hack does.
423
424config MAGIC_SYSRQ_DEFAULT_ENABLE
425 hex "Enable magic SysRq key functions by default"
426 depends on MAGIC_SYSRQ
427 default 0x1
428 help
429 Specifies which SysRq key functions are enabled by default.
430 This may be set to 1 or 0 to enable or disable them all, or
431 to a bitmask as described in Documentation/admin-guide/sysrq.rst.
432
433config MAGIC_SYSRQ_SERIAL
434 bool "Enable magic SysRq key over serial"
435 depends on MAGIC_SYSRQ
436 default y
437 help
438 Many embedded boards have a disconnected TTL level serial which can
439 generate some garbage that can lead to spurious false sysrq detects.
440 This option allows you to decide whether you want to enable the
441 magic SysRq key.
442
443config 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
449config 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
458menu "Memory Debugging"
459
460source "mm/Kconfig.debug"
461
462config 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
470config 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
476config 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
485config 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
493config 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
501config 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
507config 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
515config 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
523config 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
531config 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
544config 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
557config HAVE_DEBUG_KMEMLEAK
558 bool
559
560config 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
583config 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
596config 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
604config 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
611config 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
626config 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
635config 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
644config 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
654config 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
662config 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
670config ARCH_HAS_DEBUG_VIRTUAL
671 bool
672
673config 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
682config 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
689config 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
701config 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
724config 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
735config 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
742config HAVE_DEBUG_STACKOVERFLOW
743 bool
744
745config 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
763source "lib/Kconfig.kasan"
764source "lib/Kconfig.kfence"
765
766endmenu # "Memory Debugging"
767
768config ARCH_HAS_KCOV
769 bool
770 help
771 An architecture should select this when it can successfully
772 build and run with CONFIG_KCOV. This typically requires
773 disabling instrumentation for some early boot code.
774
775config CC_HAS_SANCOV_TRACE_PC
776 def_bool $(cc-option,-fsanitize-coverage=trace-pc)
777
778config KCOV
779 bool "Code coverage for fuzzing"
780 depends on ARCH_HAS_KCOV
781 depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
782 select DEBUG_FS
783 select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
784 help
785 KCOV exposes kernel code coverage information in a form suitable
786 for coverage-guided fuzzing (randomized testing).
787
788 If RANDOMIZE_BASE is enabled, PC values will not be stable across
789 different machines and across reboots. If you need stable PC values,
790 disable RANDOMIZE_BASE.
791
792 For more details, see Documentation/dev-tools/kcov.rst.
793
794config KCOV_ENABLE_COMPARISONS
795 bool "Enable comparison operands collection by KCOV"
796 depends on KCOV
797 depends on $(cc-option,-fsanitize-coverage=trace-cmp)
798 help
799 KCOV also exposes operands of every comparison in the instrumented
800 code along with operand sizes and PCs of the comparison instructions.
801 These operands can be used by fuzzing engines to improve the quality
802 of fuzzing coverage.
803
804config KCOV_INSTRUMENT_ALL
805 bool "Instrument all code by default"
806 depends on KCOV
807 default y
808 help
809 If you are doing generic system call fuzzing (like e.g. syzkaller),
810 then you will want to instrument the whole kernel and you should
811 say y here. If you are doing more targeted fuzzing (like e.g.
812 filesystem fuzzing with AFL) then you will want to enable coverage
813 for more specific subsets of files, and should say n here.
814
815config DEBUG_SHIRQ
816 bool "Debug shared IRQ handlers"
817 depends on DEBUG_KERNEL
818 help
819 Enable this to generate a spurious interrupt as soon as a shared
820 interrupt handler is registered, and just before one is deregistered.
821 Drivers ought to be able to handle interrupts coming in at those
822 points; some don't and need to be caught.
823
824menu "Debug Lockups and Hangs"
825
826config LOCKUP_DETECTOR
827 bool
828
829config SOFTLOCKUP_DETECTOR
830 bool "Detect Soft Lockups"
831 depends on DEBUG_KERNEL && !S390
832 select LOCKUP_DETECTOR
833 help
834 Say Y here to enable the kernel to act as a watchdog to detect
835 soft lockups.
836
837 Softlockups are bugs that cause the kernel to loop in kernel
838 mode for more than 20 seconds, without giving other tasks a
839 chance to run. The current stack trace is displayed upon
840 detection and the system will stay locked up.
841
842config BOOTPARAM_SOFTLOCKUP_PANIC
843 bool "Panic (Reboot) On Soft Lockups"
844 depends on SOFTLOCKUP_DETECTOR
845 help
846 Say Y here to enable the kernel to panic on "soft lockups",
847 which are bugs that cause the kernel to loop in kernel
848 mode for more than 20 seconds (configurable using the watchdog_thresh
849 sysctl), without giving other tasks a chance to run.
850
851 The panic can be used in combination with panic_timeout,
852 to cause the system to reboot automatically after a
853 lockup has been detected. This feature is useful for
854 high-availability systems that have uptime guarantees and
855 where a lockup must be resolved ASAP.
856
857 Say N if unsure.
858
859config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
860 int
861 depends on SOFTLOCKUP_DETECTOR
862 range 0 1
863 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
864 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
865
866config HARDLOCKUP_DETECTOR_PERF
867 bool
868 select SOFTLOCKUP_DETECTOR
869
870#
871# Enables a timestamp based low pass filter to compensate for perf based
872# hard lockup detection which runs too fast due to turbo modes.
873#
874config HARDLOCKUP_CHECK_TIMESTAMP
875 bool
876
877#
878# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
879# lockup detector rather than the perf based detector.
880#
881config HARDLOCKUP_DETECTOR
882 bool "Detect Hard Lockups"
883 depends on DEBUG_KERNEL && !S390
884 depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH
885 select LOCKUP_DETECTOR
886 select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
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
896config 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
907config 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
914config 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
929config 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
945config 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
961config 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
968config 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
979endmenu # "Debug lockups and hangs"
980
981config 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
994config 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
1000config 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
1009config 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
1018config SCHED_INFO
1019 bool
1020 default n
1021
1022config 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
1035config 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
1047config 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
1060config 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
1070menu "Lock Debugging (spinlocks, mutexes, etc...)"
1071
1072config LOCK_DEBUGGING_SUPPORT
1073 bool
1074 depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1075 default y
1076
1077config 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
1123config 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
1145config 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
1152config 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
1162config 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
1169config 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
1186config 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
1193config 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
1208config 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
1216config LOCKDEP_SMALL
1217 bool
1218
1219config 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
1227config 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
1238config 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
1249config 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
1263config 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
1275endmenu # lock debugging
1276
1277config TRACE_IRQFLAGS
1278 bool
1279 help
1280 Enables hooks to interrupt enabling and disabling for
1281 either tracing or lock debugging.
1282
1283config 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
1292config 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 this option is disabled.
1312
1313 Say Y here if you want to receive warnings for all uses of
1314 unseeded randomness. This will be of use primarily for
1315 those developers interested in improving the security of
1316 Linux kernels running on their architecture (or
1317 subarchitecture).
1318
1319config DEBUG_KOBJECT
1320 bool "kobject debugging"
1321 depends on DEBUG_KERNEL
1322 help
1323 If you say Y here, some extra kobject debugging messages will be sent
1324 to the syslog.
1325
1326config DEBUG_KOBJECT_RELEASE
1327 bool "kobject release debugging"
1328 depends on DEBUG_OBJECTS_TIMERS
1329 help
1330 kobjects are reference counted objects. This means that their
1331 last reference count put is not predictable, and the kobject can
1332 live on past the point at which a driver decides to drop it's
1333 initial reference to the kobject gained on allocation. An
1334 example of this would be a struct device which has just been
1335 unregistered.
1336
1337 However, some buggy drivers assume that after such an operation,
1338 the memory backing the kobject can be immediately freed. This
1339 goes completely against the principles of a refcounted object.
1340
1341 If you say Y here, the kernel will delay the release of kobjects
1342 on the last reference count to improve the visibility of this
1343 kind of kobject release bug.
1344
1345config HAVE_DEBUG_BUGVERBOSE
1346 bool
1347
1348config DEBUG_BUGVERBOSE
1349 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
1350 depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
1351 default y
1352 help
1353 Say Y here to make BUG() panics output the file name and line number
1354 of the BUG call as well as the EIP and oops trace. This aids
1355 debugging but costs about 70-100K of memory.
1356
1357config DEBUG_LIST
1358 bool "Debug linked list manipulation"
1359 depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
1360 help
1361 Enable this to turn on extended checks in the linked-list
1362 walking routines.
1363
1364 If unsure, say N.
1365
1366config DEBUG_PLIST
1367 bool "Debug priority linked list manipulation"
1368 depends on DEBUG_KERNEL
1369 help
1370 Enable this to turn on extended checks in the priority-ordered
1371 linked-list (plist) walking routines. This checks the entire
1372 list multiple times during each manipulation.
1373
1374 If unsure, say N.
1375
1376config DEBUG_SG
1377 bool "Debug SG table operations"
1378 depends on DEBUG_KERNEL
1379 help
1380 Enable this to turn on checks on scatter-gather tables. This can
1381 help find problems with drivers that do not properly initialize
1382 their sg tables.
1383
1384 If unsure, say N.
1385
1386config DEBUG_NOTIFIERS
1387 bool "Debug notifier call chains"
1388 depends on DEBUG_KERNEL
1389 help
1390 Enable this to turn on sanity checking for notifier call chains.
1391 This is most useful for kernel developers to make sure that
1392 modules properly unregister themselves from notifier chains.
1393 This is a relatively cheap check but if you care about maximum
1394 performance, say N.
1395
1396config DEBUG_CREDENTIALS
1397 bool "Debug credential management"
1398 depends on DEBUG_KERNEL
1399 help
1400 Enable this to turn on some debug checking for credential
1401 management. The additional code keeps track of the number of
1402 pointers from task_structs to any given cred struct, and checks to
1403 see that this number never exceeds the usage count of the cred
1404 struct.
1405
1406 Furthermore, if SELinux is enabled, this also checks that the
1407 security pointer in the cred struct is never seen to be invalid.
1408
1409 If unsure, say N.
1410
1411source "kernel/rcu/Kconfig.debug"
1412
1413config DEBUG_WQ_FORCE_RR_CPU
1414 bool "Force round-robin CPU selection for unbound work items"
1415 depends on DEBUG_KERNEL
1416 default n
1417 help
1418 Workqueue used to implicitly guarantee that work items queued
1419 without explicit CPU specified are put on the local CPU. This
1420 guarantee is no longer true and while local CPU is still
1421 preferred work items may be put on foreign CPUs. Kernel
1422 parameter "workqueue.debug_force_rr_cpu" is added to force
1423 round-robin CPU selection to flush out usages which depend on the
1424 now broken guarantee. This config option enables the debug
1425 feature by default. When enabled, memory and cache locality will
1426 be impacted.
1427
1428config DEBUG_BLOCK_EXT_DEVT
1429 bool "Force extended block device numbers and spread them"
1430 depends on DEBUG_KERNEL
1431 depends on BLOCK
1432 default n
1433 help
1434 BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1435 SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1436 YOU ARE DOING. Distros, please enable this and fix whatever
1437 is broken.
1438
1439 Conventionally, block device numbers are allocated from
1440 predetermined contiguous area. However, extended block area
1441 may introduce non-contiguous block device numbers. This
1442 option forces most block device numbers to be allocated from
1443 the extended space and spreads them to discover kernel or
1444 userland code paths which assume predetermined contiguous
1445 device number allocation.
1446
1447 Note that turning on this debug option shuffles all the
1448 device numbers for all IDE and SCSI devices including libata
1449 ones, so root partition specified using device number
1450 directly (via rdev or root=MAJ:MIN) won't work anymore.
1451 Textual device names (root=/dev/sdXn) will continue to work.
1452
1453 Say N if you are unsure.
1454
1455config CPU_HOTPLUG_STATE_CONTROL
1456 bool "Enable CPU hotplug state control"
1457 depends on DEBUG_KERNEL
1458 depends on HOTPLUG_CPU
1459 default n
1460 help
1461 Allows to write steps between "offline" and "online" to the CPUs
1462 sysfs target file so states can be stepped granular. This is a debug
1463 option for now as the hotplug machinery cannot be stopped and
1464 restarted at arbitrary points yet.
1465
1466 Say N if your are unsure.
1467
1468config NOTIFIER_ERROR_INJECTION
1469 tristate "Notifier error injection"
1470 depends on DEBUG_KERNEL
1471 select DEBUG_FS
1472 help
1473 This option provides the ability to inject artificial errors to
1474 specified notifier chain callbacks. It is useful to test the error
1475 handling of notifier call chain failures.
1476
1477 Say N if unsure.
1478
1479config PM_NOTIFIER_ERROR_INJECT
1480 tristate "PM notifier error injection module"
1481 depends on PM && NOTIFIER_ERROR_INJECTION
1482 default m if PM_DEBUG
1483 help
1484 This option provides the ability to inject artificial errors to
1485 PM notifier chain callbacks. It is controlled through debugfs
1486 interface /sys/kernel/debug/notifier-error-inject/pm
1487
1488 If the notifier call chain should be failed with some events
1489 notified, write the error code to "actions/<notifier event>/error".
1490
1491 Example: Inject PM suspend error (-12 = -ENOMEM)
1492
1493 # cd /sys/kernel/debug/notifier-error-inject/pm/
1494 # echo -12 > actions/PM_SUSPEND_PREPARE/error
1495 # echo mem > /sys/power/state
1496 bash: echo: write error: Cannot allocate memory
1497
1498 To compile this code as a module, choose M here: the module will
1499 be called pm-notifier-error-inject.
1500
1501 If unsure, say N.
1502
1503config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1504 tristate "OF reconfig notifier error injection module"
1505 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
1506 help
1507 This option provides the ability to inject artificial errors to
1508 OF reconfig notifier chain callbacks. It is controlled
1509 through debugfs interface under
1510 /sys/kernel/debug/notifier-error-inject/OF-reconfig/
1511
1512 If the notifier call chain should be failed with some events
1513 notified, write the error code to "actions/<notifier event>/error".
1514
1515 To compile this code as a module, choose M here: the module will
1516 be called of-reconfig-notifier-error-inject.
1517
1518 If unsure, say N.
1519
1520config NETDEV_NOTIFIER_ERROR_INJECT
1521 tristate "Netdev notifier error injection module"
1522 depends on NET && NOTIFIER_ERROR_INJECTION
1523 help
1524 This option provides the ability to inject artificial errors to
1525 netdevice notifier chain callbacks. It is controlled through debugfs
1526 interface /sys/kernel/debug/notifier-error-inject/netdev
1527
1528 If the notifier call chain should be failed with some events
1529 notified, write the error code to "actions/<notifier event>/error".
1530
1531 Example: Inject netdevice mtu change error (-22 = -EINVAL)
1532
1533 # cd /sys/kernel/debug/notifier-error-inject/netdev
1534 # echo -22 > actions/NETDEV_CHANGEMTU/error
1535 # ip link set eth0 mtu 1024
1536 RTNETLINK answers: Invalid argument
1537
1538 To compile this code as a module, choose M here: the module will
1539 be called netdev-notifier-error-inject.
1540
1541 If unsure, say N.
1542
1543config FUNCTION_ERROR_INJECTION
1544 bool "Fault-injections of functions"
1545 depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1546 help
1547 Add fault injections into various functions that are annotated with
1548 ALLOW_ERROR_INJECTION() in the kernel. BPF may also modify the return
1549 value of theses functions. This is useful to test error paths of code.
1550
1551 If unsure, say N
1552
1553config FAULT_INJECTION
1554 bool "Fault-injection framework"
1555 depends on DEBUG_KERNEL
1556 help
1557 Provide fault-injection framework.
1558 For more details, see Documentation/fault-injection/.
1559
1560config FAILSLAB
1561 bool "Fault-injection capability for kmalloc"
1562 depends on FAULT_INJECTION
1563 depends on SLAB || SLUB
1564 help
1565 Provide fault-injection capability for kmalloc.
1566
1567config FAIL_PAGE_ALLOC
1568 bool "Fault-injection capabilitiy for alloc_pages()"
1569 depends on FAULT_INJECTION
1570 help
1571 Provide fault-injection capability for alloc_pages().
1572
1573config FAIL_MAKE_REQUEST
1574 bool "Fault-injection capability for disk IO"
1575 depends on FAULT_INJECTION && BLOCK
1576 help
1577 Provide fault-injection capability for disk IO.
1578
1579config FAIL_IO_TIMEOUT
1580 bool "Fault-injection capability for faking disk interrupts"
1581 depends on FAULT_INJECTION && BLOCK
1582 help
1583 Provide fault-injection capability on end IO handling. This
1584 will make the block layer "forget" an interrupt as configured,
1585 thus exercising the error handling.
1586
1587 Only works with drivers that use the generic timeout handling,
1588 for others it wont do anything.
1589
1590config FAIL_FUTEX
1591 bool "Fault-injection capability for futexes"
1592 select DEBUG_FS
1593 depends on FAULT_INJECTION && FUTEX
1594 help
1595 Provide fault-injection capability for futexes.
1596
1597config FAULT_INJECTION_DEBUG_FS
1598 bool "Debugfs entries for fault-injection capabilities"
1599 depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1600 help
1601 Enable configuration of fault-injection capabilities via debugfs.
1602
1603config FAIL_FUNCTION
1604 bool "Fault-injection capability for functions"
1605 depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1606 help
1607 Provide function-based fault-injection capability.
1608 This will allow you to override a specific function with a return
1609 with given return value. As a result, function caller will see
1610 an error value and have to handle it. This is useful to test the
1611 error handling in various subsystems.
1612
1613config FAIL_MMC_REQUEST
1614 bool "Fault-injection capability for MMC IO"
1615 depends on FAULT_INJECTION_DEBUG_FS && MMC
1616 help
1617 Provide fault-injection capability for MMC IO.
1618 This will make the mmc core return data errors. This is
1619 useful to test the error handling in the mmc block device
1620 and to test how the mmc host driver handles retries from
1621 the block device.
1622
1623config FAULT_INJECTION_STACKTRACE_FILTER
1624 bool "stacktrace filter for fault-injection capabilities"
1625 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
1626 depends on !X86_64
1627 select STACKTRACE
1628 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1629 help
1630 Provide stacktrace filter for fault-injection capabilities
1631
1632config LATENCYTOP
1633 bool "Latency measuring infrastructure"
1634 depends on DEBUG_KERNEL
1635 depends on STACKTRACE_SUPPORT
1636 depends on PROC_FS
1637 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1638 select KALLSYMS
1639 select KALLSYMS_ALL
1640 select STACKTRACE
1641 select SCHEDSTATS
1642 select SCHED_DEBUG
1643 help
1644 Enable this option if you want to use the LatencyTOP tool
1645 to find out which userspace is blocking on what kernel operations.
1646
1647source "kernel/trace/Kconfig"
1648
1649config PROVIDE_OHCI1394_DMA_INIT
1650 bool "Remote debugging over FireWire early on boot"
1651 depends on PCI && X86
1652 help
1653 If you want to debug problems which hang or crash the kernel early
1654 on boot and the crashing machine has a FireWire port, you can use
1655 this feature to remotely access the memory of the crashed machine
1656 over FireWire. This employs remote DMA as part of the OHCI1394
1657 specification which is now the standard for FireWire controllers.
1658
1659 With remote DMA, you can monitor the printk buffer remotely using
1660 firescope and access all memory below 4GB using fireproxy from gdb.
1661 Even controlling a kernel debugger is possible using remote DMA.
1662
1663 Usage:
1664
1665 If ohci1394_dma=early is used as boot parameter, it will initialize
1666 all OHCI1394 controllers which are found in the PCI config space.
1667
1668 As all changes to the FireWire bus such as enabling and disabling
1669 devices cause a bus reset and thereby disable remote DMA for all
1670 devices, be sure to have the cable plugged and FireWire enabled on
1671 the debugging host before booting the debug target for debugging.
1672
1673 This code (~1k) is freed after boot. By then, the firewire stack
1674 in charge of the OHCI-1394 controllers should be used instead.
1675
1676 See Documentation/debugging-via-ohci1394.txt for more information.
1677
1678source "lib/kunit/Kconfig"
1679
1680menuconfig RUNTIME_TESTING_MENU
1681 bool "Runtime Testing"
1682 def_bool y
1683
1684if RUNTIME_TESTING_MENU
1685
1686config LKDTM
1687 tristate "Linux Kernel Dump Test Tool Module"
1688 depends on DEBUG_FS
1689 help
1690 This module enables testing of the different dumping mechanisms by
1691 inducing system failures at predefined crash points.
1692 If you don't need it: say N
1693 Choose M here to compile this code as a module. The module will be
1694 called lkdtm.
1695
1696 Documentation on how to use the module can be found in
1697 Documentation/fault-injection/provoke-crashes.rst
1698
1699config TEST_LIST_SORT
1700 tristate "Linked list sorting test"
1701 depends on DEBUG_KERNEL || m
1702 help
1703 Enable this to turn on 'list_sort()' function test. This test is
1704 executed only once during system boot (so affects only boot time),
1705 or at module load time.
1706
1707 If unsure, say N.
1708
1709config TEST_SORT
1710 tristate "Array-based sort test"
1711 depends on DEBUG_KERNEL || m
1712 help
1713 This option enables the self-test function of 'sort()' at boot,
1714 or at module load time.
1715
1716 If unsure, say N.
1717
1718config KPROBES_SANITY_TEST
1719 bool "Kprobes sanity tests"
1720 depends on DEBUG_KERNEL
1721 depends on KPROBES
1722 help
1723 This option provides for testing basic kprobes functionality on
1724 boot. Samples of kprobe and kretprobe are inserted and
1725 verified for functionality.
1726
1727 Say N if you are unsure.
1728
1729config BACKTRACE_SELF_TEST
1730 tristate "Self test for the backtrace code"
1731 depends on DEBUG_KERNEL
1732 help
1733 This option provides a kernel module that can be used to test
1734 the kernel stack backtrace code. This option is not useful
1735 for distributions or general kernels, but only for kernel
1736 developers working on architecture code.
1737
1738 Note that if you want to also test saved backtraces, you will
1739 have to enable STACKTRACE as well.
1740
1741 Say N if you are unsure.
1742
1743config RBTREE_TEST
1744 tristate "Red-Black tree test"
1745 depends on DEBUG_KERNEL
1746 help
1747 A benchmark measuring the performance of the rbtree library.
1748 Also includes rbtree invariant checks.
1749
1750config REED_SOLOMON_TEST
1751 tristate "Reed-Solomon library test"
1752 depends on DEBUG_KERNEL || m
1753 select REED_SOLOMON
1754 select REED_SOLOMON_ENC16
1755 select REED_SOLOMON_DEC16
1756 help
1757 This option enables the self-test function of rslib at boot,
1758 or at module load time.
1759
1760 If unsure, say N.
1761
1762config INTERVAL_TREE_TEST
1763 tristate "Interval tree test"
1764 depends on DEBUG_KERNEL
1765 select INTERVAL_TREE
1766 help
1767 A benchmark measuring the performance of the interval tree library
1768
1769config PERCPU_TEST
1770 tristate "Per cpu operations test"
1771 depends on m && DEBUG_KERNEL
1772 help
1773 Enable this option to build test module which validates per-cpu
1774 operations.
1775
1776 If unsure, say N.
1777
1778config ATOMIC64_SELFTEST
1779 tristate "Perform an atomic64_t self-test"
1780 help
1781 Enable this option to test the atomic64_t functions at boot or
1782 at module load time.
1783
1784 If unsure, say N.
1785
1786config ASYNC_RAID6_TEST
1787 tristate "Self test for hardware accelerated raid6 recovery"
1788 depends on ASYNC_RAID6_RECOV
1789 select ASYNC_MEMCPY
1790 ---help---
1791 This is a one-shot self test that permutes through the
1792 recovery of all the possible two disk failure scenarios for a
1793 N-disk array. Recovery is performed with the asynchronous
1794 raid6 recovery routines, and will optionally use an offload
1795 engine if one is available.
1796
1797 If unsure, say N.
1798
1799config TEST_HEXDUMP
1800 tristate "Test functions located in the hexdump module at runtime"
1801
1802config TEST_STRING_HELPERS
1803 tristate "Test functions located in the string_helpers module at runtime"
1804
1805config TEST_STRSCPY
1806 tristate "Test strscpy*() family of functions at runtime"
1807
1808config TEST_KSTRTOX
1809 tristate "Test kstrto*() family of functions at runtime"
1810
1811config TEST_PRINTF
1812 tristate "Test printf() family of functions at runtime"
1813
1814config TEST_BITMAP
1815 tristate "Test bitmap_*() family of functions at runtime"
1816 help
1817 Enable this option to test the bitmap functions at boot.
1818
1819 If unsure, say N.
1820
1821config TEST_BITFIELD
1822 tristate "Test bitfield functions at runtime"
1823 help
1824 Enable this option to test the bitfield functions at boot.
1825
1826 If unsure, say N.
1827
1828config TEST_UUID
1829 tristate "Test functions located in the uuid module at runtime"
1830
1831config TEST_XARRAY
1832 tristate "Test the XArray code at runtime"
1833
1834config TEST_OVERFLOW
1835 tristate "Test check_*_overflow() functions at runtime"
1836
1837config TEST_RHASHTABLE
1838 tristate "Perform selftest on resizable hash table"
1839 help
1840 Enable this option to test the rhashtable functions at boot.
1841
1842 If unsure, say N.
1843
1844config TEST_HASH
1845 tristate "Perform selftest on hash functions"
1846 help
1847 Enable this option to test the kernel's integer (<linux/hash.h>),
1848 string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1849 hash functions on boot (or module load).
1850
1851 This is intended to help people writing architecture-specific
1852 optimized versions. If unsure, say N.
1853
1854config TEST_IDA
1855 tristate "Perform selftest on IDA functions"
1856
1857config TEST_PARMAN
1858 tristate "Perform selftest on priority array manager"
1859 depends on PARMAN
1860 help
1861 Enable this option to test priority array manager on boot
1862 (or module load).
1863
1864 If unsure, say N.
1865
1866config TEST_IRQ_TIMINGS
1867 bool "IRQ timings selftest"
1868 depends on IRQ_TIMINGS
1869 help
1870 Enable this option to test the irq timings code on boot.
1871
1872 If unsure, say N.
1873
1874config TEST_LKM
1875 tristate "Test module loading with 'hello world' module"
1876 depends on m
1877 help
1878 This builds the "test_module" module that emits "Hello, world"
1879 on printk when loaded. It is designed to be used for basic
1880 evaluation of the module loading subsystem (for example when
1881 validating module verification). It lacks any extra dependencies,
1882 and will not normally be loaded by the system unless explicitly
1883 requested by name.
1884
1885 If unsure, say N.
1886
1887config TEST_VMALLOC
1888 tristate "Test module for stress/performance analysis of vmalloc allocator"
1889 default n
1890 depends on MMU
1891 depends on m
1892 help
1893 This builds the "test_vmalloc" module that should be used for
1894 stress and performance analysis. So, any new change for vmalloc
1895 subsystem can be evaluated from performance and stability point
1896 of view.
1897
1898 If unsure, say N.
1899
1900config TEST_USER_COPY
1901 tristate "Test user/kernel boundary protections"
1902 depends on m
1903 help
1904 This builds the "test_user_copy" module that runs sanity checks
1905 on the copy_to/from_user infrastructure, making sure basic
1906 user/kernel boundary testing is working. If it fails to load,
1907 a regression has been detected in the user/kernel memory boundary
1908 protections.
1909
1910 If unsure, say N.
1911
1912config TEST_BPF
1913 tristate "Test BPF filter functionality"
1914 depends on m && NET
1915 help
1916 This builds the "test_bpf" module that runs various test vectors
1917 against the BPF interpreter or BPF JIT compiler depending on the
1918 current setting. This is in particular useful for BPF JIT compiler
1919 development, but also to run regression tests against changes in
1920 the interpreter code. It also enables test stubs for eBPF maps and
1921 verifier used by user space verifier testsuite.
1922
1923 If unsure, say N.
1924
1925config TEST_BLACKHOLE_DEV
1926 tristate "Test blackhole netdev functionality"
1927 depends on m && NET
1928 help
1929 This builds the "test_blackhole_dev" module that validates the
1930 data path through this blackhole netdev.
1931
1932 If unsure, say N.
1933
1934config FIND_BIT_BENCHMARK
1935 tristate "Test find_bit functions"
1936 help
1937 This builds the "test_find_bit" module that measure find_*_bit()
1938 functions performance.
1939
1940 If unsure, say N.
1941
1942config TEST_FIRMWARE
1943 tristate "Test firmware loading via userspace interface"
1944 depends on FW_LOADER
1945 help
1946 This builds the "test_firmware" module that creates a userspace
1947 interface for testing firmware loading. This can be used to
1948 control the triggering of firmware loading without needing an
1949 actual firmware-using device. The contents can be rechecked by
1950 userspace.
1951
1952 If unsure, say N.
1953
1954config TEST_SYSCTL
1955 tristate "sysctl test driver"
1956 depends on PROC_SYSCTL
1957 help
1958 This builds the "test_sysctl" module. This driver enables to test the
1959 proc sysctl interfaces available to drivers safely without affecting
1960 production knobs which might alter system functionality.
1961
1962 If unsure, say N.
1963
1964config SYSCTL_KUNIT_TEST
1965 tristate "KUnit test for sysctl"
1966 depends on KUNIT
1967 help
1968 This builds the proc sysctl unit test, which runs on boot.
1969 Tests the API contract and implementation correctness of sysctl.
1970 For more information on KUnit and unit tests in general please refer
1971 to the KUnit documentation in Documentation/dev-tools/kunit/.
1972
1973 If unsure, say N.
1974
1975config LIST_KUNIT_TEST
1976 tristate "KUnit Test for Kernel Linked-list structures"
1977 depends on KUNIT
1978 help
1979 This builds the linked list KUnit test suite.
1980 It tests that the API and basic functionality of the list_head type
1981 and associated macros.
1982
1983 KUnit tests run during boot and output the results to the debug log
1984 in TAP format (http://testanything.org/). Only useful for kernel devs
1985 running the KUnit test harness, and not intended for inclusion into a
1986 production build.
1987
1988 For more information on KUnit and unit tests in general please refer
1989 to the KUnit documentation in Documentation/dev-tools/kunit/.
1990
1991 If unsure, say N.
1992
1993config TEST_UDELAY
1994 tristate "udelay test driver"
1995 help
1996 This builds the "udelay_test" module that helps to make sure
1997 that udelay() is working properly.
1998
1999 If unsure, say N.
2000
2001config TEST_STATIC_KEYS
2002 tristate "Test static keys"
2003 depends on m
2004 help
2005 Test the static key interfaces.
2006
2007 If unsure, say N.
2008
2009config TEST_KMOD
2010 tristate "kmod stress tester"
2011 depends on m
2012 depends on NETDEVICES && NET_CORE && INET # for TUN
2013 depends on BLOCK
2014 select TEST_LKM
2015 select XFS_FS
2016 select TUN
2017 select BTRFS_FS
2018 help
2019 Test the kernel's module loading mechanism: kmod. kmod implements
2020 support to load modules using the Linux kernel's usermode helper.
2021 This test provides a series of tests against kmod.
2022
2023 Although technically you can either build test_kmod as a module or
2024 into the kernel we disallow building it into the kernel since
2025 it stress tests request_module() and this will very likely cause
2026 some issues by taking over precious threads available from other
2027 module load requests, ultimately this could be fatal.
2028
2029 To run tests run:
2030
2031 tools/testing/selftests/kmod/kmod.sh --help
2032
2033 If unsure, say N.
2034
2035config TEST_DEBUG_VIRTUAL
2036 tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2037 depends on DEBUG_VIRTUAL
2038 help
2039 Test the kernel's ability to detect incorrect calls to
2040 virt_to_phys() done against the non-linear part of the
2041 kernel's virtual address map.
2042
2043 If unsure, say N.
2044
2045config TEST_MEMCAT_P
2046 tristate "Test memcat_p() helper function"
2047 help
2048 Test the memcat_p() helper for correctly merging two
2049 pointer arrays together.
2050
2051 If unsure, say N.
2052
2053config TEST_LIVEPATCH
2054 tristate "Test livepatching"
2055 default n
2056 depends on DYNAMIC_DEBUG
2057 depends on LIVEPATCH
2058 depends on m
2059 help
2060 Test kernel livepatching features for correctness. The tests will
2061 load test modules that will be livepatched in various scenarios.
2062
2063 To run all the livepatching tests:
2064
2065 make -C tools/testing/selftests TARGETS=livepatch run_tests
2066
2067 Alternatively, individual tests may be invoked:
2068
2069 tools/testing/selftests/livepatch/test-callbacks.sh
2070 tools/testing/selftests/livepatch/test-livepatch.sh
2071 tools/testing/selftests/livepatch/test-shadow-vars.sh
2072
2073 If unsure, say N.
2074
2075config TEST_OBJAGG
2076 tristate "Perform selftest on object aggreration manager"
2077 default n
2078 depends on OBJAGG
2079 help
2080 Enable this option to test object aggregation manager on boot
2081 (or module load).
2082
2083
2084config TEST_STACKINIT
2085 tristate "Test level of stack variable initialization"
2086 help
2087 Test if the kernel is zero-initializing stack variables and
2088 padding. Coverage is controlled by compiler flags,
2089 CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2090 or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2091
2092 If unsure, say N.
2093
2094config TEST_MEMINIT
2095 tristate "Test heap/page initialization"
2096 help
2097 Test if the kernel is zero-initializing heap and page allocations.
2098 This can be useful to test init_on_alloc and init_on_free features.
2099
2100 If unsure, say N.
2101
2102endif # RUNTIME_TESTING_MENU
2103
2104config MEMTEST
2105 bool "Memtest"
2106 ---help---
2107 This option adds a kernel parameter 'memtest', which allows memtest
2108 to be set.
2109 memtest=0, mean disabled; -- default
2110 memtest=1, mean do 1 test pattern;
2111 ...
2112 memtest=17, mean do 17 test patterns.
2113 If you are unsure how to answer this question, answer N.
2114
2115config BUG_ON_DATA_CORRUPTION
2116 bool "Trigger a BUG when data corruption is detected"
2117 select DEBUG_LIST
2118 help
2119 Select this option if the kernel should BUG when it encounters
2120 data corruption in kernel memory structures when they get checked
2121 for validity.
2122
2123 If unsure, say N.
2124
2125source "samples/Kconfig"
2126
2127source "lib/Kconfig.kgdb"
2128
2129source "lib/Kconfig.ubsan"
2130
2131config ARCH_HAS_DEVMEM_IS_ALLOWED
2132 bool
2133
2134config STRICT_DEVMEM
2135 bool "Filter access to /dev/mem"
2136 depends on MMU && DEVMEM
2137 depends on ARCH_HAS_DEVMEM_IS_ALLOWED
2138 default y if PPC || X86 || ARM64
2139 ---help---
2140 If this option is disabled, you allow userspace (root) access to all
2141 of memory, including kernel and userspace memory. Accidental
2142 access to this is obviously disastrous, but specific access can
2143 be used by people debugging the kernel. Note that with PAT support
2144 enabled, even in this case there are restrictions on /dev/mem
2145 use due to the cache aliasing requirements.
2146
2147 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
2148 file only allows userspace access to PCI space and the BIOS code and
2149 data regions. This is sufficient for dosemu and X and all common
2150 users of /dev/mem.
2151
2152 If in doubt, say Y.
2153
2154config IO_STRICT_DEVMEM
2155 bool "Filter I/O access to /dev/mem"
2156 depends on STRICT_DEVMEM
2157 ---help---
2158 If this option is disabled, you allow userspace (root) access to all
2159 io-memory regardless of whether a driver is actively using that
2160 range. Accidental access to this is obviously disastrous, but
2161 specific access can be used by people debugging kernel drivers.
2162
2163 If this option is switched on, the /dev/mem file only allows
2164 userspace access to *idle* io-memory ranges (see /proc/iomem) This
2165 may break traditional users of /dev/mem (dosemu, legacy X, etc...)
2166 if the driver using a given range cannot be disabled.
2167
2168 If in doubt, say Y.
2169
2170source "arch/$(SRCARCH)/Kconfig.debug"
2171
2172endmenu # Kernel hacking