blob: 27e14c0b93a3af8f5967117d689fae5ec5431f1b [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 Poimboeufb9ab5eb2016-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
Chen Gangdf2e1ef2014-06-23 13:22:04 -07001185 select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !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
Linus Torvalds1da177e2005-04-16 15:20:36 -07001271config DEBUG_KOBJECT
1272 bool "kobject debugging"
1273 depends on DEBUG_KERNEL
1274 help
1275 If you say Y here, some extra kobject debugging messages will be sent
Rohit Vaswani173de7d2014-10-02 21:02:56 -07001276 to the syslog.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001277
Russell Kingc817a672013-06-27 15:06:14 +01001278config DEBUG_KOBJECT_RELEASE
1279 bool "kobject release debugging"
Linus Torvalds2a999aa2013-10-29 08:33:36 -07001280 depends on DEBUG_OBJECTS_TIMERS
Russell Kingc817a672013-06-27 15:06:14 +01001281 help
1282 kobjects are reference counted objects. This means that their
1283 last reference count put is not predictable, and the kobject can
1284 live on past the point at which a driver decides to drop it's
1285 initial reference to the kobject gained on allocation. An
1286 example of this would be a struct device which has just been
1287 unregistered.
1288
1289 However, some buggy drivers assume that after such an operation,
1290 the memory backing the kobject can be immediately freed. This
1291 goes completely against the principles of a refcounted object.
1292
1293 If you say Y here, the kernel will delay the release of kobjects
1294 on the last reference count to improve the visibility of this
1295 kind of kobject release bug.
1296
Catalin Marinas9b2a60c2012-10-08 16:28:13 -07001297config HAVE_DEBUG_BUGVERBOSE
1298 bool
1299
Linus Torvalds1da177e2005-04-16 15:20:36 -07001300config DEBUG_BUGVERBOSE
David Rientjes6a108a12011-01-20 14:44:16 -08001301 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
Catalin Marinas9b2a60c2012-10-08 16:28:13 -07001302 depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
Alexey Dobriyan8420e7e2009-12-14 18:00:25 -08001303 default y
Linus Torvalds1da177e2005-04-16 15:20:36 -07001304 help
1305 Say Y here to make BUG() panics output the file name and line number
1306 of the BUG call as well as the EIP and oops trace. This aids
1307 debugging but costs about 70-100K of memory.
1308
Dave Jones199a9af2006-09-29 01:59:00 -07001309config DEBUG_LIST
1310 bool "Debug linked list manipulation"
1311 depends on DEBUG_KERNEL
1312 help
1313 Enable this to turn on extended checks in the linked-list
1314 walking routines.
1315
1316 If unsure, say N.
1317
Dan Streetmanb8cfff62014-06-04 16:11:54 -07001318config DEBUG_PI_LIST
1319 bool "Debug priority linked list manipulation"
1320 depends on DEBUG_KERNEL
1321 help
1322 Enable this to turn on extended checks in the priority-ordered
1323 linked-list (plist) walking routines. This checks the entire
1324 list multiple times during each manipulation.
1325
1326 If unsure, say N.
1327
Jens Axboed6ec0842007-10-22 20:01:06 +02001328config DEBUG_SG
1329 bool "Debug SG table operations"
1330 depends on DEBUG_KERNEL
1331 help
1332 Enable this to turn on checks on scatter-gather tables. This can
1333 help find problems with drivers that do not properly initialize
1334 their sg tables.
1335
1336 If unsure, say N.
1337
Arjan van de Ven1b2439d2008-08-15 15:29:38 -07001338config DEBUG_NOTIFIERS
1339 bool "Debug notifier call chains"
1340 depends on DEBUG_KERNEL
1341 help
1342 Enable this to turn on sanity checking for notifier call chains.
1343 This is most useful for kernel developers to make sure that
1344 modules properly unregister themselves from notifier chains.
1345 This is a relatively cheap check but if you care about maximum
1346 performance, say N.
1347
David Howellse0e81732009-09-02 09:13:40 +01001348config DEBUG_CREDENTIALS
1349 bool "Debug credential management"
1350 depends on DEBUG_KERNEL
1351 help
1352 Enable this to turn on some debug checking for credential
1353 management. The additional code keeps track of the number of
1354 pointers from task_structs to any given cred struct, and checks to
1355 see that this number never exceeds the usage count of the cred
1356 struct.
1357
1358 Furthermore, if SELinux is enabled, this also checks that the
1359 security pointer in the cred struct is never seen to be invalid.
1360
1361 If unsure, say N.
1362
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001363menu "RCU Debugging"
1364
1365config PROVE_RCU
Paul E. McKenney9bae6592015-01-18 18:01:21 -08001366 def_bool PROVE_LOCKING
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001367
1368config PROVE_RCU_REPEATEDLY
1369 bool "RCU debugging: don't disable PROVE_RCU on first splat"
1370 depends on PROVE_RCU
1371 default n
1372 help
1373 By itself, PROVE_RCU will disable checking upon issuing the
1374 first warning (or "splat"). This feature prevents such
1375 disabling, allowing multiple RCU-lockdep warnings to be printed
1376 on a single reboot.
1377
1378 Say Y to allow multiple RCU-lockdep warnings per boot.
1379
1380 Say N if you are unsure.
1381
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001382config SPARSE_RCU_POINTER
1383 bool "RCU debugging: sparse-based checks for pointer usage"
1384 default n
1385 help
1386 This feature enables the __rcu sparse annotation for
1387 RCU-protected pointers. This annotation will cause sparse
1388 to flag any non-RCU used of annotated pointers. This can be
1389 helpful when debugging RCU usage. Please note that this feature
1390 is not intended to enforce code cleanliness; it is instead merely
1391 a debugging aid.
1392
1393 Say Y to make sparse flag questionable use of RCU-protected pointers
1394
1395 Say N if you are unsure.
1396
Paul E. McKenney51b11302014-01-27 11:49:39 -08001397config TORTURE_TEST
1398 tristate
1399 default n
1400
Paul E. McKenney8704baa2015-12-31 18:33:22 -08001401config RCU_PERF_TEST
1402 tristate "performance tests for RCU"
1403 depends on DEBUG_KERNEL
1404 select TORTURE_TEST
1405 select SRCU
1406 select TASKS_RCU
1407 default n
1408 help
1409 This option provides a kernel module that runs performance
1410 tests on the RCU infrastructure. The kernel module may be built
1411 after the fact on the running kernel to be tested, if desired.
1412
1413 Say Y here if you want RCU performance tests to be built into
1414 the kernel.
1415 Say M if you want the RCU performance tests to build as a module.
1416 Say N if you are unsure.
1417
Paul E. McKenneya241ec62005-10-30 15:03:12 -08001418config RCU_TORTURE_TEST
1419 tristate "torture tests for RCU"
1420 depends on DEBUG_KERNEL
Paul E. McKenney51b11302014-01-27 11:49:39 -08001421 select TORTURE_TEST
Pranith Kumar83fe27e2014-12-05 11:24:45 -05001422 select SRCU
Paul E. McKenney82d0f4c2015-04-20 05:42:50 -07001423 select TASKS_RCU
Paul E. McKenneya241ec62005-10-30 15:03:12 -08001424 default n
1425 help
1426 This option provides a kernel module that runs torture tests
1427 on the RCU infrastructure. The kernel module may be built
1428 after the fact on the running kernel to be tested, if desired.
1429
Paul E. McKenney31a72bc2008-06-18 09:26:49 -07001430 Say Y here if you want RCU torture tests to be built into
1431 the kernel.
Paul E. McKenneya241ec62005-10-30 15:03:12 -08001432 Say M if you want the RCU torture tests to build as a module.
1433 Say N if you are unsure.
Ankita Garg8bb31b92006-10-02 02:17:36 -07001434
Paul E. McKenney0f41c0d2015-03-10 18:33:20 -07001435config RCU_TORTURE_TEST_SLOW_PREINIT
1436 bool "Slow down RCU grace-period pre-initialization to expose races"
1437 depends on RCU_TORTURE_TEST
1438 help
1439 This option delays grace-period pre-initialization (the
1440 propagation of CPU-hotplug changes up the rcu_node combining
1441 tree) for a few jiffies between initializing each pair of
1442 consecutive rcu_node structures. This helps to expose races
1443 involving grace-period pre-initialization, in other words, it
1444 makes your kernel less stable. It can also greatly increase
1445 grace-period latency, especially on systems with large numbers
1446 of CPUs. This is useful when torture-testing RCU, but in
1447 almost no other circumstance.
1448
1449 Say Y here if you want your system to crash and hang more often.
1450 Say N if you want a sane system.
1451
1452config RCU_TORTURE_TEST_SLOW_PREINIT_DELAY
1453 int "How much to slow down RCU grace-period pre-initialization"
1454 range 0 5
1455 default 3
1456 depends on RCU_TORTURE_TEST_SLOW_PREINIT
1457 help
1458 This option specifies the number of jiffies to wait between
1459 each rcu_node structure pre-initialization step.
1460
Paul E. McKenney37745d22015-01-22 18:24:08 -08001461config RCU_TORTURE_TEST_SLOW_INIT
1462 bool "Slow down RCU grace-period initialization to expose races"
1463 depends on RCU_TORTURE_TEST
1464 help
Paul E. McKenney0f41c0d2015-03-10 18:33:20 -07001465 This option delays grace-period initialization for a few
1466 jiffies between initializing each pair of consecutive
Paul E. McKenney37745d22015-01-22 18:24:08 -08001467 rcu_node structures. This helps to expose races involving
1468 grace-period initialization, in other words, it makes your
1469 kernel less stable. It can also greatly increase grace-period
1470 latency, especially on systems with large numbers of CPUs.
1471 This is useful when torture-testing RCU, but in almost no
1472 other circumstance.
1473
1474 Say Y here if you want your system to crash and hang more often.
1475 Say N if you want a sane system.
1476
1477config RCU_TORTURE_TEST_SLOW_INIT_DELAY
1478 int "How much to slow down RCU grace-period initialization"
1479 range 0 5
Paul E. McKenney186bea52015-01-29 16:37:19 -08001480 default 3
Paul E. McKenney8d7dc922015-04-14 19:33:59 -07001481 depends on RCU_TORTURE_TEST_SLOW_INIT
Paul E. McKenney37745d22015-01-22 18:24:08 -08001482 help
1483 This option specifies the number of jiffies to wait between
1484 each rcu_node structure initialization.
1485
Paul E. McKenney0f41c0d2015-03-10 18:33:20 -07001486config RCU_TORTURE_TEST_SLOW_CLEANUP
1487 bool "Slow down RCU grace-period cleanup to expose races"
1488 depends on RCU_TORTURE_TEST
1489 help
1490 This option delays grace-period cleanup for a few jiffies
1491 between cleaning up each pair of consecutive rcu_node
1492 structures. This helps to expose races involving grace-period
1493 cleanup, in other words, it makes your kernel less stable.
1494 It can also greatly increase grace-period latency, especially
1495 on systems with large numbers of CPUs. This is useful when
1496 torture-testing RCU, but in almost no other circumstance.
1497
1498 Say Y here if you want your system to crash and hang more often.
1499 Say N if you want a sane system.
1500
1501config RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY
1502 int "How much to slow down RCU grace-period cleanup"
1503 range 0 5
1504 default 3
1505 depends on RCU_TORTURE_TEST_SLOW_CLEANUP
1506 help
1507 This option specifies the number of jiffies to wait between
1508 each rcu_node structure cleanup operation.
1509
Paul E. McKenneyb1637602010-06-02 16:21:38 -07001510config RCU_CPU_STALL_TIMEOUT
1511 int "RCU CPU stall timeout in seconds"
Paul E. McKenney6bfc09e2012-10-19 12:49:17 -07001512 depends on RCU_STALL_COMMON
Paul E. McKenneyb1637602010-06-02 16:21:38 -07001513 range 3 300
Paul E. McKenneyc8960542012-10-25 17:59:23 -07001514 default 21
Paul E. McKenneyb1637602010-06-02 16:21:38 -07001515 help
1516 If a given RCU grace period extends more than the specified
1517 number of seconds, a CPU stall warning is printed. If the
1518 RCU grace period persists, additional CPU stall warnings are
1519 printed at more widely spaced intervals.
1520
Channagoud Kadabi2eada802017-03-10 16:30:47 -08001521config RCU_PANIC_ON_STALL
1522 int "Panic on RCU Stalls"
1523 range 0 1
1524 default 0
1525 depends on RCU_STALL_COMMON
1526 help
1527 Panic if a given RCU grace period extends more than the specified
1528 number of seconds instead of just printing a CPU stall warning.
1529 This helps to collect cpu context as part of ramdumps for post
1530 mortem analysis.
1531
1532
Paul E. McKenney5c8806a2012-01-06 15:10:44 -08001533config RCU_TRACE
1534 bool "Enable tracing for RCU"
1535 depends on DEBUG_KERNEL
Paul E. McKenney52494532012-11-14 16:26:40 -08001536 select TRACE_CLOCK
Paul E. McKenney5c8806a2012-01-06 15:10:44 -08001537 help
1538 This option provides tracing in RCU which presents stats
1539 in debugfs for debugging RCU implementation.
1540
1541 Say Y here if you want to enable RCU tracing
1542 Say N if you are unsure.
1543
Paul E. McKenney1ce46ee2015-05-05 23:04:22 -07001544config RCU_EQS_DEBUG
Paul E. McKenneyeb6d5b02015-06-30 09:56:31 -07001545 bool "Provide debugging asserts for adding NO_HZ support to an arch"
Paul E. McKenney1ce46ee2015-05-05 23:04:22 -07001546 depends on DEBUG_KERNEL
1547 help
1548 This option provides consistency checks in RCU's handling of
1549 NO_HZ. These checks have proven quite helpful in detecting
1550 bugs in arch-specific NO_HZ code.
1551
1552 Say N here if you need ultimate kernel/user switch latencies
1553 Say Y if you are unsure
1554
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001555endmenu # "RCU Debugging"
1556
Tejun Heof303fcc2016-02-09 17:59:38 -05001557config DEBUG_WQ_FORCE_RR_CPU
1558 bool "Force round-robin CPU selection for unbound work items"
1559 depends on DEBUG_KERNEL
1560 default n
1561 help
1562 Workqueue used to implicitly guarantee that work items queued
1563 without explicit CPU specified are put on the local CPU. This
1564 guarantee is no longer true and while local CPU is still
1565 preferred work items may be put on foreign CPUs. Kernel
1566 parameter "workqueue.debug_force_rr_cpu" is added to force
1567 round-robin CPU selection to flush out usages which depend on the
1568 now broken guarantee. This config option enables the debug
1569 feature by default. When enabled, memory and cache locality will
1570 be impacted.
1571
Tejun Heo870d6652008-08-25 19:47:25 +09001572config DEBUG_BLOCK_EXT_DEVT
1573 bool "Force extended block device numbers and spread them"
1574 depends on DEBUG_KERNEL
1575 depends on BLOCK
Jens Axboe759f8ca2008-08-29 09:06:29 +02001576 default n
Tejun Heo870d6652008-08-25 19:47:25 +09001577 help
Tejun Heo0e11e342008-10-13 10:46:01 +02001578 BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1579 SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1580 YOU ARE DOING. Distros, please enable this and fix whatever
1581 is broken.
1582
Tejun Heo870d6652008-08-25 19:47:25 +09001583 Conventionally, block device numbers are allocated from
1584 predetermined contiguous area. However, extended block area
1585 may introduce non-contiguous block device numbers. This
1586 option forces most block device numbers to be allocated from
1587 the extended space and spreads them to discover kernel or
1588 userland code paths which assume predetermined contiguous
1589 device number allocation.
1590
Tejun Heo55dc7db2008-09-01 13:44:35 +02001591 Note that turning on this debug option shuffles all the
1592 device numbers for all IDE and SCSI devices including libata
1593 ones, so root partition specified using device number
1594 directly (via rdev or root=MAJ:MIN) won't work anymore.
1595 Textual device names (root=/dev/sdXn) will continue to work.
1596
Tejun Heo870d6652008-08-25 19:47:25 +09001597 Say N if you are unsure.
1598
Thomas Gleixner757c9892016-02-26 18:43:32 +00001599config CPU_HOTPLUG_STATE_CONTROL
1600 bool "Enable CPU hotplug state control"
1601 depends on DEBUG_KERNEL
1602 depends on HOTPLUG_CPU
1603 default n
1604 help
1605 Allows to write steps between "offline" and "online" to the CPUs
1606 sysfs target file so states can be stepped granular. This is a debug
1607 option for now as the hotplug machinery cannot be stopped and
1608 restarted at arbitrary points yet.
1609
1610 Say N if your are unsure.
1611
Akinobu Mita8d438282012-07-30 14:43:02 -07001612config NOTIFIER_ERROR_INJECTION
1613 tristate "Notifier error injection"
1614 depends on DEBUG_KERNEL
1615 select DEBUG_FS
1616 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001617 This option provides the ability to inject artificial errors to
Akinobu Mita8d438282012-07-30 14:43:02 -07001618 specified notifier chain callbacks. It is useful to test the error
1619 handling of notifier call chain failures.
1620
1621 Say N if unsure.
1622
Akinobu Mitac9d221f2010-05-26 14:43:36 -07001623config CPU_NOTIFIER_ERROR_INJECT
1624 tristate "CPU notifier error injection module"
Akinobu Mitaf5a9f522012-07-30 14:43:03 -07001625 depends on HOTPLUG_CPU && NOTIFIER_ERROR_INJECTION
Akinobu Mitac9d221f2010-05-26 14:43:36 -07001626 help
1627 This option provides a kernel module that can be used to test
Masanari Iidae41e85c2012-11-30 16:44:39 +09001628 the error handling of the cpu notifiers by injecting artificial
Akinobu Mitaf5a9f522012-07-30 14:43:03 -07001629 errors to CPU notifier chain callbacks. It is controlled through
1630 debugfs interface under /sys/kernel/debug/notifier-error-inject/cpu
1631
1632 If the notifier call chain should be failed with some events
1633 notified, write the error code to "actions/<notifier event>/error".
1634
1635 Example: Inject CPU offline error (-1 == -EPERM)
1636
1637 # cd /sys/kernel/debug/notifier-error-inject/cpu
1638 # echo -1 > actions/CPU_DOWN_PREPARE/error
1639 # echo 0 > /sys/devices/system/cpu/cpu1/online
1640 bash: echo: write error: Operation not permitted
Akinobu Mitac9d221f2010-05-26 14:43:36 -07001641
1642 To compile this code as a module, choose M here: the module will
1643 be called cpu-notifier-error-inject.
1644
1645 If unsure, say N.
1646
Akinobu Mita048b9c32012-07-30 14:43:07 -07001647config PM_NOTIFIER_ERROR_INJECT
1648 tristate "PM notifier error injection module"
1649 depends on PM && NOTIFIER_ERROR_INJECTION
1650 default m if PM_DEBUG
1651 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001652 This option provides the ability to inject artificial errors to
Akinobu Mita048b9c32012-07-30 14:43:07 -07001653 PM notifier chain callbacks. It is controlled through debugfs
1654 interface /sys/kernel/debug/notifier-error-inject/pm
1655
1656 If the notifier call chain should be failed with some events
1657 notified, write the error code to "actions/<notifier event>/error".
1658
1659 Example: Inject PM suspend error (-12 = -ENOMEM)
1660
1661 # cd /sys/kernel/debug/notifier-error-inject/pm/
1662 # echo -12 > actions/PM_SUSPEND_PREPARE/error
1663 # echo mem > /sys/power/state
1664 bash: echo: write error: Cannot allocate memory
1665
1666 To compile this code as a module, choose M here: the module will
1667 be called pm-notifier-error-inject.
1668
1669 If unsure, say N.
1670
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001671config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1672 tristate "OF reconfig notifier error injection module"
1673 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001674 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001675 This option provides the ability to inject artificial errors to
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001676 OF reconfig notifier chain callbacks. It is controlled
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001677 through debugfs interface under
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001678 /sys/kernel/debug/notifier-error-inject/OF-reconfig/
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001679
1680 If the notifier call chain should be failed with some events
1681 notified, write the error code to "actions/<notifier event>/error".
1682
1683 To compile this code as a module, choose M here: the module will
Akinobu Mitae12a95f2013-04-30 15:28:49 -07001684 be called of-reconfig-notifier-error-inject.
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001685
1686 If unsure, say N.
1687
Nikolay Aleksandrov02fff962015-11-28 13:45:28 +01001688config NETDEV_NOTIFIER_ERROR_INJECT
1689 tristate "Netdev notifier error injection module"
1690 depends on NET && NOTIFIER_ERROR_INJECTION
1691 help
1692 This option provides the ability to inject artificial errors to
1693 netdevice notifier chain callbacks. It is controlled through debugfs
1694 interface /sys/kernel/debug/notifier-error-inject/netdev
1695
1696 If the notifier call chain should be failed with some events
1697 notified, write the error code to "actions/<notifier event>/error".
1698
1699 Example: Inject netdevice mtu change error (-22 = -EINVAL)
1700
1701 # cd /sys/kernel/debug/notifier-error-inject/netdev
1702 # echo -22 > actions/NETDEV_CHANGEMTU/error
1703 # ip link set eth0 mtu 1024
1704 RTNETLINK answers: Invalid argument
1705
1706 To compile this code as a module, choose M here: the module will
1707 be called netdev-notifier-error-inject.
1708
1709 If unsure, say N.
1710
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001711config FAULT_INJECTION
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001712 bool "Fault-injection framework"
1713 depends on DEBUG_KERNEL
Akinobu Mita329409a2006-12-08 02:39:48 -08001714 help
1715 Provide fault-injection framework.
1716 For more details, see Documentation/fault-injection/.
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001717
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001718config FAILSLAB
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001719 bool "Fault-injection capability for kmalloc"
1720 depends on FAULT_INJECTION
Akinobu Mita773ff602008-12-23 19:37:01 +09001721 depends on SLAB || SLUB
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001722 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001723 Provide fault-injection capability for kmalloc.
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001724
Akinobu Mita933e3122006-12-08 02:39:45 -08001725config FAIL_PAGE_ALLOC
1726 bool "Fault-injection capabilitiy for alloc_pages()"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001727 depends on FAULT_INJECTION
Akinobu Mita933e3122006-12-08 02:39:45 -08001728 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001729 Provide fault-injection capability for alloc_pages().
Akinobu Mita933e3122006-12-08 02:39:45 -08001730
Akinobu Mitac17bb492006-12-08 02:39:46 -08001731config FAIL_MAKE_REQUEST
Dave Jones86327d12006-12-12 20:16:36 +01001732 bool "Fault-injection capability for disk IO"
Jens Axboe581d4e22008-09-14 05:56:33 -07001733 depends on FAULT_INJECTION && BLOCK
Akinobu Mitac17bb492006-12-08 02:39:46 -08001734 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001735 Provide fault-injection capability for disk IO.
Akinobu Mitac17bb492006-12-08 02:39:46 -08001736
Jens Axboe581d4e22008-09-14 05:56:33 -07001737config FAIL_IO_TIMEOUT
Takuya Yoshikawaf4d014392010-07-21 16:05:53 +09001738 bool "Fault-injection capability for faking disk interrupts"
Jens Axboe581d4e22008-09-14 05:56:33 -07001739 depends on FAULT_INJECTION && BLOCK
1740 help
1741 Provide fault-injection capability on end IO handling. This
1742 will make the block layer "forget" an interrupt as configured,
1743 thus exercising the error handling.
1744
1745 Only works with drivers that use the generic timeout handling,
1746 for others it wont do anything.
1747
Per Forlin1b676f72011-08-19 14:52:37 +02001748config FAIL_MMC_REQUEST
1749 bool "Fault-injection capability for MMC IO"
Adrien Schildknecht28ff4fd2015-11-10 20:12:19 +01001750 depends on FAULT_INJECTION_DEBUG_FS && MMC
Per Forlin1b676f72011-08-19 14:52:37 +02001751 help
1752 Provide fault-injection capability for MMC IO.
1753 This will make the mmc core return data errors. This is
1754 useful to test the error handling in the mmc block device
1755 and to test how the mmc host driver handles retries from
1756 the block device.
1757
Subhash Jadavanibb03ec52017-06-23 19:42:09 -07001758config UFS_FAULT_INJECTION
1759 bool "Fault-injection capability for UFS IO"
1760 select DEBUG_FS
1761 depends on FAULT_INJECTION && SCSI_UFSHCD
1762 help
1763 Provide fault-injection capability for UFS IO.
1764 This will make the UFS host controller driver to randomly
1765 abort ongoing commands in the host controller, update OCS
1766 field according to the injected fatal error and can also
1767 forcefully hang the command indefinitely till upper layer
1768 timeout occurs. This is useful to test error handling in
1769 the UFS contoller driver and test how the driver handles
1770 the retries from block/SCSI mid layer.
1771
Davidlohr Buesoab51fba2015-06-29 23:26:02 -07001772config FAIL_FUTEX
1773 bool "Fault-injection capability for futexes"
1774 select DEBUG_FS
1775 depends on FAULT_INJECTION && FUTEX
1776 help
1777 Provide fault-injection capability for futexes.
1778
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001779config FAULT_INJECTION_DEBUG_FS
1780 bool "Debugfs entries for fault-injection capabilities"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001781 depends on FAULT_INJECTION && SYSFS && DEBUG_FS
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001782 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001783 Enable configuration of fault-injection capabilities via debugfs.
Akinobu Mita1df49002007-02-20 13:57:56 -08001784
1785config FAULT_INJECTION_STACKTRACE_FILTER
1786 bool "stacktrace filter for fault-injection capabilities"
1787 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
Akinobu Mita6d690dc2007-05-12 10:36:53 -07001788 depends on !X86_64
Akinobu Mita1df49002007-02-20 13:57:56 -08001789 select STACKTRACE
Chen Gangdf2e1ef2014-06-23 13:22:04 -07001790 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !SCORE
Akinobu Mita1df49002007-02-20 13:57:56 -08001791 help
1792 Provide stacktrace filter for fault-injection capabilities
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07001793
Arjan van de Ven97455122008-01-25 21:08:34 +01001794config LATENCYTOP
1795 bool "Latency measuring infrastructure"
Randy Dunlap625fdca2010-08-12 12:31:21 -07001796 depends on DEBUG_KERNEL
1797 depends on STACKTRACE_SUPPORT
1798 depends on PROC_FS
Vineet Guptacc80ae32013-08-27 13:52:51 +05301799 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC
Arjan van de Ven97455122008-01-25 21:08:34 +01001800 select KALLSYMS
1801 select KALLSYMS_ALL
1802 select STACKTRACE
1803 select SCHEDSTATS
1804 select SCHED_DEBUG
Arjan van de Ven97455122008-01-25 21:08:34 +01001805 help
1806 Enable this option if you want to use the LatencyTOP tool
1807 to find out which userspace is blocking on what kernel operations.
1808
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001809source kernel/trace/Kconfig
1810
Dave Hansen881c5142013-07-01 13:04:44 -07001811menu "Runtime Testing"
1812
1813config LKDTM
1814 tristate "Linux Kernel Dump Test Tool Module"
1815 depends on DEBUG_FS
1816 depends on BLOCK
1817 default n
1818 help
1819 This module enables testing of the different dumping mechanisms by
1820 inducing system failures at predefined crash points.
1821 If you don't need it: say N
1822 Choose M here to compile this code as a module. The module will be
1823 called lkdtm.
1824
1825 Documentation on how to use the module can be found in
1826 Documentation/fault-injection/provoke-crashes.txt
1827
1828config TEST_LIST_SORT
1829 bool "Linked list sorting test"
1830 depends on DEBUG_KERNEL
1831 help
1832 Enable this to turn on 'list_sort()' function test. This test is
1833 executed only once during system boot, so affects only boot time.
1834
1835 If unsure, say N.
1836
1837config KPROBES_SANITY_TEST
1838 bool "Kprobes sanity tests"
1839 depends on DEBUG_KERNEL
1840 depends on KPROBES
1841 default n
1842 help
1843 This option provides for testing basic kprobes functionality on
1844 boot. A sample kprobe, jprobe and kretprobe are inserted and
1845 verified for functionality.
1846
1847 Say N if you are unsure.
1848
1849config BACKTRACE_SELF_TEST
1850 tristate "Self test for the backtrace code"
1851 depends on DEBUG_KERNEL
1852 default n
1853 help
1854 This option provides a kernel module that can be used to test
1855 the kernel stack backtrace code. This option is not useful
1856 for distributions or general kernels, but only for kernel
1857 developers working on architecture code.
1858
1859 Note that if you want to also test saved backtraces, you will
1860 have to enable STACKTRACE as well.
1861
1862 Say N if you are unsure.
1863
Michel Lespinasse910a7422012-10-08 16:30:39 -07001864config RBTREE_TEST
1865 tristate "Red-Black tree test"
Cody P Schafer7c993e12013-09-11 14:25:19 -07001866 depends on DEBUG_KERNEL
Michel Lespinasse910a7422012-10-08 16:30:39 -07001867 help
1868 A benchmark measuring the performance of the rbtree library.
1869 Also includes rbtree invariant checks.
1870
Michel Lespinassefff3fd82012-10-08 16:31:23 -07001871config INTERVAL_TREE_TEST
1872 tristate "Interval tree test"
1873 depends on m && DEBUG_KERNEL
Chris Wilsona88cc102014-03-17 12:21:54 +00001874 select INTERVAL_TREE
Michel Lespinassefff3fd82012-10-08 16:31:23 -07001875 help
1876 A benchmark measuring the performance of the interval tree library
1877
Greg Thelen623fd802013-11-12 15:08:34 -08001878config PERCPU_TEST
1879 tristate "Per cpu operations test"
1880 depends on m && DEBUG_KERNEL
1881 help
1882 Enable this option to build test module which validates per-cpu
1883 operations.
1884
1885 If unsure, say N.
1886
Dave Hansen881c5142013-07-01 13:04:44 -07001887config ATOMIC64_SELFTEST
1888 bool "Perform an atomic64_t self-test at boot"
1889 help
1890 Enable this option to test the atomic64_t functions at boot.
1891
1892 If unsure, say N.
1893
1894config ASYNC_RAID6_TEST
1895 tristate "Self test for hardware accelerated raid6 recovery"
1896 depends on ASYNC_RAID6_RECOV
1897 select ASYNC_MEMCPY
1898 ---help---
1899 This is a one-shot self test that permutes through the
1900 recovery of all the possible two disk failure scenarios for a
1901 N-disk array. Recovery is performed with the asynchronous
1902 raid6 recovery routines, and will optionally use an offload
1903 engine if one is available.
1904
1905 If unsure, say N.
1906
Andy Shevchenko64d1d772015-02-12 15:02:21 -08001907config TEST_HEXDUMP
1908 tristate "Test functions located in the hexdump module at runtime"
1909
Dave Hansen881c5142013-07-01 13:04:44 -07001910config TEST_STRING_HELPERS
1911 tristate "Test functions located in the string_helpers module at runtime"
1912
1913config TEST_KSTRTOX
1914 tristate "Test kstrto*() family of functions at runtime"
1915
Rasmus Villemoes707cc722015-11-06 16:30:29 -08001916config TEST_PRINTF
1917 tristate "Test printf() family of functions at runtime"
1918
David Decotigny5fd003f2016-02-19 09:24:00 -05001919config TEST_BITMAP
1920 tristate "Test bitmap_*() family of functions at runtime"
1921 default n
1922 help
1923 Enable this option to test the bitmap functions at boot.
1924
1925 If unsure, say N.
1926
Andy Shevchenkocfaff0e2016-05-30 17:40:41 +03001927config TEST_UUID
1928 tristate "Test functions located in the uuid module at runtime"
1929
Thomas Graf7e1e7762014-08-02 11:47:44 +02001930config TEST_RHASHTABLE
Geert Uytterhoeven9d6dbe12015-01-29 15:40:25 +01001931 tristate "Perform selftest on resizable hash table"
Thomas Graf7e1e7762014-08-02 11:47:44 +02001932 default n
1933 help
1934 Enable this option to test the rhashtable functions at boot.
1935
1936 If unsure, say N.
1937
George Spelvin468a9422016-05-26 22:11:51 -04001938config TEST_HASH
1939 tristate "Perform selftest on hash functions"
1940 default n
1941 help
Jason A. Donenfeldc626dde2017-01-08 13:54:00 +01001942 Enable this option to test the kernel's integer (<linux/hash.h>),
1943 string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1944 hash functions on boot (or module load).
George Spelvin468a9422016-05-26 22:11:51 -04001945
1946 This is intended to help people writing architecture-specific
1947 optimized versions. If unsure, say N.
1948
Dave Hansen881c5142013-07-01 13:04:44 -07001949endmenu # runtime tests
1950
Bernhard Kaindlf212ec42008-01-30 13:34:11 +01001951config PROVIDE_OHCI1394_DMA_INIT
Stefan Richter080de8c2008-02-28 20:54:43 +01001952 bool "Remote debugging over FireWire early on boot"
Bernhard Kaindlf212ec42008-01-30 13:34:11 +01001953 depends on PCI && X86
1954 help
1955 If you want to debug problems which hang or crash the kernel early
1956 on boot and the crashing machine has a FireWire port, you can use
1957 this feature to remotely access the memory of the crashed machine
1958 over FireWire. This employs remote DMA as part of the OHCI1394
1959 specification which is now the standard for FireWire controllers.
1960
1961 With remote DMA, you can monitor the printk buffer remotely using
1962 firescope and access all memory below 4GB using fireproxy from gdb.
1963 Even controlling a kernel debugger is possible using remote DMA.
1964
1965 Usage:
1966
1967 If ohci1394_dma=early is used as boot parameter, it will initialize
1968 all OHCI1394 controllers which are found in the PCI config space.
1969
1970 As all changes to the FireWire bus such as enabling and disabling
1971 devices cause a bus reset and thereby disable remote DMA for all
1972 devices, be sure to have the cable plugged and FireWire enabled on
1973 the debugging host before booting the debug target for debugging.
1974
1975 This code (~1k) is freed after boot. By then, the firewire stack
1976 in charge of the OHCI-1394 controllers should be used instead.
1977
1978 See Documentation/debugging-via-ohci1394.txt for more information.
Arjan van de Ven97455122008-01-25 21:08:34 +01001979
Joerg Roedel5ee00bd2009-01-09 12:14:24 +01001980config DMA_API_DEBUG
1981 bool "Enable debugging of DMA-API usage"
1982 depends on HAVE_DMA_API_DEBUG
1983 help
1984 Enable this option to debug the use of the DMA API by device drivers.
1985 With this option you will be able to detect common bugs in device
1986 drivers like double-freeing of DMA mappings or freeing mappings that
1987 were never allocated.
Dan Williams0abdd7a2014-01-21 15:48:12 -08001988
1989 This also attempts to catch cases where a page owned by DMA is
1990 accessed by the cpu in a way that could cause data corruption. For
1991 example, this enables cow_user_page() to check that the source page is
1992 not undergoing DMA.
1993
1994 This option causes a performance degradation. Use only if you want to
1995 debug device drivers and dma interactions.
1996
1997 If unsure, say N.
Jason Baron346e15b2008-08-12 16:46:19 -04001998
Valentin Rothberg8a6f0b42014-10-13 15:51:38 -07001999config TEST_LKM
Kees Cook93e9ef82014-01-23 15:54:37 -08002000 tristate "Test module loading with 'hello world' module"
2001 default n
2002 depends on m
2003 help
2004 This builds the "test_module" module that emits "Hello, world"
2005 on printk when loaded. It is designed to be used for basic
2006 evaluation of the module loading subsystem (for example when
2007 validating module verification). It lacks any extra dependencies,
2008 and will not normally be loaded by the system unless explicitly
2009 requested by name.
2010
2011 If unsure, say N.
2012
Kees Cook3e2a4c12014-01-23 15:54:38 -08002013config TEST_USER_COPY
2014 tristate "Test user/kernel boundary protections"
2015 default n
2016 depends on m
2017 help
2018 This builds the "test_user_copy" module that runs sanity checks
2019 on the copy_to/from_user infrastructure, making sure basic
2020 user/kernel boundary testing is working. If it fails to load,
2021 a regression has been detected in the user/kernel memory boundary
2022 protections.
2023
2024 If unsure, say N.
2025
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002026config TEST_BPF
2027 tristate "Test BPF filter functionality"
2028 default n
Randy Dunlap98920ba2014-05-13 09:58:44 -07002029 depends on m && NET
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002030 help
2031 This builds the "test_bpf" module that runs various test vectors
2032 against the BPF interpreter or BPF JIT compiler depending on the
2033 current setting. This is in particular useful for BPF JIT compiler
2034 development, but also to run regression tests against changes in
Alexei Starovoitov3c731eb2014-09-26 00:17:07 -07002035 the interpreter code. It also enables test stubs for eBPF maps and
2036 verifier used by user space verifier testsuite.
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002037
2038 If unsure, say N.
2039
Kees Cook0a8adf52014-07-14 14:38:12 -07002040config TEST_FIRMWARE
2041 tristate "Test firmware loading via userspace interface"
2042 default n
2043 depends on FW_LOADER
2044 help
2045 This builds the "test_firmware" module that creates a userspace
2046 interface for testing firmware loading. This can be used to
2047 control the triggering of firmware loading without needing an
2048 actual firmware-using device. The contents can be rechecked by
2049 userspace.
2050
2051 If unsure, say N.
2052
David Rileye704f932014-06-16 14:58:32 -07002053config TEST_UDELAY
2054 tristate "udelay test driver"
2055 default n
2056 help
2057 This builds the "udelay_test" module that helps to make sure
2058 that udelay() is working properly.
2059
2060 If unsure, say N.
2061
Vladimir Murzin4a207992015-04-14 15:48:27 -07002062config MEMTEST
2063 bool "Memtest"
2064 depends on HAVE_MEMBLOCK
2065 ---help---
2066 This option adds a kernel parameter 'memtest', which allows memtest
2067 to be set.
2068 memtest=0, mean disabled; -- default
2069 memtest=1, mean do 1 test pattern;
2070 ...
Vladimir Murzin8d8cfb42015-04-14 15:48:40 -07002071 memtest=17, mean do 17 test patterns.
Vladimir Murzin4a207992015-04-14 15:48:27 -07002072 If you are unsure how to answer this question, answer N.
2073
Trilok Sonibdf06f72016-04-21 15:46:42 -07002074config MEMTEST_ENABLE_DEFAULT
2075 int "Enable Memtest pattern test by default? (0-17)"
2076 range 0 17
2077 default "0"
2078 depends on MEMTEST
2079 help
2080 This option helps to select Memtest to be enabled through
2081 kernel defconfig options. Alternatively it can be enabled
2082 using memtest=<patterns> kernel command line.
2083
2084 Default value is kept as "0" so that it is kept as disabled.
2085 To enable enter any value between 1-17 range.
2086
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002087config TEST_STATIC_KEYS
2088 tristate "Test static keys"
Jason Baron579e1ac2015-07-30 03:59:44 +00002089 default n
2090 depends on m
2091 help
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002092 Test the static key interfaces.
Jason Baron579e1ac2015-07-30 03:59:44 +00002093
2094 If unsure, say N.
2095
Syed Rameez Mustafacf9c1e42013-07-15 11:52:09 -07002096config PANIC_ON_DATA_CORRUPTION
2097 bool "Cause a Kernel Panic When Data Corruption is detected"
2098 help
2099 Select this option to upgrade warnings for potentially
2100 recoverable data corruption scenarios to system-halting panics,
2101 for easier detection and debug.
2102
Kees Cook8fb63b12016-08-17 14:42:11 -07002103config BUG_ON_DATA_CORRUPTION
2104 bool "Trigger a BUG when data corruption is detected"
2105 select CONFIG_DEBUG_LIST
2106 help
2107 Select this option if the kernel should BUG when it encounters
2108 data corruption in kernel memory structures when they get checked
2109 for validity.
2110
2111 If unsure, say N.
2112
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07002113source "samples/Kconfig"
Jason Wesseldc7d5522008-04-17 20:05:37 +02002114
2115source "lib/Kconfig.kgdb"
Pekka Enberg0a4af3b2009-02-26 21:38:56 +02002116
Andrey Ryabininc6d30852016-01-20 15:00:55 -08002117source "lib/Kconfig.ubsan"
2118
Dan Williams21266be2015-11-19 18:19:29 -08002119config ARCH_HAS_DEVMEM_IS_ALLOWED
2120 bool
2121
2122config STRICT_DEVMEM
2123 bool "Filter access to /dev/mem"
2124 depends on MMU
2125 depends on ARCH_HAS_DEVMEM_IS_ALLOWED
2126 default y if TILE || PPC
2127 ---help---
2128 If this option is disabled, you allow userspace (root) access to all
2129 of memory, including kernel and userspace memory. Accidental
2130 access to this is obviously disastrous, but specific access can
2131 be used by people debugging the kernel. Note that with PAT support
2132 enabled, even in this case there are restrictions on /dev/mem
2133 use due to the cache aliasing requirements.
2134
Dan Williams90a545e2015-11-23 15:49:03 -08002135 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
2136 file only allows userspace access to PCI space and the BIOS code and
2137 data regions. This is sufficient for dosemu and X and all common
2138 users of /dev/mem.
2139
2140 If in doubt, say Y.
2141
2142config IO_STRICT_DEVMEM
2143 bool "Filter I/O access to /dev/mem"
2144 depends on STRICT_DEVMEM
Dan Williams90a545e2015-11-23 15:49:03 -08002145 ---help---
2146 If this option is disabled, you allow userspace (root) access to all
2147 io-memory regardless of whether a driver is actively using that
2148 range. Accidental access to this is obviously disastrous, but
2149 specific access can be used by people debugging kernel drivers.
2150
Dan Williams21266be2015-11-19 18:19:29 -08002151 If this option is switched on, the /dev/mem file only allows
Dan Williams90a545e2015-11-23 15:49:03 -08002152 userspace access to *idle* io-memory ranges (see /proc/iomem) This
2153 may break traditional users of /dev/mem (dosemu, legacy X, etc...)
2154 if the driver using a given range cannot be disabled.
Dan Williams21266be2015-11-19 18:19:29 -08002155
2156 If in doubt, say Y.