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