blob: be80cfebffd6ca4afbdabf09ccde73d7adfe4906 [file] [log] [blame]
Dave Hansen604ff0d2013-07-01 13:04:49 -07001menu "printk and dmesg options"
Linus Torvalds1da177e2005-04-16 15:20:36 -07002
3config PRINTK_TIME
4 bool "Show timing information on printks"
Randy Dunlapd3b8b6e2006-12-06 20:36:38 -08005 depends on PRINTK
Linus Torvalds1da177e2005-04-16 15:20:36 -07006 help
Kay Sievers649e6ee2012-05-10 04:30:45 +02007 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
Linus Torvalds1da177e2005-04-16 15:20:36 -070017
Alex Elder42a9dc02014-08-06 16:09:01 -070018config MESSAGE_LOGLEVEL_DEFAULT
Mandeep Singh Baines5af5bcb2011-03-22 16:34:23 -070019 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
Dave Hansen604ff0d2013-07-01 13:04:49 -070029config 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
Mukesh Ojha8ab49562018-06-22 16:59:47 +0530116config DEBUG_MODULE_LOAD_INFO
117 bool "Use prints for module info under a debug flag"
118 help
119 If you say Y here the resulting kernel image will include
120 debug prints which was kept under DEBUG_MODULE_LOAD_INFO.
121 This will be used by developer to debug loadable modules in
122 the kernel.
123 Say Y here only if you plan to debug the kernel.
124
125 If unsure, say N.
126
127
Dave Hansen604ff0d2013-07-01 13:04:49 -0700128endmenu # "printk and dmesg options"
129
Dave Hansen6dfc0662013-07-01 13:04:46 -0700130menu "Compile-time checks and compiler options"
131
132config DEBUG_INFO
133 bool "Compile the kernel with debug info"
Linus Torvalds12b13832014-02-04 12:20:01 -0800134 depends on DEBUG_KERNEL && !COMPILE_TEST
Dave Hansen6dfc0662013-07-01 13:04:46 -0700135 help
136 If you say Y here the resulting kernel image will include
137 debugging info resulting in a larger kernel image.
138 This adds debug symbols to the kernel and modules (gcc -g), and
139 is needed if you intend to use kernel crashdump or binary object
140 tools like crash, kgdb, LKCD, gdb, etc on the kernel.
141 Say Y here only if you plan to debug the kernel.
142
143 If unsure, say N.
144
145config DEBUG_INFO_REDUCED
146 bool "Reduce debugging information"
147 depends on DEBUG_INFO
148 help
149 If you say Y here gcc is instructed to generate less debugging
150 information for structure types. This means that tools that
151 need full debugging information (like kgdb or systemtap) won't
152 be happy. But if you merely need debugging information to
153 resolve line numbers there is no loss. Advantage is that
154 build directory object sizes shrink dramatically over a full
155 DEBUG_INFO build and compile times are reduced too.
156 Only works with newer gcc versions.
157
Andi Kleen866ced92014-07-30 20:50:18 +0200158config DEBUG_INFO_SPLIT
159 bool "Produce split debuginfo in .dwo files"
Sudip Mukherjeed12824c2017-01-10 16:57:45 -0800160 depends on DEBUG_INFO && !FRV
Andi Kleen866ced92014-07-30 20:50:18 +0200161 help
162 Generate debug info into separate .dwo files. This significantly
163 reduces the build directory size for builds with DEBUG_INFO,
164 because it stores the information only once on disk in .dwo
165 files instead of multiple times in object files and executables.
166 In addition the debug information is also compressed.
167
168 Requires recent gcc (4.7+) and recent gdb/binutils.
169 Any tool that packages or reads debug information would need
170 to know about the .dwo files and include them.
171 Incompatible with older versions of ccache.
172
Andi Kleenbfaf2dd2014-07-30 20:50:19 +0200173config DEBUG_INFO_DWARF4
174 bool "Generate dwarf4 debuginfo"
175 depends on DEBUG_INFO
176 help
177 Generate dwarf4 debug info. This requires recent versions
178 of gcc and gdb. It makes the debug information larger.
179 But it significantly improves the success of resolving
180 variables in gdb on optimized code.
181
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800182config GDB_SCRIPTS
183 bool "Provide GDB scripts for kernel debugging"
184 depends on DEBUG_INFO
185 help
186 This creates the required links to GDB helper scripts in the
187 build directory. If you load vmlinux into gdb, the helper
188 scripts will be automatically imported by gdb as well, and
189 additional functions are available to analyze a Linux kernel
190 instance. See Documentation/gdb-kernel-debugging.txt for further
191 details.
192
Jeff Garzikde488442007-10-25 04:06:13 -0400193config ENABLE_WARN_DEPRECATED
194 bool "Enable __deprecated logic"
195 default y
196 help
197 Enable the __deprecated logic in the kernel build.
198 Disable this to suppress the "warning: 'foo' is deprecated
199 (declared at kernel/power/somefile.c:1234)" messages.
200
Andrew Mortoncebc04b2006-08-14 22:43:18 -0700201config ENABLE_MUST_CHECK
202 bool "Enable __must_check logic"
203 default y
204 help
205 Enable the __must_check logic in the kernel build. Disable this to
206 suppress the "warning: ignoring return value of 'foo', declared with
207 attribute warn_unused_result" messages.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700208
Andi Kleen35bb5b12008-02-22 15:15:03 +0100209config FRAME_WARN
210 int "Warn for stack frames larger than (needs gcc 4.4)"
211 range 0 8192
Kees Cook0e07f662016-10-27 17:46:41 -0700212 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
Andi Kleen35bb5b12008-02-22 15:15:03 +0100213 default 1024 if !64BIT
214 default 2048 if 64BIT
215 help
216 Tell gcc to warn at build time for stack frames larger than this.
217 Setting this too low will cause a lot of warnings.
218 Setting it to 0 disables the warning.
219 Requires gcc 4.4
220
Randy Dunlap99657c72009-09-18 12:49:22 -0700221config STRIP_ASM_SYMS
222 bool "Strip assembler-generated symbols during link"
223 default n
224 help
225 Strip internal assembler-generated symbols during a link (symbols
226 that look like '.Lxxx') so they don't pollute the output of
227 get_wchan() and suchlike.
228
Andi Kleen1873e872012-03-28 11:51:18 -0700229config READABLE_ASM
230 bool "Generate readable assembler code"
231 depends on DEBUG_KERNEL
232 help
233 Disable some compiler optimizations that tend to generate human unreadable
234 assembler output. This may make the kernel slightly slower, but it helps
235 to keep kernel developers who have to stare a lot at assembler listings
236 sane.
237
Arjan van de Venf71d20e2006-06-28 04:26:45 -0700238config UNUSED_SYMBOLS
239 bool "Enable unused/obsolete exported symbols"
240 default y if X86
241 help
242 Unused but exported symbols make the kernel needlessly bigger. For
243 that reason most of these unused exports will soon be removed. This
244 option is provided temporarily to provide a transition period in case
245 some external kernel module needs one of these symbols anyway. If you
246 encounter such a case in your module, consider if you are actually
247 using the right API. (rationale: since nobody in the kernel is using
248 this in a module, there is a pretty good chance it's actually the
249 wrong interface to use). If you really need the symbol, please send a
250 mail to the linux kernel mailing list mentioning the symbol and why
251 you really need it, and what the merge plan to the mainline kernel for
252 your module is.
253
Joonsoo Kim48c96a32014-12-12 16:56:01 -0800254config PAGE_OWNER
255 bool "Track page owner"
256 depends on DEBUG_KERNEL && STACKTRACE_SUPPORT
257 select DEBUG_FS
258 select STACKTRACE
Joonsoo Kimf2ca0b52016-07-26 15:23:55 -0700259 select STACKDEPOT
Joonsoo Kim48c96a32014-12-12 16:56:01 -0800260 select PAGE_EXTENSION
261 help
262 This keeps track of what call chain is the owner of a page, may
263 help to find bare alloc_page(s) leaks. Even if you include this
264 feature on your build, it is disabled in default. You should pass
265 "page_owner=on" to boot parameter in order to enable it. Eats
266 a fair amount of memory if enabled. See tools/vm/page_owner_sort.c
267 for user-space helper.
268
269 If unsure, say N.
270
Trilok Soni65cfa9f2016-04-20 18:12:51 -0700271config PAGE_OWNER_ENABLE_DEFAULT
272 bool "Enable Track page owner by default"
273 depends on PAGE_OWNER
274 ---help---
275 This keeps track of what call chain is the owner of a page, may
276 help to find bare alloc_page(s) leaks. If you include this
277 feature on your build, it is enabled by default. You should pass
278 "page_owner=off" to boot parameter in order to disable it. Eats
279 a fair amount of memory if enabled. See tools/vm/page_owner_sort.c
280 for user-space helper.
281
Don Mullisbf4735a2006-12-10 02:18:37 -0800282config DEBUG_FS
283 bool "Debug Filesystem"
Don Mullisbf4735a2006-12-10 02:18:37 -0800284 help
285 debugfs is a virtual file system that kernel developers use to put
286 debugging files into. Enable this option to be able to read and
287 write to these files.
288
Robert P. J. Dayff543332008-05-20 00:06:00 +0200289 For detailed documentation on the debugfs API, see
290 Documentation/DocBook/filesystems.
291
Don Mullisbf4735a2006-12-10 02:18:37 -0800292 If unsure, say N.
293
294config HEADERS_CHECK
295 bool "Run 'make headers_check' when building vmlinux"
296 depends on !UML
297 help
298 This option will extract the user-visible kernel headers whenever
299 building the kernel, and will run basic sanity checks on them to
300 ensure that exported files do not attempt to include files which
301 were not exported, etc.
302
303 If you're making modifications to header files which are
304 relevant for userspace, say 'Y', and check the headers
305 exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in
306 your build tree), to make sure they're suitable.
307
Sam Ravnborg91341d42008-01-21 21:31:44 +0100308config DEBUG_SECTION_MISMATCH
309 bool "Enable full Section mismatch analysis"
Sam Ravnborg91341d42008-01-21 21:31:44 +0100310 help
311 The section mismatch analysis checks if there are illegal
312 references from one section to another section.
Michael Wittene809ab02011-04-17 04:08:48 +0000313 During linktime or runtime, some sections are dropped;
314 any use of code/data previously in these sections would
Sam Ravnborg91341d42008-01-21 21:31:44 +0100315 most likely result in an oops.
Michael Wittene809ab02011-04-17 04:08:48 +0000316 In the code, functions and variables are annotated with
Paul Gortmaker0db06282013-06-19 14:53:51 -0400317 __init,, etc. (see the full list in include/linux/init.h),
Geert Uytterhoevend6fbfa42008-01-30 11:13:23 +0100318 which results in the code/data being placed in specific sections.
Michael Wittene809ab02011-04-17 04:08:48 +0000319 The section mismatch analysis is always performed after a full
320 kernel build, and enabling this option causes the following
321 additional steps to occur:
322 - Add the option -fno-inline-functions-called-once to gcc commands.
323 When inlining a function annotated with __init in a non-init
324 function, we would lose the section information and thus
Sam Ravnborg91341d42008-01-21 21:31:44 +0100325 the analysis would not catch the illegal reference.
Michael Wittene809ab02011-04-17 04:08:48 +0000326 This option tells gcc to inline less (but it does result in
327 a larger kernel).
328 - Run the section mismatch analysis for each module/built-in.o file.
329 When we run the section mismatch analysis on vmlinux.o, we
Uwe Kleine-König67797b922016-09-09 10:04:58 +0200330 lose valuable information about where the mismatch was
Sam Ravnborg91341d42008-01-21 21:31:44 +0100331 introduced.
332 Running the analysis for each module/built-in.o file
Michael Wittene809ab02011-04-17 04:08:48 +0000333 tells where the mismatch happens much closer to the
334 source. The drawback is that the same mismatch is
335 reported at least twice.
336 - Enable verbose reporting from modpost in order to help resolve
337 the section mismatches that are reported.
Sam Ravnborg91341d42008-01-21 21:31:44 +0100338
Nicolas Boichat47490ec2015-10-06 09:44:42 +1030339config SECTION_MISMATCH_WARN_ONLY
340 bool "Make section mismatch errors non-fatal"
341 default y
342 help
343 If you say N here, the build process will fail if there are any
344 section mismatch, instead of just throwing warnings.
345
346 If unsure, say Y.
347
Dave Hansen6dfc0662013-07-01 13:04:46 -0700348#
349# Select this config option from the architecture Kconfig, if it
350# is preferred to always offer frame pointers as a config
351# option on the architecture (regardless of KERNEL_DEBUG):
352#
353config ARCH_WANT_FRAME_POINTERS
354 bool
355 help
356
357config FRAME_POINTER
358 bool "Compile the kernel with frame pointers"
359 depends on DEBUG_KERNEL && \
360 (CRIS || M68K || FRV || UML || \
361 AVR32 || SUPERH || BLACKFIN || MN10300 || METAG) || \
362 ARCH_WANT_FRAME_POINTERS
363 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
364 help
365 If you say Y here the resulting kernel image will be slightly
366 larger and slower, but it gives very useful debugging information
367 in case of kernel bugs. (precise oopses/stacktraces/warnings)
368
Josh Poimboeufb9ab5ebb2016-02-28 22:22:42 -0600369config STACK_VALIDATION
370 bool "Compile-time stack metadata validation"
371 depends on HAVE_STACK_VALIDATION
372 default n
373 help
374 Add compile-time checks to validate stack metadata, including frame
375 pointers (if CONFIG_FRAME_POINTER is enabled). This helps ensure
376 that runtime stack traces are more reliable.
377
378 For more information, see
379 tools/objtool/Documentation/stack-validation.txt.
380
Dave Hansen6dfc0662013-07-01 13:04:46 -0700381config DEBUG_FORCE_WEAK_PER_CPU
382 bool "Force weak per-cpu definitions"
383 depends on DEBUG_KERNEL
384 help
385 s390 and alpha require percpu variables in modules to be
386 defined weak to work around addressing range issue which
387 puts the following two restrictions on percpu variable
388 definitions.
389
390 1. percpu symbols must be unique whether static or not
391 2. percpu variables can't be defined inside a function
392
393 To ensure that generic code follows the above rules, this
394 option forces all percpu variables to be defined as weak.
395
396endmenu # "Compiler options"
397
398config MAGIC_SYSRQ
399 bool "Magic SysRq key"
400 depends on !UML
401 help
402 If you say Y here, you will have some control over the system even
403 if the system crashes for example during kernel debugging (e.g., you
404 will be able to flush the buffer cache to disk, reboot the system
405 immediately or dump some status information). This is accomplished
406 by pressing various keys while holding SysRq (Alt+PrintScreen). It
407 also works on a serial console (on PC hardware at least), if you
408 send a BREAK and then within 5 seconds a command keypress. The
409 keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
410 unless you really know what this hack does.
411
Ben Hutchings8eaede42013-10-07 01:05:46 +0100412config MAGIC_SYSRQ_DEFAULT_ENABLE
413 hex "Enable magic SysRq key functions by default"
414 depends on MAGIC_SYSRQ
415 default 0x1
416 help
417 Specifies which SysRq key functions are enabled by default.
418 This may be set to 1 or 0 to enable or disable them all, or
419 to a bitmask as described in Documentation/sysrq.txt.
420
Adrian Bunkf346f4b2006-01-09 20:54:51 -0800421config DEBUG_KERNEL
422 bool "Kernel debugging"
423 help
424 Say Y here if you are developing drivers or trying to debug and
425 identify kernel problems.
426
Dave Hansen0610c8a2013-07-01 13:04:43 -0700427menu "Memory Debugging"
David Woodhousea304e1b2007-02-12 00:52:00 -0800428
Dave Hansen0610c8a2013-07-01 13:04:43 -0700429source mm/Kconfig.debug
Ingo Molnar82f67cd2007-02-16 01:28:13 -0800430
Thomas Gleixner3ac7fe52008-04-30 00:55:01 -0700431config DEBUG_OBJECTS
432 bool "Debug object operations"
433 depends on DEBUG_KERNEL
434 help
435 If you say Y here, additional code will be inserted into the
436 kernel to track the life time of various objects and validate
437 the operations on those objects.
438
439config DEBUG_OBJECTS_SELFTEST
440 bool "Debug objects selftest"
441 depends on DEBUG_OBJECTS
442 help
443 This enables the selftest of the object debug code.
444
445config DEBUG_OBJECTS_FREE
446 bool "Debug objects in freed memory"
447 depends on DEBUG_OBJECTS
448 help
449 This enables checks whether a k/v free operation frees an area
450 which contains an object which has not been deactivated
451 properly. This can make kmalloc/kfree-intensive workloads
452 much slower.
453
Thomas Gleixnerc6f3a972008-04-30 00:55:03 -0700454config DEBUG_OBJECTS_TIMERS
455 bool "Debug timer objects"
456 depends on DEBUG_OBJECTS
457 help
458 If you say Y here, additional code will be inserted into the
459 timer routines to track the life time of timer objects and
460 validate the timer operations.
461
Thomas Gleixnerdc186ad2009-11-16 01:09:48 +0900462config DEBUG_OBJECTS_WORK
463 bool "Debug work objects"
464 depends on DEBUG_OBJECTS
465 help
466 If you say Y here, additional code will be inserted into the
467 work queue routines to track the life time of work objects and
468 validate the work operations.
469
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400470config DEBUG_OBJECTS_RCU_HEAD
471 bool "Debug RCU callbacks objects"
Mathieu Desnoyersfc2ecf72011-02-23 09:42:14 -0800472 depends on DEBUG_OBJECTS
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400473 help
474 Enable this to turn on debugging of RCU list heads (call_rcu() usage).
475
Tejun Heoe2852ae2010-10-26 14:23:05 -0700476config DEBUG_OBJECTS_PERCPU_COUNTER
477 bool "Debug percpu counter objects"
478 depends on DEBUG_OBJECTS
479 help
480 If you say Y here, additional code will be inserted into the
481 percpu counter routines to track the life time of percpu counter
482 objects and validate the percpu counter operations.
483
Ingo Molnar3ae70202008-11-26 10:02:00 +0100484config DEBUG_OBJECTS_ENABLE_DEFAULT
485 int "debug_objects bootup default value (0-1)"
486 range 0 1
487 default "1"
488 depends on DEBUG_OBJECTS
489 help
490 Debug objects boot parameter default value
491
Linus Torvalds1da177e2005-04-16 15:20:36 -0700492config DEBUG_SLAB
Andrew Morton4a2f0ac2006-03-25 03:07:22 -0800493 bool "Debug slab memory allocations"
Vegard Nossum7d46d9e2008-04-04 00:51:41 +0200494 depends on DEBUG_KERNEL && SLAB && !KMEMCHECK
Linus Torvalds1da177e2005-04-16 15:20:36 -0700495 help
496 Say Y here to have the kernel do limited verification on memory
497 allocation as well as poisoning memory on free to catch use of freed
498 memory. This can make kmalloc/kfree-intensive workloads much slower.
499
Al Viro871751e2006-03-25 03:06:39 -0800500config DEBUG_SLAB_LEAK
501 bool "Memory leak debugging"
502 depends on DEBUG_SLAB
503
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700504config SLUB_DEBUG_ON
505 bool "SLUB debugging on by default"
Vegard Nossum7d46d9e2008-04-04 00:51:41 +0200506 depends on SLUB && SLUB_DEBUG && !KMEMCHECK
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700507 default n
508 help
509 Boot with debugging on by default. SLUB boots by default with
510 the runtime debug capabilities switched off. Enabling this is
511 equivalent to specifying the "slub_debug" parameter on boot.
512 There is no support for more fine grained debug control like
513 possible with slub_debug=xxx. SLUB debugging may be switched
514 off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
515 "slub_debug=-".
516
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800517config SLUB_STATS
518 default n
519 bool "Enable SLUB performance statistics"
Christoph Lameterab4d5ed2010-10-05 13:57:26 -0500520 depends on SLUB && SYSFS
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800521 help
522 SLUB statistics are useful to debug SLUBs allocation behavior in
523 order find ways to optimize the allocator. This should never be
524 enabled for production use since keeping statistics slows down
525 the allocator by a few percentage points. The slabinfo command
526 supports the determination of the most active slabs to figure
527 out which slabs are relevant to a particular load.
528 Try running: slabinfo -DA
529
Catalin Marinasb69ec422012-10-08 16:28:11 -0700530config HAVE_DEBUG_KMEMLEAK
531 bool
532
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100533config DEBUG_KMEMLEAK
534 bool "Kernel memory leak detector"
Kees Cook525c1f92013-01-16 18:54:16 -0800535 depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
Catalin Marinas79e0d9b2011-04-27 17:06:19 +0100536 select DEBUG_FS
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100537 select STACKTRACE if STACKTRACE_SUPPORT
538 select KALLSYMS
Randy Dunlapb60e26a2009-11-06 15:33:45 -0800539 select CRC32
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100540 help
541 Say Y here if you want to enable the memory leak
542 detector. The memory allocation/freeing is traced in a way
543 similar to the Boehm's conservative garbage collector, the
544 difference being that the orphan objects are not freed but
545 only shown in /sys/kernel/debug/kmemleak. Enabling this
546 feature will introduce an overhead to memory
547 allocations. See Documentation/kmemleak.txt for more
548 details.
549
Catalin Marinasbf96d1e2009-06-23 14:40:27 +0100550 Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
551 of finding leaks due to the slab objects poisoning.
552
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100553 In order to access the kmemleak file, debugfs needs to be
554 mounted (usually at /sys/kernel/debug).
555
Catalin Marinasa9d90582009-06-25 10:16:11 +0100556config DEBUG_KMEMLEAK_EARLY_LOG_SIZE
557 int "Maximum kmemleak early log entries"
558 depends on DEBUG_KMEMLEAK
Heiko Carstensdfcc3e62009-10-06 10:33:57 +0200559 range 200 40000
Nicolas Boichat198d33a2019-09-23 15:33:55 -0700560 default 16000
Catalin Marinasa9d90582009-06-25 10:16:11 +0100561 help
562 Kmemleak must track all the memory allocations to avoid
563 reporting false positives. Since memory may be allocated or
564 freed before kmemleak is initialised, an early log buffer is
565 used to store these actions. If kmemleak reports "early log
566 buffer exceeded", please increase this value.
567
Catalin Marinas0822ee42009-06-11 13:24:14 +0100568config DEBUG_KMEMLEAK_TEST
569 tristate "Simple test for the kernel memory leak detector"
Daniel Baluta97182692011-04-04 15:06:44 -0700570 depends on DEBUG_KMEMLEAK && m
Catalin Marinas0822ee42009-06-11 13:24:14 +0100571 help
Daniel Baluta97182692011-04-04 15:06:44 -0700572 This option enables a module that explicitly leaks memory.
Catalin Marinas0822ee42009-06-11 13:24:14 +0100573
574 If unsure, say N.
575
Jason Baronab0155a2010-07-19 11:54:17 +0100576config DEBUG_KMEMLEAK_DEFAULT_OFF
577 bool "Default kmemleak to off"
578 depends on DEBUG_KMEMLEAK
579 help
580 Say Y here to disable kmemleak by default. It can then be enabled
581 on the command line via kmemleak=on.
582
Dave Hansen0610c8a2013-07-01 13:04:43 -0700583config DEBUG_STACK_USAGE
584 bool "Stack utilization instrumentation"
Helge Deller6c31da32016-03-19 17:54:10 +0100585 depends on DEBUG_KERNEL && !IA64
Dave Hansen0610c8a2013-07-01 13:04:43 -0700586 help
587 Enables the display of the minimum amount of free stack which each
588 task has ever had available in the sysrq-T and sysrq-P debug output.
589
590 This option will slow down process creation somewhat.
591
592config DEBUG_VM
593 bool "Debug VM"
594 depends on DEBUG_KERNEL
595 help
596 Enable this to turn on extended checks in the virtual-memory system
597 that may impact performance.
598
599 If unsure, say N.
600
Davidlohr Bueso4f115142014-06-04 16:06:46 -0700601config DEBUG_VM_VMACACHE
602 bool "Debug VMA caching"
603 depends on DEBUG_VM
604 help
605 Enable this to turn on VMA caching debug information. Doing so
606 can cause significant overhead, so only enable it in non-production
607 environments.
608
609 If unsure, say N.
610
Dave Hansen0610c8a2013-07-01 13:04:43 -0700611config DEBUG_VM_RB
612 bool "Debug VM red-black trees"
613 depends on DEBUG_VM
614 help
Davidlohr Buesoa663dad2014-04-18 15:07:22 -0700615 Enable VM red-black tree debugging information and extra validations.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700616
617 If unsure, say N.
618
Kirill A. Shutemov95ad9752016-01-15 16:51:21 -0800619config DEBUG_VM_PGFLAGS
620 bool "Debug page-flags operations"
621 depends on DEBUG_VM
622 help
623 Enables extra validation on page flags operations.
624
625 If unsure, say N.
626
Dave Hansen0610c8a2013-07-01 13:04:43 -0700627config DEBUG_VIRTUAL
628 bool "Debug VM translations"
629 depends on DEBUG_KERNEL && X86
630 help
631 Enable some costly sanity checks in virtual to page code. This can
632 catch mistakes with virt_to_page() and friends.
633
634 If unsure, say N.
635
636config DEBUG_NOMMU_REGIONS
637 bool "Debug the global anon/private NOMMU mapping region tree"
638 depends on DEBUG_KERNEL && !MMU
639 help
640 This option causes the global tree of anonymous and private mapping
641 regions to be regularly checked for invalid topology.
642
643config DEBUG_MEMORY_INIT
644 bool "Debug memory initialisation" if EXPERT
645 default !EXPERT
646 help
647 Enable this for additional checks during memory initialisation.
648 The sanity checks verify aspects of the VM such as the memory model
649 and other information provided by the architecture. Verbose
650 information will be printed at KERN_DEBUG loglevel depending
651 on the mminit_loglevel= command-line option.
652
653 If unsure, say Y
654
655config MEMORY_NOTIFIER_ERROR_INJECT
656 tristate "Memory hotplug notifier error injection module"
657 depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
658 help
659 This option provides the ability to inject artificial errors to
660 memory hotplug notifier chain callbacks. It is controlled through
661 debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
662
663 If the notifier call chain should be failed with some events
664 notified, write the error code to "actions/<notifier event>/error".
665
666 Example: Inject memory hotplug offline error (-12 == -ENOMEM)
667
668 # cd /sys/kernel/debug/notifier-error-inject/memory
669 # echo -12 > actions/MEM_GOING_OFFLINE/error
670 # echo offline > /sys/devices/system/memory/memoryXXX/state
671 bash: echo: write error: Cannot allocate memory
672
673 To compile this code as a module, choose M here: the module will
674 be called memory-notifier-error-inject.
675
676 If unsure, say N.
677
678config DEBUG_PER_CPU_MAPS
679 bool "Debug access to per_cpu maps"
680 depends on DEBUG_KERNEL
681 depends on SMP
682 help
683 Say Y to verify that the per_cpu map being accessed has
684 been set up. This adds a fair amount of code to kernel memory
685 and decreases performance.
686
687 Say N if unsure.
688
689config DEBUG_HIGHMEM
690 bool "Highmem debugging"
691 depends on DEBUG_KERNEL && HIGHMEM
692 help
Geert Uytterhoevenb1357c92014-04-14 18:55:50 +0200693 This option enables additional error checking for high memory
694 systems. Disable for production systems.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700695
696config HAVE_DEBUG_STACKOVERFLOW
697 bool
698
699config DEBUG_STACKOVERFLOW
700 bool "Check for stack overflows"
701 depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
702 ---help---
703 Say Y here if you want to check for overflows of kernel, IRQ
Borislav Petkovedb0ec02015-01-25 19:50:34 +0100704 and exception stacks (if your architecture uses them). This
Dave Hansen0610c8a2013-07-01 13:04:43 -0700705 option will show detailed messages if free stack space drops
706 below a certain limit.
707
708 These kinds of bugs usually occur when call-chains in the
709 kernel get too deep, especially when interrupts are
710 involved.
711
712 Use this in cases where you see apparently random memory
713 corruption, especially if it appears in 'struct thread_info'
714
715 If in doubt, say "N".
716
717source "lib/Kconfig.kmemcheck"
718
Andrey Ryabinin0b24bec2015-02-13 14:39:17 -0800719source "lib/Kconfig.kasan"
720
Peter Zijlstrab6efcb02016-11-14 18:06:19 +0100721config DEBUG_REFCOUNT
722 bool "Verbose refcount checks"
723 help
724 Say Y here if you want reference counters (refcount_t and kref) to
725 generate WARNs on dubious usage. Without this refcount_t will still
726 be a saturating counter and avoid Use-After-Free by turning it into
727 a resource leak Denial-Of-Service.
728
729 Use of this option will increase kernel text size but will alert the
730 admin of potential abuse.
731
732 If in doubt, say "N".
733
Dave Hansen0610c8a2013-07-01 13:04:43 -0700734endmenu # "Memory Debugging"
735
Dmitry Vyukov5c9a8752016-03-22 14:27:30 -0700736config ARCH_HAS_KCOV
737 bool
738 help
739 KCOV does not have any arch-specific code, but currently it is enabled
740 only for x86_64. KCOV requires testing on other archs, and most likely
741 disabling of instrumentation for some early boot code.
742
743config KCOV
744 bool "Code coverage for fuzzing"
745 depends on ARCH_HAS_KCOV
746 select DEBUG_FS
Kees Cooka519167e2016-06-11 09:09:28 -0700747 select GCC_PLUGINS if !COMPILE_TEST
748 select GCC_PLUGIN_SANCOV if !COMPILE_TEST
Dmitry Vyukov5c9a8752016-03-22 14:27:30 -0700749 help
750 KCOV exposes kernel code coverage information in a form suitable
751 for coverage-guided fuzzing (randomized testing).
752
753 If RANDOMIZE_BASE is enabled, PC values will not be stable across
754 different machines and across reboots. If you need stable PC values,
755 disable RANDOMIZE_BASE.
756
757 For more details, see Documentation/kcov.txt.
758
Vegard Nossuma4691de2016-08-02 14:07:30 -0700759config KCOV_INSTRUMENT_ALL
760 bool "Instrument all code by default"
761 depends on KCOV
762 default y if KCOV
763 help
764 If you are doing generic system call fuzzing (like e.g. syzkaller),
765 then you will want to instrument the whole kernel and you should
766 say y here. If you are doing more targeted fuzzing (like e.g.
767 filesystem fuzzing with AFL) then you will want to enable coverage
768 for more specific subsets of files, and should say n here.
769
Linus Torvalds1da177e2005-04-16 15:20:36 -0700770config DEBUG_SHIRQ
771 bool "Debug shared IRQ handlers"
Martin Schwidefsky0244ad02013-08-30 09:39:53 +0200772 depends on DEBUG_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700773 help
774 Enable this to generate a spurious interrupt as soon as a shared
775 interrupt handler is registered, and just before one is deregistered.
776 Drivers ought to be able to handle interrupts coming in at those
777 points; some don't and need to be caught.
778
Dave Hansen92aef8fb2013-07-01 13:04:50 -0700779menu "Debug Lockups and Hangs"
780
Linus Torvalds1da177e2005-04-16 15:20:36 -0700781config LOCKUP_DETECTOR
782 bool "Detect Hard and Soft Lockups"
783 depends on DEBUG_KERNEL && !S390
784 help
785 Say Y here to enable the kernel to act as a watchdog to detect
786 hard and soft lockups.
787
788 Softlockups are bugs that cause the kernel to loop in kernel
789 mode for more than 20 seconds, without giving other tasks a
790 chance to run. The current stack trace is displayed upon
791 detection and the system will stay locked up.
792
793 Hardlockups are bugs that cause the CPU to loop in kernel mode
794 for more than 10 seconds, without letting other interrupts have a
795 chance to run. The current stack trace is displayed upon detection
796 and the system will stay locked up.
797
798 The overhead should be minimal. A periodic hrtimer runs to
799 generate interrupts and kick the watchdog task every 4 seconds.
800 An NMI is generated every 10 seconds or so to check for hardlockups.
801
802 The frequency of hrtimer and NMI events and the soft and hard lockup
803 thresholds can be controlled through the sysctl watchdog_thresh.
804
Kyle Yanbd448742017-08-21 15:10:31 -0700805config HARDLOCKUP_DETECTOR_NMI
Linus Torvalds1da177e2005-04-16 15:20:36 -0700806 def_bool y
807 depends on LOCKUP_DETECTOR && !HAVE_NMI_WATCHDOG
808 depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI
809
Kyle Yanbd448742017-08-21 15:10:31 -0700810config HARDLOCKUP_DETECTOR_OTHER_CPU
811 def_bool y
812 depends on LOCKUP_DETECTOR && SMP
813 depends on !HARDLOCKUP_DETECTOR_NMI && !HAVE_NMI_WATCHDOG
814
815config HARDLOCKUP_DETECTOR
816 def_bool y
817 depends on HARDLOCKUP_DETECTOR_NMI || HARDLOCKUP_DETECTOR_OTHER_CPU
818
Linus Torvalds1da177e2005-04-16 15:20:36 -0700819config BOOTPARAM_HARDLOCKUP_PANIC
820 bool "Panic (Reboot) On Hard Lockups"
821 depends on HARDLOCKUP_DETECTOR
822 help
823 Say Y here to enable the kernel to panic on "hard lockups",
824 which are bugs that cause the kernel to loop in kernel
825 mode with interrupts disabled for more than 10 seconds (configurable
826 using the watchdog_thresh sysctl).
827
828 Say N if unsure.
829
830config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
831 int
832 depends on HARDLOCKUP_DETECTOR
833 range 0 1
834 default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
835 default 1 if BOOTPARAM_HARDLOCKUP_PANIC
836
837config BOOTPARAM_SOFTLOCKUP_PANIC
838 bool "Panic (Reboot) On Soft Lockups"
839 depends on LOCKUP_DETECTOR
840 help
841 Say Y here to enable the kernel to panic on "soft lockups",
842 which are bugs that cause the kernel to loop in kernel
843 mode for more than 20 seconds (configurable using the watchdog_thresh
844 sysctl), without giving other tasks a chance to run.
Ingo Molnar8637c092006-07-03 00:24:38 -0700845
Linus Torvalds1da177e2005-04-16 15:20:36 -0700846 The panic can be used in combination with panic_timeout,
847 to cause the system to reboot automatically after a
848 lockup has been detected. This feature is useful for
849 high-availability systems that have uptime guarantees and
850 where a lockup must be resolved ASAP.
851
852 Say N if unsure.
Ingo Molnare7eebaf2006-06-27 02:54:55 -0700853
854config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
Ingo Molnare7eebaf2006-06-27 02:54:55 -0700855 int
856 depends on LOCKUP_DETECTOR
857 range 0 1
858 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
859 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
860
Matt Wagantall72633f82015-03-20 12:54:57 -0700861config PANIC_ON_RECURSIVE_FAULT
862 bool "Panic on recursive faults during task exit"
863 help
864 Panic upon the detection of a recursive fault during task exit,
865 rather than putting the task into an uninterruptible sleep.
866 This is particularly useful for debugging system hangs in
867 scenarios where the task experiencing the fault is critical
868 for system operation, rendering the system inoperable.
869
870 Say N if unsure.
871
Linus Torvalds1da177e2005-04-16 15:20:36 -0700872config DETECT_HUNG_TASK
873 bool "Detect Hung Tasks"
874 depends on DEBUG_KERNEL
875 default LOCKUP_DETECTOR
876 help
877 Say Y here to enable the kernel to detect "hung tasks",
878 which are bugs that cause the task to be stuck in
Vivien Didelot96b03ab2016-09-22 16:55:13 -0400879 uninterruptible "D" state indefinitely.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700880
881 When a hung task is detected, the kernel will print the
882 current stack trace (which you should report), but the
883 task will stay in uninterruptible state. If lockdep is
884 enabled then all held locks will also be reported. This
885 feature has negligible overhead.
886
887config DEFAULT_HUNG_TASK_TIMEOUT
888 int "Default timeout for hung task detection (in seconds)"
889 depends on DETECT_HUNG_TASK
890 default 120
891 help
892 This option controls the default timeout (in seconds) used
893 to determine when a task has become non-responsive and should
894 be considered hung.
Ingo Molnar408894e2006-01-09 15:59:20 -0800895
896 It can be adjusted at runtime via the kernel.hung_task_timeout_secs
897 sysctl or by writing a value to
898 /proc/sys/kernel/hung_task_timeout_secs.
899
900 A timeout of 0 disables the check. The default is two minutes.
Tim Chencca57c52006-04-18 22:21:47 -0700901 Keeping the default should be fine in most cases.
Ingo Molnar408894e2006-01-09 15:59:20 -0800902
903config BOOTPARAM_HUNG_TASK_PANIC
904 bool "Panic (Reboot) On Hung Tasks"
905 depends on DETECT_HUNG_TASK
906 help
Ingo Molnare7eebaf2006-06-27 02:54:55 -0700907 Say Y here to enable the kernel to panic on "hung tasks",
908 which are bugs that cause the kernel to leave a task stuck
909 in uninterruptible "D" state.
910
911 The panic can be used in combination with panic_timeout,
912 to cause the system to reboot automatically after a
913 hung task has been detected. This feature is useful for
914 high-availability systems that have uptime guarantees and
915 where a hung tasks must be resolved ASAP.
916
917 Say N if unsure.
918
Hugh Dickins048c8bc2006-11-01 05:44:54 +1100919config BOOTPARAM_HUNG_TASK_PANIC_VALUE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700920 int
921 depends on DETECT_HUNG_TASK
922 range 0 1
923 default 0 if !BOOTPARAM_HUNG_TASK_PANIC
924 default 1 if BOOTPARAM_HUNG_TASK_PANIC
925
Tejun Heo82607adc2015-12-08 11:28:04 -0500926config WQ_WATCHDOG
927 bool "Detect Workqueue Stalls"
928 depends on DEBUG_KERNEL
929 help
930 Say Y here to enable stall detection on workqueues. If a
931 worker pool doesn't make forward progress on a pending work
932 item for over a given amount of time, 30s by default, a
933 warning message is printed along with dump of workqueue
934 state. This can be configured through kernel parameter
935 "workqueue.watchdog_thresh" and its sysfs counterpart.
936
Dave Hansen92aef8fb2013-07-01 13:04:50 -0700937endmenu # "Debug lockups and hangs"
938
939config PANIC_ON_OOPS
940 bool "Panic on Oops"
941 help
942 Say Y here to enable the kernel to panic when it oopses. This
943 has the same effect as setting oops=panic on the kernel command
944 line.
945
946 This feature is useful to ensure that the kernel does not do
947 anything erroneous after an oops which could result in data
948 corruption or other issues.
949
950 Say N if unsure.
951
952config PANIC_ON_OOPS_VALUE
953 int
954 range 0 1
955 default 0 if !PANIC_ON_OOPS
956 default 1 if PANIC_ON_OOPS
957
Jason Baron5800dc32013-11-25 23:23:04 +0000958config PANIC_TIMEOUT
959 int "panic timeout"
960 default 0
961 help
962 Set the timeout value (in seconds) until a reboot occurs when the
963 the kernel panics. If n = 0, then we wait forever. A timeout
964 value n > 0 will wait n seconds before rebooting, while a timeout
965 value n < 0 will reboot immediately.
966
Linus Torvalds1da177e2005-04-16 15:20:36 -0700967config SCHED_DEBUG
968 bool "Collect scheduler debugging info"
969 depends on DEBUG_KERNEL && PROC_FS
970 default y
971 help
972 If you say Y here, the /proc/sched_debug file will be provided
973 that can help debug the scheduler. The runtime overhead of this
974 option is minimal.
975
Naveen N. Raof6db8342015-06-25 23:53:37 +0530976config SCHED_INFO
977 bool
978 default n
979
Syed Rameez Mustafadddcab72016-09-07 16:18:27 -0700980config PANIC_ON_SCHED_BUG
981 bool "Panic on all bugs encountered by the scheduler"
982 help
983 Say Y here to panic on all 'BUG:' conditions encountered by the
984 scheduler, even potentially-recoverable ones such as scheduling
985 while atomic, sleeping from invalid context, and detection of
986 broken arch topologies.
987
988 Say N if unsure.
989
990config PANIC_ON_RT_THROTTLING
991 bool "Panic on RT throttling"
992 help
993 Say Y here to enable the kernel to panic when a realtime
994 runqueue is throttled. This may be useful for detecting
995 and debugging RT throttling issues.
996
997 Say N if unsure.
998
Linus Torvalds1da177e2005-04-16 15:20:36 -0700999config SCHEDSTATS
1000 bool "Collect scheduler statistics"
1001 depends on DEBUG_KERNEL && PROC_FS
Naveen N. Raof6db8342015-06-25 23:53:37 +05301002 select SCHED_INFO
Linus Torvalds1da177e2005-04-16 15:20:36 -07001003 help
1004 If you say Y here, additional code will be inserted into the
1005 scheduler and related routines to collect statistics about
1006 scheduler behavior and provide them in /proc/schedstat. These
1007 stats may be useful for both tuning and debugging the scheduler
1008 If you aren't debugging the scheduler or trying to tune a specific
1009 application, you can say N to avoid the very slight overhead
1010 this adds.
1011
Aaron Tomlin0d9e2632014-09-12 14:16:19 +01001012config SCHED_STACK_END_CHECK
1013 bool "Detect stack corruption on calls to schedule()"
1014 depends on DEBUG_KERNEL
1015 default n
1016 help
1017 This option checks for a stack overrun on calls to schedule().
1018 If the stack end location is found to be over written always panic as
1019 the content of the corrupted region can no longer be trusted.
1020 This is to ensure no erroneous behaviour occurs which could result in
1021 data corruption or a sporadic crash at a later stage once the region
1022 is examined. The runtime overhead introduced is minimal.
1023
John Stultz3c17ad12015-03-11 21:16:32 -07001024config DEBUG_TIMEKEEPING
1025 bool "Enable extra timekeeping sanity checking"
1026 help
1027 This option will enable additional timekeeping sanity checks
1028 which may be helpful when diagnosing issues where timekeeping
1029 problems are suspected.
1030
1031 This may include checks in the timekeeping hotpaths, so this
1032 option may have a (very small) performance impact to some
1033 workloads.
1034
1035 If unsure, say N.
1036
Vignesh Radhakrishnand1fdabf2015-01-22 11:43:45 +05301037config DEBUG_TASK_STACK_SCAN_OFF
1038 bool "Disable kmemleak task stack scan by default"
1039 depends on DEBUG_KMEMLEAK
1040 help
1041 Say Y here to disable kmemleak task stack scan by default
1042 at compile time. It can be enabled later if required by
1043 writing to the debugfs entry :
1044 echo "stack=on" > /sys/kernel/debug/kmemleak.
1045
Linus Torvalds1da177e2005-04-16 15:20:36 -07001046config DEBUG_PREEMPT
1047 bool "Debug preemptible kernel"
Kumar Gala01deab92009-10-16 07:21:39 +00001048 depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001049 default y
1050 help
1051 If you say Y here then the kernel will use a debug variant of the
1052 commonly used smp_processor_id() function and will print warnings
1053 if kernel code uses it in a preemption-unsafe way. Also, the kernel
1054 will detect preemption count underflows.
1055
Dave Hansen9eade162013-07-01 13:04:47 -07001056menu "Lock Debugging (spinlocks, mutexes, etc...)"
1057
Ingo Molnare7eebaf2006-06-27 02:54:55 -07001058config DEBUG_RT_MUTEXES
1059 bool "RT Mutex debugging, deadlock detection"
1060 depends on DEBUG_KERNEL && RT_MUTEXES
1061 help
1062 This allows rt mutex semantics violations and rt mutex related
1063 deadlocks (lockups) to be detected and reported automatically.
1064
Linus Torvalds1da177e2005-04-16 15:20:36 -07001065config DEBUG_SPINLOCK
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001066 bool "Spinlock and rw-lock debugging: basic checks"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001067 depends on DEBUG_KERNEL
Raghavendra K Te335e3e2012-03-22 15:25:08 +05301068 select UNINLINE_SPIN_UNLOCK
Linus Torvalds1da177e2005-04-16 15:20:36 -07001069 help
1070 Say Y here and build SMP to catch missing spinlock initialization
1071 and certain other kinds of spinlock errors commonly made. This is
1072 best used in conjunction with the NMI watchdog so that spinlock
1073 deadlocks are also debuggable.
Rohit Vaswani173de7d2014-10-02 21:02:56 -07001074choice
1075 prompt "Perform Action on spinlock bug"
1076 depends on DEBUG_SPINLOCK
1077
1078 default DEBUG_SPINLOCK_BITE_ON_BUG
1079
1080 config DEBUG_SPINLOCK_BITE_ON_BUG
1081 bool "Cause a Watchdog Bite on Spinlock bug"
1082 depends on QCOM_WATCHDOG_V2
1083 help
1084 On a spinlock bug, cause a watchdog bite so that we can get
1085 the precise state of the system captured at the time of spin
1086 dump. This is mutually exclusive with the below
1087 DEBUG_SPINLOCK_PANIC_ON_BUG config.
1088
1089 config DEBUG_SPINLOCK_PANIC_ON_BUG
1090 bool "Cause a Kernel Panic on Spinlock bug"
1091 help
1092 On a spinlock bug, cause a kernel panic so that we can get the complete
1093 information about the system at the time of spin dump in the dmesg.
1094 This is mutually exclusive with the above DEBUG_SPINLOCK_BITE_ON_BUG.
1095endchoice
Linus Torvalds1da177e2005-04-16 15:20:36 -07001096
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001097config DEBUG_MUTEXES
1098 bool "Mutex debugging: basic checks"
1099 depends on DEBUG_KERNEL
1100 help
1101 This feature allows mutex semantics violations to be detected and
1102 reported.
1103
Daniel Vetter23010022013-06-20 13:31:17 +02001104config DEBUG_WW_MUTEX_SLOWPATH
1105 bool "Wait/wound mutex debugging: Slowpath testing"
1106 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1107 select DEBUG_LOCK_ALLOC
1108 select DEBUG_SPINLOCK
1109 select DEBUG_MUTEXES
1110 help
1111 This feature enables slowpath testing for w/w mutex users by
1112 injecting additional -EDEADLK wound/backoff cases. Together with
1113 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
1114 will test all possible w/w mutex interface abuse with the
1115 exception of simply not acquiring all the required locks.
Rob Clark4d692372014-08-27 11:19:26 -04001116 Note that this feature can introduce significant overhead, so
1117 it really should not be enabled in a production or distro kernel,
1118 even a debug kernel. If you are a driver writer, enable it. If
1119 you are a distro, do not.
Daniel Vetter23010022013-06-20 13:31:17 +02001120
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001121config DEBUG_LOCK_ALLOC
1122 bool "Lock debugging: detect incorrect freeing of live locks"
Adrian Bunk517e7aa2006-07-14 00:24:32 -07001123 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001124 select DEBUG_SPINLOCK
1125 select DEBUG_MUTEXES
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001126 select LOCKDEP
1127 help
1128 This feature will check whether any held lock (spinlock, rwlock,
1129 mutex or rwsem) is incorrectly freed by the kernel, via any of the
1130 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
1131 vfree(), etc.), whether a live lock is incorrectly reinitialized via
1132 spin_lock_init()/mutex_init()/etc., or whether there is any lock
1133 held during task exit.
1134
1135config PROVE_LOCKING
1136 bool "Lock debugging: prove locking correctness"
Adrian Bunk517e7aa2006-07-14 00:24:32 -07001137 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001138 select LOCKDEP
1139 select DEBUG_SPINLOCK
1140 select DEBUG_MUTEXES
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001141 select DEBUG_LOCK_ALLOC
Steven Rostedt46b93b72010-08-31 16:35:20 -04001142 select TRACE_IRQFLAGS
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001143 default n
1144 help
1145 This feature enables the kernel to prove that all locking
1146 that occurs in the kernel runtime is mathematically
1147 correct: that under no circumstance could an arbitrary (and
1148 not yet triggered) combination of observed locking
1149 sequences (on an arbitrary number of CPUs, running an
1150 arbitrary number of tasks and interrupt contexts) cause a
1151 deadlock.
1152
1153 In short, this feature enables the kernel to report locking
1154 related deadlocks before they actually occur.
1155
1156 The proof does not depend on how hard and complex a
1157 deadlock scenario would be to trigger: how many
1158 participant CPUs, tasks and irq-contexts would be needed
1159 for it to trigger. The proof also does not depend on
1160 timing: if a race and a resulting deadlock is possible
1161 theoretically (no matter how unlikely the race scenario
1162 is), it will be proven so and will immediately be
1163 reported by the kernel (once the event is observed that
1164 makes the deadlock theoretically possible).
1165
1166 If a deadlock is impossible (i.e. the locking rules, as
1167 observed by the kernel, are mathematically correct), the
1168 kernel reports nothing.
1169
1170 NOTE: this feature can also be enabled for rwlocks, mutexes
1171 and rwsems - in which case all dependencies between these
1172 different locking variants are observed and mapped too, and
1173 the proof of observed correctness is also maintained for an
1174 arbitrary combination of these separate locking variants.
1175
Davidlohr Bueso214e0ae2014-07-30 13:41:55 -07001176 For more details, see Documentation/locking/lockdep-design.txt.
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001177
Babu Mogere6b5f1b2016-11-02 09:36:32 -07001178config PROVE_LOCKING_SMALL
1179 bool
1180
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001181config LOCKDEP
1182 bool
Adrian Bunk517e7aa2006-07-14 00:24:32 -07001183 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001184 select STACKTRACE
Stefan Agnerd47e16b2018-09-30 23:02:33 +01001185 select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !SCORE
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001186 select KALLSYMS
1187 select KALLSYMS_ALL
1188
Peter Zijlstraf20786f2007-07-19 01:48:56 -07001189config LOCK_STAT
Danny ter Haarfdfb8702007-09-24 21:24:43 -07001190 bool "Lock usage statistics"
Peter Zijlstraf20786f2007-07-19 01:48:56 -07001191 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1192 select LOCKDEP
1193 select DEBUG_SPINLOCK
1194 select DEBUG_MUTEXES
1195 select DEBUG_LOCK_ALLOC
1196 default n
1197 help
1198 This feature enables tracking lock contention points
1199
Davidlohr Bueso214e0ae2014-07-30 13:41:55 -07001200 For more details, see Documentation/locking/lockstat.txt
Peter Zijlstraa560aa42007-10-07 00:24:33 -07001201
Frederic Weisbeckerdd8b1cf2010-02-27 17:10:39 +01001202 This also enables lock events required by "perf lock",
1203 subcommand of perf.
1204 If you want to use "perf lock", you also need to turn on
1205 CONFIG_EVENT_TRACING.
Hitoshi Mitake84c6f882010-02-04 16:08:15 +09001206
1207 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
Frederic Weisbeckerdd8b1cf2010-02-27 17:10:39 +01001208 (CONFIG_LOCKDEP defines "acquire" and "release" events.)
Hitoshi Mitake84c6f882010-02-04 16:08:15 +09001209
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001210config DEBUG_LOCKDEP
1211 bool "Lock dependency engine debugging"
Adrian Bunk517e7aa2006-07-14 00:24:32 -07001212 depends on DEBUG_KERNEL && LOCKDEP
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001213 help
1214 If you say Y here, the lock dependency engine will do
1215 additional runtime checks to debug itself, at the price
1216 of more runtime overhead.
1217
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001218config DEBUG_ATOMIC_SLEEP
1219 bool "Sleep inside atomic section checking"
Frederic Weisbeckere8f7c702011-06-08 01:51:02 +02001220 select PREEMPT_COUNT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001221 depends on DEBUG_KERNEL
1222 help
1223 If you say Y here, various routines which may sleep will become very
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001224 noisy if they are called inside atomic sections: when a spinlock is
1225 held, inside an rcu read side critical section, inside preempt disabled
1226 sections, inside an interrupt, etc...
Linus Torvalds1da177e2005-04-16 15:20:36 -07001227
Ingo Molnarcae2ed92006-07-03 00:24:48 -07001228config DEBUG_LOCKING_API_SELFTESTS
1229 bool "Locking API boot-time self-tests"
1230 depends on DEBUG_KERNEL
1231 help
1232 Say Y here if you want the kernel to run a short self-test during
1233 bootup. The self-test checks whether common types of locking bugs
1234 are detected by debugging mechanisms or not. (if you disable
1235 lock debugging then those bugs wont be detected of course.)
1236 The following locking APIs are covered: spinlocks, rwlocks,
1237 mutexes and rwsems.
1238
Paul E. McKenney0af3fe12014-02-04 15:51:41 -08001239config LOCK_TORTURE_TEST
1240 tristate "torture tests for locking"
1241 depends on DEBUG_KERNEL
1242 select TORTURE_TEST
1243 default n
1244 help
1245 This option provides a kernel module that runs torture tests
1246 on kernel locking primitives. The kernel module may be built
1247 after the fact on the running kernel to be tested, if desired.
1248
1249 Say Y here if you want kernel locking-primitive torture tests
1250 to be built into the kernel.
1251 Say M if you want these torture tests to build as a module.
1252 Say N if you are unsure.
1253
Dave Hansen9eade162013-07-01 13:04:47 -07001254endmenu # lock debugging
1255
1256config TRACE_IRQFLAGS
1257 bool
1258 help
1259 Enables hooks to interrupt enabling and disabling for
1260 either tracing or lock debugging.
1261
Ingo Molnar8637c092006-07-03 00:24:38 -07001262config STACKTRACE
Dave Jones0c38e1f2014-08-29 15:18:35 -07001263 bool "Stack backtrace support"
Ingo Molnar8637c092006-07-03 00:24:38 -07001264 depends on STACKTRACE_SUPPORT
Dave Jones0c38e1f2014-08-29 15:18:35 -07001265 help
1266 This option causes the kernel to create a /proc/pid/stack for
1267 every process, showing its current stack trace.
1268 It is also used by various kernel debugging features that require
1269 stack trace generation.
Ingo Molnar8637c092006-07-03 00:24:38 -07001270
Theodore Ts'o68b20d52017-06-08 04:16:59 -04001271config WARN_ALL_UNSEEDED_RANDOM
1272 bool "Warn for all uses of unseeded randomness"
1273 default n
Jason A. Donenfeld04e5bfa2017-06-07 23:06:55 -04001274 help
1275 Some parts of the kernel contain bugs relating to their use of
1276 cryptographically secure random numbers before it's actually possible
1277 to generate those numbers securely. This setting ensures that these
1278 flaws don't go unnoticed, by enabling a message, should this ever
1279 occur. This will allow people with obscure setups to know when things
1280 are going wrong, so that they might contact developers about fixing
1281 it.
1282
Theodore Ts'o68b20d52017-06-08 04:16:59 -04001283 Unfortunately, on some models of some architectures getting
1284 a fully seeded CRNG is extremely difficult, and so this can
1285 result in dmesg getting spammed for a surprisingly long
1286 time. This is really bad from a security perspective, and
1287 so architecture maintainers really need to do what they can
1288 to get the CRNG seeded sooner after the system is booted.
Jason A. Donenfeld3ea5fef2022-05-09 16:13:18 +02001289 However, since users cannot do anything actionable to
1290 address this, by default this option is disabled.
Theodore Ts'o68b20d52017-06-08 04:16:59 -04001291
1292 Say Y here if you want to receive warnings for all uses of
1293 unseeded randomness. This will be of use primarily for
1294 those developers interersted in improving the security of
1295 Linux kernels running on their architecture (or
1296 subarchitecture).
Jason A. Donenfeld04e5bfa2017-06-07 23:06:55 -04001297
Linus Torvalds1da177e2005-04-16 15:20:36 -07001298config DEBUG_KOBJECT
1299 bool "kobject debugging"
1300 depends on DEBUG_KERNEL
1301 help
1302 If you say Y here, some extra kobject debugging messages will be sent
Rohit Vaswani173de7d2014-10-02 21:02:56 -07001303 to the syslog.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001304
Russell Kingc817a672013-06-27 15:06:14 +01001305config DEBUG_KOBJECT_RELEASE
1306 bool "kobject release debugging"
Linus Torvalds2a999aa2013-10-29 08:33:36 -07001307 depends on DEBUG_OBJECTS_TIMERS
Russell Kingc817a672013-06-27 15:06:14 +01001308 help
1309 kobjects are reference counted objects. This means that their
1310 last reference count put is not predictable, and the kobject can
1311 live on past the point at which a driver decides to drop it's
1312 initial reference to the kobject gained on allocation. An
1313 example of this would be a struct device which has just been
1314 unregistered.
1315
1316 However, some buggy drivers assume that after such an operation,
1317 the memory backing the kobject can be immediately freed. This
1318 goes completely against the principles of a refcounted object.
1319
1320 If you say Y here, the kernel will delay the release of kobjects
1321 on the last reference count to improve the visibility of this
1322 kind of kobject release bug.
1323
Catalin Marinas9b2a60c2012-10-08 16:28:13 -07001324config HAVE_DEBUG_BUGVERBOSE
1325 bool
1326
Linus Torvalds1da177e2005-04-16 15:20:36 -07001327config DEBUG_BUGVERBOSE
David Rientjes6a108a12011-01-20 14:44:16 -08001328 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
Catalin Marinas9b2a60c2012-10-08 16:28:13 -07001329 depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
Alexey Dobriyan8420e7e2009-12-14 18:00:25 -08001330 default y
Linus Torvalds1da177e2005-04-16 15:20:36 -07001331 help
1332 Say Y here to make BUG() panics output the file name and line number
1333 of the BUG call as well as the EIP and oops trace. This aids
1334 debugging but costs about 70-100K of memory.
1335
Dave Jones199a9af2006-09-29 01:59:00 -07001336config DEBUG_LIST
1337 bool "Debug linked list manipulation"
1338 depends on DEBUG_KERNEL
1339 help
1340 Enable this to turn on extended checks in the linked-list
1341 walking routines.
1342
1343 If unsure, say N.
1344
Dan Streetmanb8cfff62014-06-04 16:11:54 -07001345config DEBUG_PI_LIST
1346 bool "Debug priority linked list manipulation"
1347 depends on DEBUG_KERNEL
1348 help
1349 Enable this to turn on extended checks in the priority-ordered
1350 linked-list (plist) walking routines. This checks the entire
1351 list multiple times during each manipulation.
1352
1353 If unsure, say N.
1354
Jens Axboed6ec0842007-10-22 20:01:06 +02001355config DEBUG_SG
1356 bool "Debug SG table operations"
1357 depends on DEBUG_KERNEL
1358 help
1359 Enable this to turn on checks on scatter-gather tables. This can
1360 help find problems with drivers that do not properly initialize
1361 their sg tables.
1362
1363 If unsure, say N.
1364
Arjan van de Ven1b2439d2008-08-15 15:29:38 -07001365config DEBUG_NOTIFIERS
1366 bool "Debug notifier call chains"
1367 depends on DEBUG_KERNEL
1368 help
1369 Enable this to turn on sanity checking for notifier call chains.
1370 This is most useful for kernel developers to make sure that
1371 modules properly unregister themselves from notifier chains.
1372 This is a relatively cheap check but if you care about maximum
1373 performance, say N.
1374
David Howellse0e81732009-09-02 09:13:40 +01001375config DEBUG_CREDENTIALS
1376 bool "Debug credential management"
1377 depends on DEBUG_KERNEL
1378 help
1379 Enable this to turn on some debug checking for credential
1380 management. The additional code keeps track of the number of
1381 pointers from task_structs to any given cred struct, and checks to
1382 see that this number never exceeds the usage count of the cred
1383 struct.
1384
1385 Furthermore, if SELinux is enabled, this also checks that the
1386 security pointer in the cred struct is never seen to be invalid.
1387
1388 If unsure, say N.
1389
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001390menu "RCU Debugging"
1391
1392config PROVE_RCU
Paul E. McKenney9bae6592015-01-18 18:01:21 -08001393 def_bool PROVE_LOCKING
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001394
1395config PROVE_RCU_REPEATEDLY
1396 bool "RCU debugging: don't disable PROVE_RCU on first splat"
1397 depends on PROVE_RCU
1398 default n
1399 help
1400 By itself, PROVE_RCU will disable checking upon issuing the
1401 first warning (or "splat"). This feature prevents such
1402 disabling, allowing multiple RCU-lockdep warnings to be printed
1403 on a single reboot.
1404
1405 Say Y to allow multiple RCU-lockdep warnings per boot.
1406
1407 Say N if you are unsure.
1408
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001409config SPARSE_RCU_POINTER
1410 bool "RCU debugging: sparse-based checks for pointer usage"
1411 default n
1412 help
1413 This feature enables the __rcu sparse annotation for
1414 RCU-protected pointers. This annotation will cause sparse
1415 to flag any non-RCU used of annotated pointers. This can be
1416 helpful when debugging RCU usage. Please note that this feature
1417 is not intended to enforce code cleanliness; it is instead merely
1418 a debugging aid.
1419
1420 Say Y to make sparse flag questionable use of RCU-protected pointers
1421
1422 Say N if you are unsure.
1423
Paul E. McKenney51b11302014-01-27 11:49:39 -08001424config TORTURE_TEST
1425 tristate
1426 default n
1427
Paul E. McKenney8704baa2015-12-31 18:33:22 -08001428config RCU_PERF_TEST
1429 tristate "performance tests for RCU"
1430 depends on DEBUG_KERNEL
1431 select TORTURE_TEST
1432 select SRCU
1433 select TASKS_RCU
1434 default n
1435 help
1436 This option provides a kernel module that runs performance
1437 tests on the RCU infrastructure. The kernel module may be built
1438 after the fact on the running kernel to be tested, if desired.
1439
1440 Say Y here if you want RCU performance tests to be built into
1441 the kernel.
1442 Say M if you want the RCU performance tests to build as a module.
1443 Say N if you are unsure.
1444
Paul E. McKenneya241ec62005-10-30 15:03:12 -08001445config RCU_TORTURE_TEST
1446 tristate "torture tests for RCU"
1447 depends on DEBUG_KERNEL
Paul E. McKenney51b11302014-01-27 11:49:39 -08001448 select TORTURE_TEST
Pranith Kumar83fe27e2014-12-05 11:24:45 -05001449 select SRCU
Paul E. McKenney82d0f4c2015-04-20 05:42:50 -07001450 select TASKS_RCU
Paul E. McKenneya241ec62005-10-30 15:03:12 -08001451 default n
1452 help
1453 This option provides a kernel module that runs torture tests
1454 on the RCU infrastructure. The kernel module may be built
1455 after the fact on the running kernel to be tested, if desired.
1456
Paul E. McKenney31a72bc2008-06-18 09:26:49 -07001457 Say Y here if you want RCU torture tests to be built into
1458 the kernel.
Paul E. McKenneya241ec62005-10-30 15:03:12 -08001459 Say M if you want the RCU torture tests to build as a module.
1460 Say N if you are unsure.
Ankita Garg8bb31b92006-10-02 02:17:36 -07001461
Paul E. McKenney0f41c0d2015-03-10 18:33:20 -07001462config RCU_TORTURE_TEST_SLOW_PREINIT
1463 bool "Slow down RCU grace-period pre-initialization to expose races"
1464 depends on RCU_TORTURE_TEST
1465 help
1466 This option delays grace-period pre-initialization (the
1467 propagation of CPU-hotplug changes up the rcu_node combining
1468 tree) for a few jiffies between initializing each pair of
1469 consecutive rcu_node structures. This helps to expose races
1470 involving grace-period pre-initialization, in other words, it
1471 makes your kernel less stable. It can also greatly increase
1472 grace-period latency, especially on systems with large numbers
1473 of CPUs. This is useful when torture-testing RCU, but in
1474 almost no other circumstance.
1475
1476 Say Y here if you want your system to crash and hang more often.
1477 Say N if you want a sane system.
1478
1479config RCU_TORTURE_TEST_SLOW_PREINIT_DELAY
1480 int "How much to slow down RCU grace-period pre-initialization"
1481 range 0 5
1482 default 3
1483 depends on RCU_TORTURE_TEST_SLOW_PREINIT
1484 help
1485 This option specifies the number of jiffies to wait between
1486 each rcu_node structure pre-initialization step.
1487
Paul E. McKenney37745d22015-01-22 18:24:08 -08001488config RCU_TORTURE_TEST_SLOW_INIT
1489 bool "Slow down RCU grace-period initialization to expose races"
1490 depends on RCU_TORTURE_TEST
1491 help
Paul E. McKenney0f41c0d2015-03-10 18:33:20 -07001492 This option delays grace-period initialization for a few
1493 jiffies between initializing each pair of consecutive
Paul E. McKenney37745d22015-01-22 18:24:08 -08001494 rcu_node structures. This helps to expose races involving
1495 grace-period initialization, in other words, it makes your
1496 kernel less stable. It can also greatly increase grace-period
1497 latency, especially on systems with large numbers of CPUs.
1498 This is useful when torture-testing RCU, but in almost no
1499 other circumstance.
1500
1501 Say Y here if you want your system to crash and hang more often.
1502 Say N if you want a sane system.
1503
1504config RCU_TORTURE_TEST_SLOW_INIT_DELAY
1505 int "How much to slow down RCU grace-period initialization"
1506 range 0 5
Paul E. McKenney186bea52015-01-29 16:37:19 -08001507 default 3
Paul E. McKenney8d7dc922015-04-14 19:33:59 -07001508 depends on RCU_TORTURE_TEST_SLOW_INIT
Paul E. McKenney37745d22015-01-22 18:24:08 -08001509 help
1510 This option specifies the number of jiffies to wait between
1511 each rcu_node structure initialization.
1512
Paul E. McKenney0f41c0d2015-03-10 18:33:20 -07001513config RCU_TORTURE_TEST_SLOW_CLEANUP
1514 bool "Slow down RCU grace-period cleanup to expose races"
1515 depends on RCU_TORTURE_TEST
1516 help
1517 This option delays grace-period cleanup for a few jiffies
1518 between cleaning up each pair of consecutive rcu_node
1519 structures. This helps to expose races involving grace-period
1520 cleanup, in other words, it makes your kernel less stable.
1521 It can also greatly increase grace-period latency, especially
1522 on systems with large numbers of CPUs. This is useful when
1523 torture-testing RCU, but in almost no other circumstance.
1524
1525 Say Y here if you want your system to crash and hang more often.
1526 Say N if you want a sane system.
1527
1528config RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY
1529 int "How much to slow down RCU grace-period cleanup"
1530 range 0 5
1531 default 3
1532 depends on RCU_TORTURE_TEST_SLOW_CLEANUP
1533 help
1534 This option specifies the number of jiffies to wait between
1535 each rcu_node structure cleanup operation.
1536
Paul E. McKenneyb1637602010-06-02 16:21:38 -07001537config RCU_CPU_STALL_TIMEOUT
1538 int "RCU CPU stall timeout in seconds"
Paul E. McKenney6bfc09e2012-10-19 12:49:17 -07001539 depends on RCU_STALL_COMMON
Paul E. McKenneyb1637602010-06-02 16:21:38 -07001540 range 3 300
Paul E. McKenneyc8960542012-10-25 17:59:23 -07001541 default 21
Paul E. McKenneyb1637602010-06-02 16:21:38 -07001542 help
1543 If a given RCU grace period extends more than the specified
1544 number of seconds, a CPU stall warning is printed. If the
1545 RCU grace period persists, additional CPU stall warnings are
1546 printed at more widely spaced intervals.
1547
Channagoud Kadabi2eada802017-03-10 16:30:47 -08001548config RCU_PANIC_ON_STALL
1549 int "Panic on RCU Stalls"
1550 range 0 1
1551 default 0
1552 depends on RCU_STALL_COMMON
1553 help
1554 Panic if a given RCU grace period extends more than the specified
1555 number of seconds instead of just printing a CPU stall warning.
1556 This helps to collect cpu context as part of ramdumps for post
1557 mortem analysis.
1558
1559
Paul E. McKenney5c8806a2012-01-06 15:10:44 -08001560config RCU_TRACE
1561 bool "Enable tracing for RCU"
1562 depends on DEBUG_KERNEL
Paul E. McKenney52494532012-11-14 16:26:40 -08001563 select TRACE_CLOCK
Paul E. McKenney5c8806a2012-01-06 15:10:44 -08001564 help
1565 This option provides tracing in RCU which presents stats
1566 in debugfs for debugging RCU implementation.
1567
1568 Say Y here if you want to enable RCU tracing
1569 Say N if you are unsure.
1570
Paul E. McKenney1ce46ee2015-05-05 23:04:22 -07001571config RCU_EQS_DEBUG
Paul E. McKenneyeb6d5b02015-06-30 09:56:31 -07001572 bool "Provide debugging asserts for adding NO_HZ support to an arch"
Paul E. McKenney1ce46ee2015-05-05 23:04:22 -07001573 depends on DEBUG_KERNEL
1574 help
1575 This option provides consistency checks in RCU's handling of
1576 NO_HZ. These checks have proven quite helpful in detecting
1577 bugs in arch-specific NO_HZ code.
1578
1579 Say N here if you need ultimate kernel/user switch latencies
1580 Say Y if you are unsure
1581
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001582endmenu # "RCU Debugging"
1583
Tejun Heof303fcc2016-02-09 17:59:38 -05001584config DEBUG_WQ_FORCE_RR_CPU
1585 bool "Force round-robin CPU selection for unbound work items"
1586 depends on DEBUG_KERNEL
1587 default n
1588 help
1589 Workqueue used to implicitly guarantee that work items queued
1590 without explicit CPU specified are put on the local CPU. This
1591 guarantee is no longer true and while local CPU is still
1592 preferred work items may be put on foreign CPUs. Kernel
1593 parameter "workqueue.debug_force_rr_cpu" is added to force
1594 round-robin CPU selection to flush out usages which depend on the
1595 now broken guarantee. This config option enables the debug
1596 feature by default. When enabled, memory and cache locality will
1597 be impacted.
1598
Tejun Heo870d6652008-08-25 19:47:25 +09001599config DEBUG_BLOCK_EXT_DEVT
1600 bool "Force extended block device numbers and spread them"
1601 depends on DEBUG_KERNEL
1602 depends on BLOCK
Jens Axboe759f8ca2008-08-29 09:06:29 +02001603 default n
Tejun Heo870d6652008-08-25 19:47:25 +09001604 help
Tejun Heo0e11e342008-10-13 10:46:01 +02001605 BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1606 SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1607 YOU ARE DOING. Distros, please enable this and fix whatever
1608 is broken.
1609
Tejun Heo870d6652008-08-25 19:47:25 +09001610 Conventionally, block device numbers are allocated from
1611 predetermined contiguous area. However, extended block area
1612 may introduce non-contiguous block device numbers. This
1613 option forces most block device numbers to be allocated from
1614 the extended space and spreads them to discover kernel or
1615 userland code paths which assume predetermined contiguous
1616 device number allocation.
1617
Tejun Heo55dc7db2008-09-01 13:44:35 +02001618 Note that turning on this debug option shuffles all the
1619 device numbers for all IDE and SCSI devices including libata
1620 ones, so root partition specified using device number
1621 directly (via rdev or root=MAJ:MIN) won't work anymore.
1622 Textual device names (root=/dev/sdXn) will continue to work.
1623
Tejun Heo870d6652008-08-25 19:47:25 +09001624 Say N if you are unsure.
1625
Thomas Gleixner757c9892016-02-26 18:43:32 +00001626config CPU_HOTPLUG_STATE_CONTROL
1627 bool "Enable CPU hotplug state control"
1628 depends on DEBUG_KERNEL
1629 depends on HOTPLUG_CPU
1630 default n
1631 help
1632 Allows to write steps between "offline" and "online" to the CPUs
1633 sysfs target file so states can be stepped granular. This is a debug
1634 option for now as the hotplug machinery cannot be stopped and
1635 restarted at arbitrary points yet.
1636
1637 Say N if your are unsure.
1638
Akinobu Mita8d438282012-07-30 14:43:02 -07001639config NOTIFIER_ERROR_INJECTION
1640 tristate "Notifier error injection"
1641 depends on DEBUG_KERNEL
1642 select DEBUG_FS
1643 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001644 This option provides the ability to inject artificial errors to
Akinobu Mita8d438282012-07-30 14:43:02 -07001645 specified notifier chain callbacks. It is useful to test the error
1646 handling of notifier call chain failures.
1647
1648 Say N if unsure.
1649
Akinobu Mitac9d221f2010-05-26 14:43:36 -07001650config CPU_NOTIFIER_ERROR_INJECT
1651 tristate "CPU notifier error injection module"
Akinobu Mitaf5a9f522012-07-30 14:43:03 -07001652 depends on HOTPLUG_CPU && NOTIFIER_ERROR_INJECTION
Akinobu Mitac9d221f2010-05-26 14:43:36 -07001653 help
1654 This option provides a kernel module that can be used to test
Masanari Iidae41e85c2012-11-30 16:44:39 +09001655 the error handling of the cpu notifiers by injecting artificial
Akinobu Mitaf5a9f522012-07-30 14:43:03 -07001656 errors to CPU notifier chain callbacks. It is controlled through
1657 debugfs interface under /sys/kernel/debug/notifier-error-inject/cpu
1658
1659 If the notifier call chain should be failed with some events
1660 notified, write the error code to "actions/<notifier event>/error".
1661
1662 Example: Inject CPU offline error (-1 == -EPERM)
1663
1664 # cd /sys/kernel/debug/notifier-error-inject/cpu
1665 # echo -1 > actions/CPU_DOWN_PREPARE/error
1666 # echo 0 > /sys/devices/system/cpu/cpu1/online
1667 bash: echo: write error: Operation not permitted
Akinobu Mitac9d221f2010-05-26 14:43:36 -07001668
1669 To compile this code as a module, choose M here: the module will
1670 be called cpu-notifier-error-inject.
1671
1672 If unsure, say N.
1673
Akinobu Mita048b9c32012-07-30 14:43:07 -07001674config PM_NOTIFIER_ERROR_INJECT
1675 tristate "PM notifier error injection module"
1676 depends on PM && NOTIFIER_ERROR_INJECTION
1677 default m if PM_DEBUG
1678 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001679 This option provides the ability to inject artificial errors to
Akinobu Mita048b9c32012-07-30 14:43:07 -07001680 PM notifier chain callbacks. It is controlled through debugfs
1681 interface /sys/kernel/debug/notifier-error-inject/pm
1682
1683 If the notifier call chain should be failed with some events
1684 notified, write the error code to "actions/<notifier event>/error".
1685
1686 Example: Inject PM suspend error (-12 = -ENOMEM)
1687
1688 # cd /sys/kernel/debug/notifier-error-inject/pm/
1689 # echo -12 > actions/PM_SUSPEND_PREPARE/error
1690 # echo mem > /sys/power/state
1691 bash: echo: write error: Cannot allocate memory
1692
1693 To compile this code as a module, choose M here: the module will
1694 be called pm-notifier-error-inject.
1695
1696 If unsure, say N.
1697
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001698config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1699 tristate "OF reconfig notifier error injection module"
1700 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001701 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001702 This option provides the ability to inject artificial errors to
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001703 OF reconfig notifier chain callbacks. It is controlled
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001704 through debugfs interface under
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001705 /sys/kernel/debug/notifier-error-inject/OF-reconfig/
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001706
1707 If the notifier call chain should be failed with some events
1708 notified, write the error code to "actions/<notifier event>/error".
1709
1710 To compile this code as a module, choose M here: the module will
Akinobu Mitae12a95f2013-04-30 15:28:49 -07001711 be called of-reconfig-notifier-error-inject.
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001712
1713 If unsure, say N.
1714
Nikolay Aleksandrov02fff962015-11-28 13:45:28 +01001715config NETDEV_NOTIFIER_ERROR_INJECT
1716 tristate "Netdev notifier error injection module"
1717 depends on NET && NOTIFIER_ERROR_INJECTION
1718 help
1719 This option provides the ability to inject artificial errors to
1720 netdevice notifier chain callbacks. It is controlled through debugfs
1721 interface /sys/kernel/debug/notifier-error-inject/netdev
1722
1723 If the notifier call chain should be failed with some events
1724 notified, write the error code to "actions/<notifier event>/error".
1725
1726 Example: Inject netdevice mtu change error (-22 = -EINVAL)
1727
1728 # cd /sys/kernel/debug/notifier-error-inject/netdev
1729 # echo -22 > actions/NETDEV_CHANGEMTU/error
1730 # ip link set eth0 mtu 1024
1731 RTNETLINK answers: Invalid argument
1732
1733 To compile this code as a module, choose M here: the module will
1734 be called netdev-notifier-error-inject.
1735
1736 If unsure, say N.
1737
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001738config FAULT_INJECTION
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001739 bool "Fault-injection framework"
1740 depends on DEBUG_KERNEL
Akinobu Mita329409a2006-12-08 02:39:48 -08001741 help
1742 Provide fault-injection framework.
1743 For more details, see Documentation/fault-injection/.
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001744
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001745config FAILSLAB
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001746 bool "Fault-injection capability for kmalloc"
1747 depends on FAULT_INJECTION
Akinobu Mita773ff602008-12-23 19:37:01 +09001748 depends on SLAB || SLUB
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001749 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001750 Provide fault-injection capability for kmalloc.
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001751
Akinobu Mita933e3122006-12-08 02:39:45 -08001752config FAIL_PAGE_ALLOC
1753 bool "Fault-injection capabilitiy for alloc_pages()"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001754 depends on FAULT_INJECTION
Akinobu Mita933e3122006-12-08 02:39:45 -08001755 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001756 Provide fault-injection capability for alloc_pages().
Akinobu Mita933e3122006-12-08 02:39:45 -08001757
Akinobu Mitac17bb492006-12-08 02:39:46 -08001758config FAIL_MAKE_REQUEST
Dave Jones86327d12006-12-12 20:16:36 +01001759 bool "Fault-injection capability for disk IO"
Jens Axboe581d4e22008-09-14 05:56:33 -07001760 depends on FAULT_INJECTION && BLOCK
Akinobu Mitac17bb492006-12-08 02:39:46 -08001761 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001762 Provide fault-injection capability for disk IO.
Akinobu Mitac17bb492006-12-08 02:39:46 -08001763
Jens Axboe581d4e22008-09-14 05:56:33 -07001764config FAIL_IO_TIMEOUT
Takuya Yoshikawaf4d01432010-07-21 16:05:53 +09001765 bool "Fault-injection capability for faking disk interrupts"
Jens Axboe581d4e22008-09-14 05:56:33 -07001766 depends on FAULT_INJECTION && BLOCK
1767 help
1768 Provide fault-injection capability on end IO handling. This
1769 will make the block layer "forget" an interrupt as configured,
1770 thus exercising the error handling.
1771
1772 Only works with drivers that use the generic timeout handling,
1773 for others it wont do anything.
1774
Per Forlin1b676f72011-08-19 14:52:37 +02001775config FAIL_MMC_REQUEST
1776 bool "Fault-injection capability for MMC IO"
Adrien Schildknecht28ff4fd2015-11-10 20:12:19 +01001777 depends on FAULT_INJECTION_DEBUG_FS && MMC
Per Forlin1b676f72011-08-19 14:52:37 +02001778 help
1779 Provide fault-injection capability for MMC IO.
1780 This will make the mmc core return data errors. This is
1781 useful to test the error handling in the mmc block device
1782 and to test how the mmc host driver handles retries from
1783 the block device.
1784
Subhash Jadavanibb03ec52017-06-23 19:42:09 -07001785config UFS_FAULT_INJECTION
1786 bool "Fault-injection capability for UFS IO"
1787 select DEBUG_FS
1788 depends on FAULT_INJECTION && SCSI_UFSHCD
1789 help
1790 Provide fault-injection capability for UFS IO.
1791 This will make the UFS host controller driver to randomly
1792 abort ongoing commands in the host controller, update OCS
1793 field according to the injected fatal error and can also
1794 forcefully hang the command indefinitely till upper layer
1795 timeout occurs. This is useful to test error handling in
1796 the UFS contoller driver and test how the driver handles
1797 the retries from block/SCSI mid layer.
1798
Davidlohr Buesoab51fba2015-06-29 23:26:02 -07001799config FAIL_FUTEX
1800 bool "Fault-injection capability for futexes"
1801 select DEBUG_FS
1802 depends on FAULT_INJECTION && FUTEX
1803 help
1804 Provide fault-injection capability for futexes.
1805
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001806config FAULT_INJECTION_DEBUG_FS
1807 bool "Debugfs entries for fault-injection capabilities"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001808 depends on FAULT_INJECTION && SYSFS && DEBUG_FS
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001809 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001810 Enable configuration of fault-injection capabilities via debugfs.
Akinobu Mita1df49002007-02-20 13:57:56 -08001811
1812config FAULT_INJECTION_STACKTRACE_FILTER
1813 bool "stacktrace filter for fault-injection capabilities"
1814 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
Akinobu Mita6d690dc2007-05-12 10:36:53 -07001815 depends on !X86_64
Akinobu Mita1df49002007-02-20 13:57:56 -08001816 select STACKTRACE
Stefan Agnerd47e16b2018-09-30 23:02:33 +01001817 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !SCORE
Akinobu Mita1df49002007-02-20 13:57:56 -08001818 help
1819 Provide stacktrace filter for fault-injection capabilities
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07001820
Arjan van de Ven97455122008-01-25 21:08:34 +01001821config LATENCYTOP
1822 bool "Latency measuring infrastructure"
Randy Dunlap625fdca2010-08-12 12:31:21 -07001823 depends on DEBUG_KERNEL
1824 depends on STACKTRACE_SUPPORT
1825 depends on PROC_FS
Stefan Agnerd47e16b2018-09-30 23:02:33 +01001826 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC
Arjan van de Ven97455122008-01-25 21:08:34 +01001827 select KALLSYMS
1828 select KALLSYMS_ALL
1829 select STACKTRACE
1830 select SCHEDSTATS
1831 select SCHED_DEBUG
Arjan van de Ven97455122008-01-25 21:08:34 +01001832 help
1833 Enable this option if you want to use the LatencyTOP tool
1834 to find out which userspace is blocking on what kernel operations.
1835
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001836source kernel/trace/Kconfig
1837
Dave Hansen881c5142013-07-01 13:04:44 -07001838menu "Runtime Testing"
1839
1840config LKDTM
1841 tristate "Linux Kernel Dump Test Tool Module"
1842 depends on DEBUG_FS
1843 depends on BLOCK
1844 default n
1845 help
1846 This module enables testing of the different dumping mechanisms by
1847 inducing system failures at predefined crash points.
1848 If you don't need it: say N
1849 Choose M here to compile this code as a module. The module will be
1850 called lkdtm.
1851
1852 Documentation on how to use the module can be found in
1853 Documentation/fault-injection/provoke-crashes.txt
1854
1855config TEST_LIST_SORT
1856 bool "Linked list sorting test"
1857 depends on DEBUG_KERNEL
1858 help
1859 Enable this to turn on 'list_sort()' function test. This test is
1860 executed only once during system boot, so affects only boot time.
1861
1862 If unsure, say N.
1863
1864config KPROBES_SANITY_TEST
1865 bool "Kprobes sanity tests"
1866 depends on DEBUG_KERNEL
1867 depends on KPROBES
1868 default n
1869 help
1870 This option provides for testing basic kprobes functionality on
1871 boot. A sample kprobe, jprobe and kretprobe are inserted and
1872 verified for functionality.
1873
1874 Say N if you are unsure.
1875
1876config BACKTRACE_SELF_TEST
1877 tristate "Self test for the backtrace code"
1878 depends on DEBUG_KERNEL
1879 default n
1880 help
1881 This option provides a kernel module that can be used to test
1882 the kernel stack backtrace code. This option is not useful
1883 for distributions or general kernels, but only for kernel
1884 developers working on architecture code.
1885
1886 Note that if you want to also test saved backtraces, you will
1887 have to enable STACKTRACE as well.
1888
1889 Say N if you are unsure.
1890
Michel Lespinasse910a7422012-10-08 16:30:39 -07001891config RBTREE_TEST
1892 tristate "Red-Black tree test"
Cody P Schafer7c993e12013-09-11 14:25:19 -07001893 depends on DEBUG_KERNEL
Michel Lespinasse910a7422012-10-08 16:30:39 -07001894 help
1895 A benchmark measuring the performance of the rbtree library.
1896 Also includes rbtree invariant checks.
1897
Michel Lespinassefff3fd82012-10-08 16:31:23 -07001898config INTERVAL_TREE_TEST
1899 tristate "Interval tree test"
1900 depends on m && DEBUG_KERNEL
Chris Wilsona88cc102014-03-17 12:21:54 +00001901 select INTERVAL_TREE
Michel Lespinassefff3fd82012-10-08 16:31:23 -07001902 help
1903 A benchmark measuring the performance of the interval tree library
1904
Greg Thelen623fd802013-11-12 15:08:34 -08001905config PERCPU_TEST
1906 tristate "Per cpu operations test"
1907 depends on m && DEBUG_KERNEL
1908 help
1909 Enable this option to build test module which validates per-cpu
1910 operations.
1911
1912 If unsure, say N.
1913
Dave Hansen881c5142013-07-01 13:04:44 -07001914config ATOMIC64_SELFTEST
1915 bool "Perform an atomic64_t self-test at boot"
1916 help
1917 Enable this option to test the atomic64_t functions at boot.
1918
1919 If unsure, say N.
1920
1921config ASYNC_RAID6_TEST
1922 tristate "Self test for hardware accelerated raid6 recovery"
1923 depends on ASYNC_RAID6_RECOV
1924 select ASYNC_MEMCPY
1925 ---help---
1926 This is a one-shot self test that permutes through the
1927 recovery of all the possible two disk failure scenarios for a
1928 N-disk array. Recovery is performed with the asynchronous
1929 raid6 recovery routines, and will optionally use an offload
1930 engine if one is available.
1931
1932 If unsure, say N.
1933
Andy Shevchenko64d1d772015-02-12 15:02:21 -08001934config TEST_HEXDUMP
1935 tristate "Test functions located in the hexdump module at runtime"
1936
Dave Hansen881c5142013-07-01 13:04:44 -07001937config TEST_STRING_HELPERS
1938 tristate "Test functions located in the string_helpers module at runtime"
1939
1940config TEST_KSTRTOX
1941 tristate "Test kstrto*() family of functions at runtime"
1942
Rasmus Villemoes707cc722015-11-06 16:30:29 -08001943config TEST_PRINTF
1944 tristate "Test printf() family of functions at runtime"
1945
David Decotigny5fd003f2016-02-19 09:24:00 -05001946config TEST_BITMAP
1947 tristate "Test bitmap_*() family of functions at runtime"
1948 default n
1949 help
1950 Enable this option to test the bitmap functions at boot.
1951
1952 If unsure, say N.
1953
Andy Shevchenkocfaff0e2016-05-30 17:40:41 +03001954config TEST_UUID
1955 tristate "Test functions located in the uuid module at runtime"
1956
Thomas Graf7e1e7762014-08-02 11:47:44 +02001957config TEST_RHASHTABLE
Geert Uytterhoeven9d6dbe12015-01-29 15:40:25 +01001958 tristate "Perform selftest on resizable hash table"
Thomas Graf7e1e7762014-08-02 11:47:44 +02001959 default n
1960 help
1961 Enable this option to test the rhashtable functions at boot.
1962
1963 If unsure, say N.
1964
George Spelvin468a9422016-05-26 22:11:51 -04001965config TEST_HASH
1966 tristate "Perform selftest on hash functions"
1967 default n
1968 help
Jason A. Donenfeldc626dde2017-01-08 13:54:00 +01001969 Enable this option to test the kernel's integer (<linux/hash.h>),
1970 string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1971 hash functions on boot (or module load).
George Spelvin468a9422016-05-26 22:11:51 -04001972
1973 This is intended to help people writing architecture-specific
1974 optimized versions. If unsure, say N.
1975
Dave Hansen881c5142013-07-01 13:04:44 -07001976endmenu # runtime tests
1977
Bernhard Kaindlf212ec42008-01-30 13:34:11 +01001978config PROVIDE_OHCI1394_DMA_INIT
Stefan Richter080de8c2008-02-28 20:54:43 +01001979 bool "Remote debugging over FireWire early on boot"
Bernhard Kaindlf212ec42008-01-30 13:34:11 +01001980 depends on PCI && X86
1981 help
1982 If you want to debug problems which hang or crash the kernel early
1983 on boot and the crashing machine has a FireWire port, you can use
1984 this feature to remotely access the memory of the crashed machine
1985 over FireWire. This employs remote DMA as part of the OHCI1394
1986 specification which is now the standard for FireWire controllers.
1987
1988 With remote DMA, you can monitor the printk buffer remotely using
1989 firescope and access all memory below 4GB using fireproxy from gdb.
1990 Even controlling a kernel debugger is possible using remote DMA.
1991
1992 Usage:
1993
1994 If ohci1394_dma=early is used as boot parameter, it will initialize
1995 all OHCI1394 controllers which are found in the PCI config space.
1996
1997 As all changes to the FireWire bus such as enabling and disabling
1998 devices cause a bus reset and thereby disable remote DMA for all
1999 devices, be sure to have the cable plugged and FireWire enabled on
2000 the debugging host before booting the debug target for debugging.
2001
2002 This code (~1k) is freed after boot. By then, the firewire stack
2003 in charge of the OHCI-1394 controllers should be used instead.
2004
2005 See Documentation/debugging-via-ohci1394.txt for more information.
Arjan van de Ven97455122008-01-25 21:08:34 +01002006
Joerg Roedel5ee00bd2009-01-09 12:14:24 +01002007config DMA_API_DEBUG
2008 bool "Enable debugging of DMA-API usage"
2009 depends on HAVE_DMA_API_DEBUG
2010 help
2011 Enable this option to debug the use of the DMA API by device drivers.
2012 With this option you will be able to detect common bugs in device
2013 drivers like double-freeing of DMA mappings or freeing mappings that
2014 were never allocated.
Dan Williams0abdd7a2014-01-21 15:48:12 -08002015
2016 This also attempts to catch cases where a page owned by DMA is
2017 accessed by the cpu in a way that could cause data corruption. For
2018 example, this enables cow_user_page() to check that the source page is
2019 not undergoing DMA.
2020
2021 This option causes a performance degradation. Use only if you want to
2022 debug device drivers and dma interactions.
2023
2024 If unsure, say N.
Jason Baron346e15b2008-08-12 16:46:19 -04002025
Valentin Rothberg8a6f0b42014-10-13 15:51:38 -07002026config TEST_LKM
Kees Cook93e9ef82014-01-23 15:54:37 -08002027 tristate "Test module loading with 'hello world' module"
2028 default n
2029 depends on m
2030 help
2031 This builds the "test_module" module that emits "Hello, world"
2032 on printk when loaded. It is designed to be used for basic
2033 evaluation of the module loading subsystem (for example when
2034 validating module verification). It lacks any extra dependencies,
2035 and will not normally be loaded by the system unless explicitly
2036 requested by name.
2037
2038 If unsure, say N.
2039
Kees Cook3e2a4c12014-01-23 15:54:38 -08002040config TEST_USER_COPY
2041 tristate "Test user/kernel boundary protections"
2042 default n
2043 depends on m
2044 help
2045 This builds the "test_user_copy" module that runs sanity checks
2046 on the copy_to/from_user infrastructure, making sure basic
2047 user/kernel boundary testing is working. If it fails to load,
2048 a regression has been detected in the user/kernel memory boundary
2049 protections.
2050
2051 If unsure, say N.
2052
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002053config TEST_BPF
2054 tristate "Test BPF filter functionality"
2055 default n
Randy Dunlap98920ba2014-05-13 09:58:44 -07002056 depends on m && NET
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002057 help
2058 This builds the "test_bpf" module that runs various test vectors
2059 against the BPF interpreter or BPF JIT compiler depending on the
2060 current setting. This is in particular useful for BPF JIT compiler
2061 development, but also to run regression tests against changes in
Alexei Starovoitov3c731eb2014-09-26 00:17:07 -07002062 the interpreter code. It also enables test stubs for eBPF maps and
2063 verifier used by user space verifier testsuite.
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002064
2065 If unsure, say N.
2066
Kees Cook0a8adf52014-07-14 14:38:12 -07002067config TEST_FIRMWARE
2068 tristate "Test firmware loading via userspace interface"
2069 default n
2070 depends on FW_LOADER
2071 help
2072 This builds the "test_firmware" module that creates a userspace
2073 interface for testing firmware loading. This can be used to
2074 control the triggering of firmware loading without needing an
2075 actual firmware-using device. The contents can be rechecked by
2076 userspace.
2077
2078 If unsure, say N.
2079
David Rileye704f932014-06-16 14:58:32 -07002080config TEST_UDELAY
2081 tristate "udelay test driver"
2082 default n
2083 help
2084 This builds the "udelay_test" module that helps to make sure
2085 that udelay() is working properly.
2086
2087 If unsure, say N.
2088
Vladimir Murzin4a207992015-04-14 15:48:27 -07002089config MEMTEST
2090 bool "Memtest"
2091 depends on HAVE_MEMBLOCK
2092 ---help---
2093 This option adds a kernel parameter 'memtest', which allows memtest
2094 to be set.
2095 memtest=0, mean disabled; -- default
2096 memtest=1, mean do 1 test pattern;
2097 ...
Vladimir Murzin8d8cfb42015-04-14 15:48:40 -07002098 memtest=17, mean do 17 test patterns.
Vladimir Murzin4a207992015-04-14 15:48:27 -07002099 If you are unsure how to answer this question, answer N.
2100
Trilok Sonibdf06f72016-04-21 15:46:42 -07002101config MEMTEST_ENABLE_DEFAULT
2102 int "Enable Memtest pattern test by default? (0-17)"
2103 range 0 17
2104 default "0"
2105 depends on MEMTEST
2106 help
2107 This option helps to select Memtest to be enabled through
2108 kernel defconfig options. Alternatively it can be enabled
2109 using memtest=<patterns> kernel command line.
2110
2111 Default value is kept as "0" so that it is kept as disabled.
2112 To enable enter any value between 1-17 range.
2113
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002114config TEST_STATIC_KEYS
2115 tristate "Test static keys"
Jason Baron579e1ac2015-07-30 03:59:44 +00002116 default n
2117 depends on m
2118 help
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002119 Test the static key interfaces.
Jason Baron579e1ac2015-07-30 03:59:44 +00002120
2121 If unsure, say N.
2122
Syed Rameez Mustafacf9c1e42013-07-15 11:52:09 -07002123config PANIC_ON_DATA_CORRUPTION
2124 bool "Cause a Kernel Panic When Data Corruption is detected"
2125 help
2126 Select this option to upgrade warnings for potentially
2127 recoverable data corruption scenarios to system-halting panics,
2128 for easier detection and debug.
2129
Kees Cook8fb63b12016-08-17 14:42:11 -07002130config BUG_ON_DATA_CORRUPTION
2131 bool "Trigger a BUG when data corruption is detected"
2132 select CONFIG_DEBUG_LIST
2133 help
2134 Select this option if the kernel should BUG when it encounters
2135 data corruption in kernel memory structures when they get checked
2136 for validity.
2137
2138 If unsure, say N.
2139
Chris Fries95163752017-10-24 16:12:07 -07002140config CC_WERROR
2141 bool "Treat all compile warnings as errors"
2142 default n
2143 help
2144 Select this option to set compiler warnings as errors,
2145 to prevent easily-fixable problems from creeping into
2146 the codebase.
2147
2148 If unsure, say N.
2149
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07002150source "samples/Kconfig"
Jason Wesseldc7d5522008-04-17 20:05:37 +02002151
2152source "lib/Kconfig.kgdb"
Pekka Enberg0a4af3b2009-02-26 21:38:56 +02002153
Andrey Ryabininc6d30852016-01-20 15:00:55 -08002154source "lib/Kconfig.ubsan"
2155
Dan Williams21266be2015-11-19 18:19:29 -08002156config ARCH_HAS_DEVMEM_IS_ALLOWED
2157 bool
2158
2159config STRICT_DEVMEM
2160 bool "Filter access to /dev/mem"
2161 depends on MMU
2162 depends on ARCH_HAS_DEVMEM_IS_ALLOWED
2163 default y if TILE || PPC
2164 ---help---
2165 If this option is disabled, you allow userspace (root) access to all
2166 of memory, including kernel and userspace memory. Accidental
2167 access to this is obviously disastrous, but specific access can
2168 be used by people debugging the kernel. Note that with PAT support
2169 enabled, even in this case there are restrictions on /dev/mem
2170 use due to the cache aliasing requirements.
2171
Dan Williams90a545e2015-11-23 15:49:03 -08002172 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
2173 file only allows userspace access to PCI space and the BIOS code and
2174 data regions. This is sufficient for dosemu and X and all common
2175 users of /dev/mem.
2176
2177 If in doubt, say Y.
2178
2179config IO_STRICT_DEVMEM
2180 bool "Filter I/O access to /dev/mem"
2181 depends on STRICT_DEVMEM
Dan Williams90a545e2015-11-23 15:49:03 -08002182 ---help---
2183 If this option is disabled, you allow userspace (root) access to all
2184 io-memory regardless of whether a driver is actively using that
2185 range. Accidental access to this is obviously disastrous, but
2186 specific access can be used by people debugging kernel drivers.
2187
Dan Williams21266be2015-11-19 18:19:29 -08002188 If this option is switched on, the /dev/mem file only allows
Dan Williams90a545e2015-11-23 15:49:03 -08002189 userspace access to *idle* io-memory ranges (see /proc/iomem) This
2190 may break traditional users of /dev/mem (dosemu, legacy X, etc...)
2191 if the driver using a given range cannot be disabled.
Dan Williams21266be2015-11-19 18:19:29 -08002192
2193 If in doubt, say Y.