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