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