blob: 7f4992fd8a2edaae26de9384e439e786a150e587 [file] [log] [blame]
Thomas Gleixnerec8f24b2019-05-19 13:07:45 +01001# SPDX-License-Identifier: GPL-2.0-only
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002menu "Kernel hacking"
3
Dave Hansen604ff0d2013-07-01 13:04:49 -07004menu "printk and dmesg options"
Linus Torvalds1da177e2005-04-16 15:20:36 -07005
6config PRINTK_TIME
7 bool "Show timing information on printks"
Randy Dunlapd3b8b6e2006-12-06 20:36:38 -08008 depends on PRINTK
Linus Torvalds1da177e2005-04-16 15:20:36 -07009 help
Kay Sievers649e6ee2012-05-10 04:30:45 +020010 Selecting this option causes time stamps of the printk()
11 messages to be added to the output of the syslog() system
12 call and at the console.
13
14 The timestamp is always recorded internally, and exported
15 to /dev/kmsg. This flag just specifies if the timestamp should
16 be included, not that the timestamp is recorded.
17
18 The behavior is also controlled by the kernel command line
Mauro Carvalho Chehab8c27ceff32016-10-18 10:12:27 -020019 parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst
Linus Torvalds1da177e2005-04-16 15:20:36 -070020
Tetsuo Handa15ff2062018-12-18 06:05:04 +090021config PRINTK_CALLER
22 bool "Show caller information on printks"
23 depends on PRINTK
24 help
25 Selecting this option causes printk() to add a caller "thread id" (if
26 in task context) or a caller "processor id" (if not in task context)
27 to every message.
28
29 This option is intended for environments where multiple threads
30 concurrently call printk() for many times, for it is difficult to
31 interpret without knowing where these lines (or sometimes individual
32 line which was divided into multiple lines due to race) came from.
33
34 Since toggling after boot makes the code racy, currently there is
35 no option to enable/disable at the kernel command line parameter or
36 sysfs interface.
37
Olof Johanssona8cfdc62016-12-12 16:45:56 -080038config CONSOLE_LOGLEVEL_DEFAULT
39 int "Default console loglevel (1-15)"
40 range 1 15
41 default "7"
42 help
43 Default loglevel to determine what will be printed on the console.
44
45 Setting a default here is equivalent to passing in loglevel=<x> in
46 the kernel bootargs. loglevel=<x> continues to override whatever
47 value is specified here as well.
48
Borislav Petkov50f4d9b2016-12-19 16:23:15 -080049 Note: This does not affect the log level of un-prefixed printk()
Olof Johanssona8cfdc62016-12-12 16:45:56 -080050 usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
51 option.
52
Hans de Goede22eceb82018-06-19 13:57:26 +020053config CONSOLE_LOGLEVEL_QUIET
54 int "quiet console loglevel (1-15)"
55 range 1 15
56 default "4"
57 help
58 loglevel to use when "quiet" is passed on the kernel commandline.
59
60 When "quiet" is passed on the kernel commandline this loglevel
61 will be used as the loglevel. IOW passing "quiet" will be the
62 equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
63
Alex Elder42a9dc02014-08-06 16:09:01 -070064config MESSAGE_LOGLEVEL_DEFAULT
Mandeep Singh Baines5af5bcb2011-03-22 16:34:23 -070065 int "Default message log level (1-7)"
66 range 1 7
67 default "4"
68 help
69 Default log level for printk statements with no specified priority.
70
71 This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
72 that are auditing their logs closely may want to set it to a lower
73 priority.
74
Olof Johanssona8cfdc62016-12-12 16:45:56 -080075 Note: This does not affect what message level gets printed on the console
76 by default. To change that, use loglevel=<x> in the kernel bootargs,
77 or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.
78
Dave Hansen604ff0d2013-07-01 13:04:49 -070079config BOOT_PRINTK_DELAY
80 bool "Delay each boot printk message by N milliseconds"
81 depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
82 help
83 This build option allows you to read kernel boot messages
84 by inserting a short delay after each one. The delay is
85 specified in milliseconds on the kernel command line,
86 using "boot_delay=N".
87
88 It is likely that you would also need to use "lpj=M" to preset
89 the "loops per jiffie" value.
90 See a previous boot log for the "lpj" value to use for your
91 system, and then set "lpj=M" before setting "boot_delay=N".
92 NOTE: Using this option may adversely affect SMP systems.
93 I.e., processors other than the first one may not boot up.
94 BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
95 what it believes to be lockup conditions.
96
97config DYNAMIC_DEBUG
98 bool "Enable dynamic printk() support"
99 default n
100 depends on PRINTK
Greg Kroah-Hartman239a5792020-02-10 13:11:42 -0800101 depends on (DEBUG_FS || PROC_FS)
Dave Hansen604ff0d2013-07-01 13:04:49 -0700102 help
103
104 Compiles debug level messages into the kernel, which would not
105 otherwise be available at runtime. These messages can then be
106 enabled/disabled based on various levels of scope - per source file,
107 function, module, format string, and line number. This mechanism
108 implicitly compiles in all pr_debug() and dev_dbg() calls, which
109 enlarges the kernel text size by about 2%.
110
111 If a source file is compiled with DEBUG flag set, any
112 pr_debug() calls in it are enabled by default, but can be
113 disabled at runtime as below. Note that DEBUG flag is
114 turned on by many CONFIG_*DEBUG* options.
115
116 Usage:
117
118 Dynamic debugging is controlled via the 'dynamic_debug/control' file,
Greg Kroah-Hartman239a5792020-02-10 13:11:42 -0800119 which is contained in the 'debugfs' filesystem or procfs.
120 Thus, the debugfs or procfs filesystem must first be mounted before
121 making use of this feature.
Dave Hansen604ff0d2013-07-01 13:04:49 -0700122 We refer the control file as: <debugfs>/dynamic_debug/control. This
123 file contains a list of the debug statements that can be enabled. The
124 format for each line of the file is:
125
126 filename:lineno [module]function flags format
127
128 filename : source file of the debug statement
129 lineno : line number of the debug statement
130 module : module that contains the debug statement
131 function : function that contains the debug statement
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800132 flags : '=p' means the line is turned 'on' for printing
133 format : the format used for the debug statement
Dave Hansen604ff0d2013-07-01 13:04:49 -0700134
135 From a live system:
136
137 nullarbor:~ # cat <debugfs>/dynamic_debug/control
138 # filename:lineno [module]function flags format
139 fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
140 fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
141 fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
142
143 Example usage:
144
145 // enable the message at line 1603 of file svcsock.c
146 nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
147 <debugfs>/dynamic_debug/control
148
149 // enable all the messages in file svcsock.c
150 nullarbor:~ # echo -n 'file svcsock.c +p' >
151 <debugfs>/dynamic_debug/control
152
153 // enable all the messages in the NFS server module
154 nullarbor:~ # echo -n 'module nfsd +p' >
155 <debugfs>/dynamic_debug/control
156
157 // enable all 12 messages in the function svc_process()
158 nullarbor:~ # echo -n 'func svc_process +p' >
159 <debugfs>/dynamic_debug/control
160
161 // disable all 12 messages in the function svc_process()
162 nullarbor:~ # echo -n 'func svc_process -p' >
163 <debugfs>/dynamic_debug/control
164
Hans Holmbergf8998c22017-03-16 09:37:32 +0100165 See Documentation/admin-guide/dynamic-debug-howto.rst for additional
166 information.
Dave Hansen604ff0d2013-07-01 13:04:49 -0700167
Rasmus Villemoes57f56772019-10-15 21:07:05 +0200168config SYMBOLIC_ERRNAME
169 bool "Support symbolic error names in printf"
170 default y if PRINTK
171 help
172 If you say Y here, the kernel's printf implementation will
173 be able to print symbolic error names such as ENOSPC instead
174 of the number 28. It makes the kernel image slightly larger
175 (about 3KB), but can make the kernel logs easier to read.
176
Changbin Du2b05bb72019-12-06 17:04:03 -0800177config DEBUG_BUGVERBOSE
178 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
179 depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
180 default y
181 help
182 Say Y here to make BUG() panics output the file name and line number
183 of the BUG call as well as the EIP and oops trace. This aids
184 debugging but costs about 70-100K of memory.
185
Dave Hansen604ff0d2013-07-01 13:04:49 -0700186endmenu # "printk and dmesg options"
187
Dave Hansen6dfc0662013-07-01 13:04:46 -0700188menu "Compile-time checks and compiler options"
189
190config DEBUG_INFO
191 bool "Compile the kernel with debug info"
Linus Torvalds12b13832014-02-04 12:20:01 -0800192 depends on DEBUG_KERNEL && !COMPILE_TEST
Dave Hansen6dfc0662013-07-01 13:04:46 -0700193 help
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800194 If you say Y here the resulting kernel image will include
Dave Hansen6dfc0662013-07-01 13:04:46 -0700195 debugging info resulting in a larger kernel image.
196 This adds debug symbols to the kernel and modules (gcc -g), and
197 is needed if you intend to use kernel crashdump or binary object
198 tools like crash, kgdb, LKCD, gdb, etc on the kernel.
199 Say Y here only if you plan to debug the kernel.
200
201 If unsure, say N.
202
203config DEBUG_INFO_REDUCED
204 bool "Reduce debugging information"
205 depends on DEBUG_INFO
206 help
207 If you say Y here gcc is instructed to generate less debugging
208 information for structure types. This means that tools that
209 need full debugging information (like kgdb or systemtap) won't
210 be happy. But if you merely need debugging information to
211 resolve line numbers there is no loss. Advantage is that
212 build directory object sizes shrink dramatically over a full
213 DEBUG_INFO build and compile times are reduced too.
214 Only works with newer gcc versions.
215
Andi Kleen866ced92014-07-30 20:50:18 +0200216config DEBUG_INFO_SPLIT
217 bool "Produce split debuginfo in .dwo files"
Arnd Bergmanna687a532018-03-07 23:30:54 +0100218 depends on DEBUG_INFO
Masahiro Yamada9d937442019-02-22 16:56:09 +0900219 depends on $(cc-option,-gsplit-dwarf)
Andi Kleen866ced92014-07-30 20:50:18 +0200220 help
221 Generate debug info into separate .dwo files. This significantly
222 reduces the build directory size for builds with DEBUG_INFO,
223 because it stores the information only once on disk in .dwo
224 files instead of multiple times in object files and executables.
225 In addition the debug information is also compressed.
226
227 Requires recent gcc (4.7+) and recent gdb/binutils.
228 Any tool that packages or reads debug information would need
229 to know about the .dwo files and include them.
230 Incompatible with older versions of ccache.
231
Andi Kleenbfaf2dd2014-07-30 20:50:19 +0200232config DEBUG_INFO_DWARF4
233 bool "Generate dwarf4 debuginfo"
234 depends on DEBUG_INFO
Masahiro Yamada9d937442019-02-22 16:56:09 +0900235 depends on $(cc-option,-gdwarf-4)
Andi Kleenbfaf2dd2014-07-30 20:50:19 +0200236 help
237 Generate dwarf4 debug info. This requires recent versions
238 of gcc and gdb. It makes the debug information larger.
239 But it significantly improves the success of resolving
240 variables in gdb on optimized code.
241
Andrii Nakryikoe83b9f52019-04-02 09:49:50 -0700242config DEBUG_INFO_BTF
243 bool "Generate BTF typeinfo"
244 depends on DEBUG_INFO
245 help
246 Generate deduplicated BTF type information from DWARF debug info.
247 Turning this on expects presence of pahole tool, which will convert
248 DWARF type info into equivalent deduplicated BTF type info.
249
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800250config GDB_SCRIPTS
251 bool "Provide GDB scripts for kernel debugging"
252 depends on DEBUG_INFO
253 help
254 This creates the required links to GDB helper scripts in the
255 build directory. If you load vmlinux into gdb, the helper
256 scripts will be automatically imported by gdb as well, and
257 additional functions are available to analyze a Linux kernel
Andreas Platschek700199b02016-12-14 15:05:40 -0800258 instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
259 for further details.
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800260
Andrew Mortoncebc04b2006-08-14 22:43:18 -0700261config ENABLE_MUST_CHECK
262 bool "Enable __must_check logic"
263 default y
264 help
265 Enable the __must_check logic in the kernel build. Disable this to
266 suppress the "warning: ignoring return value of 'foo', declared with
267 attribute warn_unused_result" messages.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700268
Andi Kleen35bb5b12008-02-22 15:15:03 +0100269config FRAME_WARN
270 int "Warn for stack frames larger than (needs gcc 4.4)"
271 range 0 8192
Kees Cook0e07f662016-10-27 17:46:41 -0700272 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
Helge Deller432654d2017-09-11 21:41:43 +0200273 default 1280 if (!64BIT && PARISC)
274 default 1024 if (!64BIT && !PARISC)
Andi Kleen35bb5b12008-02-22 15:15:03 +0100275 default 2048 if 64BIT
276 help
277 Tell gcc to warn at build time for stack frames larger than this.
278 Setting this too low will cause a lot of warnings.
279 Setting it to 0 disables the warning.
280 Requires gcc 4.4
281
Randy Dunlap99657c72009-09-18 12:49:22 -0700282config STRIP_ASM_SYMS
283 bool "Strip assembler-generated symbols during link"
284 default n
285 help
286 Strip internal assembler-generated symbols during a link (symbols
287 that look like '.Lxxx') so they don't pollute the output of
288 get_wchan() and suchlike.
289
Andi Kleen1873e872012-03-28 11:51:18 -0700290config READABLE_ASM
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800291 bool "Generate readable assembler code"
292 depends on DEBUG_KERNEL
Don Mullisbf4735a2006-12-10 02:18:37 -0800293 help
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800294 Disable some compiler optimizations that tend to generate human unreadable
295 assembler output. This may make the kernel slightly slower, but it helps
296 to keep kernel developers who have to stare a lot at assembler listings
297 sane.
Don Mullisbf4735a2006-12-10 02:18:37 -0800298
Masahiro Yamadae949f4c2019-06-04 19:13:59 +0900299config HEADERS_INSTALL
300 bool "Install uapi headers to usr/include"
Don Mullisbf4735a2006-12-10 02:18:37 -0800301 depends on !UML
302 help
Masahiro Yamadae949f4c2019-06-04 19:13:59 +0900303 This option will install uapi headers (headers exported to user-space)
304 into the usr/include directory for use during the kernel build.
305 This is unneeded for building the kernel itself, but needed for some
306 user-space program samples. It is also needed by some features such
307 as uapi header sanity checks.
308
Masahiro Yamada9012d012019-05-14 15:42:25 -0700309config OPTIMIZE_INLINING
Masahiro Yamadaac7c3e42019-09-25 16:47:42 -0700310 def_bool y
Masahiro Yamada9012d012019-05-14 15:42:25 -0700311 help
312 This option determines if the kernel forces gcc to inline the functions
313 developers have marked 'inline'. Doing so takes away freedom from gcc to
314 do what it thinks is best, which is desirable for the gcc 3.x series of
315 compilers. The gcc 4.x series have a rewritten inlining algorithm and
316 enabling this option will generate a smaller kernel there. Hopefully
317 this algorithm is so good that allowing gcc 4.x and above to make the
318 decision will become the default in the future. Until then this option
319 is there to test gcc for this.
320
Sam Ravnborg91341d42008-01-21 21:31:44 +0100321config DEBUG_SECTION_MISMATCH
322 bool "Enable full Section mismatch analysis"
Sam Ravnborg91341d42008-01-21 21:31:44 +0100323 help
324 The section mismatch analysis checks if there are illegal
325 references from one section to another section.
Michael Wittene809ab02011-04-17 04:08:48 +0000326 During linktime or runtime, some sections are dropped;
327 any use of code/data previously in these sections would
Sam Ravnborg91341d42008-01-21 21:31:44 +0100328 most likely result in an oops.
Michael Wittene809ab02011-04-17 04:08:48 +0000329 In the code, functions and variables are annotated with
Paul Gortmaker0db06282013-06-19 14:53:51 -0400330 __init,, etc. (see the full list in include/linux/init.h),
Geert Uytterhoevend6fbfa42008-01-30 11:13:23 +0100331 which results in the code/data being placed in specific sections.
Michael Wittene809ab02011-04-17 04:08:48 +0000332 The section mismatch analysis is always performed after a full
333 kernel build, and enabling this option causes the following
Masahiro Yamadab7dca6d2019-07-17 15:17:57 +0900334 additional step to occur:
Michael Wittene809ab02011-04-17 04:08:48 +0000335 - Add the option -fno-inline-functions-called-once to gcc commands.
336 When inlining a function annotated with __init in a non-init
337 function, we would lose the section information and thus
Sam Ravnborg91341d42008-01-21 21:31:44 +0100338 the analysis would not catch the illegal reference.
Michael Wittene809ab02011-04-17 04:08:48 +0000339 This option tells gcc to inline less (but it does result in
340 a larger kernel).
Sam Ravnborg91341d42008-01-21 21:31:44 +0100341
Nicolas Boichat47490ec2015-10-06 09:44:42 +1030342config SECTION_MISMATCH_WARN_ONLY
343 bool "Make section mismatch errors non-fatal"
344 default y
345 help
346 If you say N here, the build process will fail if there are any
347 section mismatch, instead of just throwing warnings.
348
349 If unsure, say Y.
350
Dave Hansen6dfc0662013-07-01 13:04:46 -0700351#
352# Select this config option from the architecture Kconfig, if it
353# is preferred to always offer frame pointers as a config
354# option on the architecture (regardless of KERNEL_DEBUG):
355#
356config ARCH_WANT_FRAME_POINTERS
357 bool
Dave Hansen6dfc0662013-07-01 13:04:46 -0700358
359config FRAME_POINTER
360 bool "Compile the kernel with frame pointers"
Arnd Bergmanna687a532018-03-07 23:30:54 +0100361 depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
Dave Hansen6dfc0662013-07-01 13:04:46 -0700362 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
363 help
364 If you say Y here the resulting kernel image will be slightly
365 larger and slower, but it gives very useful debugging information
366 in case of kernel bugs. (precise oopses/stacktraces/warnings)
367
Josh Poimboeufb9ab5eb2016-02-28 22:22:42 -0600368config STACK_VALIDATION
369 bool "Compile-time stack metadata validation"
370 depends on HAVE_STACK_VALIDATION
371 default n
372 help
373 Add compile-time checks to validate stack metadata, including frame
374 pointers (if CONFIG_FRAME_POINTER is enabled). This helps ensure
375 that runtime stack traces are more reliable.
376
Josh Poimboeufee9f8fc2017-07-24 18:36:57 -0500377 This is also a prerequisite for generation of ORC unwind data, which
Josh Poimboeuf11af8472017-10-13 15:02:00 -0500378 is needed for CONFIG_UNWINDER_ORC.
Josh Poimboeufee9f8fc2017-07-24 18:36:57 -0500379
Josh Poimboeufb9ab5eb2016-02-28 22:22:42 -0600380 For more information, see
381 tools/objtool/Documentation/stack-validation.txt.
382
Dave Hansen6dfc0662013-07-01 13:04:46 -0700383config DEBUG_FORCE_WEAK_PER_CPU
384 bool "Force weak per-cpu definitions"
385 depends on DEBUG_KERNEL
386 help
387 s390 and alpha require percpu variables in modules to be
388 defined weak to work around addressing range issue which
389 puts the following two restrictions on percpu variable
390 definitions.
391
392 1. percpu symbols must be unique whether static or not
393 2. percpu variables can't be defined inside a function
394
395 To ensure that generic code follows the above rules, this
396 option forces all percpu variables to be defined as weak.
397
398endmenu # "Compiler options"
399
Changbin Du6210b642019-12-06 17:03:42 -0800400menu "Generic Kernel Debugging Instruments"
401
Dave Hansen6dfc0662013-07-01 13:04:46 -0700402config MAGIC_SYSRQ
403 bool "Magic SysRq key"
404 depends on !UML
405 help
406 If you say Y here, you will have some control over the system even
407 if the system crashes for example during kernel debugging (e.g., you
408 will be able to flush the buffer cache to disk, reboot the system
409 immediately or dump some status information). This is accomplished
410 by pressing various keys while holding SysRq (Alt+PrintScreen). It
411 also works on a serial console (on PC hardware at least), if you
412 send a BREAK and then within 5 seconds a command keypress. The
Hans Holmbergf8998c22017-03-16 09:37:32 +0100413 keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
414 Don't say Y unless you really know what this hack does.
Dave Hansen6dfc0662013-07-01 13:04:46 -0700415
Ben Hutchings8eaede42013-10-07 01:05:46 +0100416config MAGIC_SYSRQ_DEFAULT_ENABLE
417 hex "Enable magic SysRq key functions by default"
418 depends on MAGIC_SYSRQ
419 default 0x1
420 help
421 Specifies which SysRq key functions are enabled by default.
422 This may be set to 1 or 0 to enable or disable them all, or
Hans Holmbergf8998c22017-03-16 09:37:32 +0100423 to a bitmask as described in Documentation/admin-guide/sysrq.rst.
Ben Hutchings8eaede42013-10-07 01:05:46 +0100424
Felix Fietkau732dbf32016-12-22 08:31:34 +0100425config MAGIC_SYSRQ_SERIAL
426 bool "Enable magic SysRq key over serial"
427 depends on MAGIC_SYSRQ
428 default y
429 help
430 Many embedded boards have a disconnected TTL level serial which can
431 generate some garbage that can lead to spurious false sysrq detects.
432 This option allows you to decide whether you want to enable the
433 magic SysRq key.
434
Changbin Duec29a5c2019-12-06 17:04:06 -0800435config DEBUG_FS
436 bool "Debug Filesystem"
437 help
438 debugfs is a virtual file system that kernel developers use to put
439 debugging files into. Enable this option to be able to read and
440 write to these files.
441
442 For detailed documentation on the debugfs API, see
443 Documentation/filesystems/.
444
445 If unsure, say N.
446
Changbin Du6210b642019-12-06 17:03:42 -0800447source "lib/Kconfig.kgdb"
448
449source "lib/Kconfig.ubsan"
450
451endmenu
452
Adrian Bunkf346f4b2006-01-09 20:54:51 -0800453config DEBUG_KERNEL
454 bool "Kernel debugging"
455 help
456 Say Y here if you are developing drivers or trying to debug and
457 identify kernel problems.
458
Sinan Kayac66d7a22019-05-14 15:44:00 -0700459config DEBUG_MISC
460 bool "Miscellaneous debug code"
461 default DEBUG_KERNEL
462 depends on DEBUG_KERNEL
463 help
464 Say Y here if you need to enable miscellaneous debug code that should
465 be under a more specific debug option but isn't.
466
467
Dave Hansen0610c8a2013-07-01 13:04:43 -0700468menu "Memory Debugging"
David Woodhousea304e1b2007-02-12 00:52:00 -0800469
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900470source "mm/Kconfig.debug"
Ingo Molnar82f67cd2007-02-16 01:28:13 -0800471
Thomas Gleixner3ac7fe52008-04-30 00:55:01 -0700472config DEBUG_OBJECTS
473 bool "Debug object operations"
474 depends on DEBUG_KERNEL
475 help
476 If you say Y here, additional code will be inserted into the
477 kernel to track the life time of various objects and validate
478 the operations on those objects.
479
480config DEBUG_OBJECTS_SELFTEST
481 bool "Debug objects selftest"
482 depends on DEBUG_OBJECTS
483 help
484 This enables the selftest of the object debug code.
485
486config DEBUG_OBJECTS_FREE
487 bool "Debug objects in freed memory"
488 depends on DEBUG_OBJECTS
489 help
490 This enables checks whether a k/v free operation frees an area
491 which contains an object which has not been deactivated
492 properly. This can make kmalloc/kfree-intensive workloads
493 much slower.
494
Thomas Gleixnerc6f3a972008-04-30 00:55:03 -0700495config DEBUG_OBJECTS_TIMERS
496 bool "Debug timer objects"
497 depends on DEBUG_OBJECTS
498 help
499 If you say Y here, additional code will be inserted into the
500 timer routines to track the life time of timer objects and
501 validate the timer operations.
502
Thomas Gleixnerdc186ad2009-11-16 01:09:48 +0900503config DEBUG_OBJECTS_WORK
504 bool "Debug work objects"
505 depends on DEBUG_OBJECTS
506 help
507 If you say Y here, additional code will be inserted into the
508 work queue routines to track the life time of work objects and
509 validate the work operations.
510
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400511config DEBUG_OBJECTS_RCU_HEAD
512 bool "Debug RCU callbacks objects"
Mathieu Desnoyersfc2ecf72011-02-23 09:42:14 -0800513 depends on DEBUG_OBJECTS
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400514 help
515 Enable this to turn on debugging of RCU list heads (call_rcu() usage).
516
Tejun Heoe2852ae2010-10-26 14:23:05 -0700517config DEBUG_OBJECTS_PERCPU_COUNTER
518 bool "Debug percpu counter objects"
519 depends on DEBUG_OBJECTS
520 help
521 If you say Y here, additional code will be inserted into the
522 percpu counter routines to track the life time of percpu counter
523 objects and validate the percpu counter operations.
524
Ingo Molnar3ae70202008-11-26 10:02:00 +0100525config DEBUG_OBJECTS_ENABLE_DEFAULT
526 int "debug_objects bootup default value (0-1)"
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800527 range 0 1
528 default "1"
529 depends on DEBUG_OBJECTS
530 help
531 Debug objects boot parameter default value
Ingo Molnar3ae70202008-11-26 10:02:00 +0100532
Linus Torvalds1da177e2005-04-16 15:20:36 -0700533config DEBUG_SLAB
Andrew Morton4a2f0ac2006-03-25 03:07:22 -0800534 bool "Debug slab memory allocations"
Levin, Alexander (Sasha Levin)4675ff02017-11-15 17:36:02 -0800535 depends on DEBUG_KERNEL && SLAB
Linus Torvalds1da177e2005-04-16 15:20:36 -0700536 help
537 Say Y here to have the kernel do limited verification on memory
538 allocation as well as poisoning memory on free to catch use of freed
539 memory. This can make kmalloc/kfree-intensive workloads much slower.
540
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700541config SLUB_DEBUG_ON
542 bool "SLUB debugging on by default"
Levin, Alexander (Sasha Levin)4675ff02017-11-15 17:36:02 -0800543 depends on SLUB && SLUB_DEBUG
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700544 default n
545 help
546 Boot with debugging on by default. SLUB boots by default with
547 the runtime debug capabilities switched off. Enabling this is
548 equivalent to specifying the "slub_debug" parameter on boot.
549 There is no support for more fine grained debug control like
550 possible with slub_debug=xxx. SLUB debugging may be switched
551 off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
552 "slub_debug=-".
553
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800554config SLUB_STATS
555 default n
556 bool "Enable SLUB performance statistics"
Christoph Lameterab4d5ed2010-10-05 13:57:26 -0500557 depends on SLUB && SYSFS
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800558 help
559 SLUB statistics are useful to debug SLUBs allocation behavior in
560 order find ways to optimize the allocator. This should never be
561 enabled for production use since keeping statistics slows down
562 the allocator by a few percentage points. The slabinfo command
563 supports the determination of the most active slabs to figure
564 out which slabs are relevant to a particular load.
565 Try running: slabinfo -DA
566
Catalin Marinasb69ec422012-10-08 16:28:11 -0700567config HAVE_DEBUG_KMEMLEAK
568 bool
569
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100570config DEBUG_KMEMLEAK
571 bool "Kernel memory leak detector"
Kees Cook525c1f92013-01-16 18:54:16 -0800572 depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
Catalin Marinas79e0d9b2011-04-27 17:06:19 +0100573 select DEBUG_FS
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100574 select STACKTRACE if STACKTRACE_SUPPORT
575 select KALLSYMS
Randy Dunlapb60e26a2009-11-06 15:33:45 -0800576 select CRC32
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100577 help
578 Say Y here if you want to enable the memory leak
579 detector. The memory allocation/freeing is traced in a way
580 similar to the Boehm's conservative garbage collector, the
581 difference being that the orphan objects are not freed but
582 only shown in /sys/kernel/debug/kmemleak. Enabling this
583 feature will introduce an overhead to memory
Andreas Platschek700199b02016-12-14 15:05:40 -0800584 allocations. See Documentation/dev-tools/kmemleak.rst for more
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100585 details.
586
Catalin Marinasbf96d1e2009-06-23 14:40:27 +0100587 Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
588 of finding leaks due to the slab objects poisoning.
589
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100590 In order to access the kmemleak file, debugfs needs to be
591 mounted (usually at /sys/kernel/debug).
592
Catalin Marinasc5665862019-09-23 15:34:05 -0700593config DEBUG_KMEMLEAK_MEM_POOL_SIZE
594 int "Kmemleak memory pool size"
Catalin Marinasa9d90582009-06-25 10:16:11 +0100595 depends on DEBUG_KMEMLEAK
Qian Caic59180a2019-09-23 15:34:10 -0700596 range 200 1000000
Nicolas Boichatb751c522019-09-23 15:33:55 -0700597 default 16000
Catalin Marinasa9d90582009-06-25 10:16:11 +0100598 help
599 Kmemleak must track all the memory allocations to avoid
600 reporting false positives. Since memory may be allocated or
Catalin Marinasc5665862019-09-23 15:34:05 -0700601 freed before kmemleak is fully initialised, use a static pool
602 of metadata objects to track such callbacks. After kmemleak is
603 fully initialised, this memory pool acts as an emergency one
604 if slab allocations fail.
Catalin Marinasa9d90582009-06-25 10:16:11 +0100605
Catalin Marinas0822ee42009-06-11 13:24:14 +0100606config DEBUG_KMEMLEAK_TEST
607 tristate "Simple test for the kernel memory leak detector"
Daniel Baluta97182692011-04-04 15:06:44 -0700608 depends on DEBUG_KMEMLEAK && m
Catalin Marinas0822ee42009-06-11 13:24:14 +0100609 help
Daniel Baluta97182692011-04-04 15:06:44 -0700610 This option enables a module that explicitly leaks memory.
Catalin Marinas0822ee42009-06-11 13:24:14 +0100611
612 If unsure, say N.
613
Jason Baronab0155a2010-07-19 11:54:17 +0100614config DEBUG_KMEMLEAK_DEFAULT_OFF
615 bool "Default kmemleak to off"
616 depends on DEBUG_KMEMLEAK
617 help
618 Say Y here to disable kmemleak by default. It can then be enabled
619 on the command line via kmemleak=on.
620
Sri Krishna chowdaryd53ce042018-12-28 00:38:54 -0800621config DEBUG_KMEMLEAK_AUTO_SCAN
622 bool "Enable kmemleak auto scan thread on boot up"
623 default y
624 depends on DEBUG_KMEMLEAK
625 help
626 Depending on the cpu, kmemleak scan may be cpu intensive and can
627 stall user tasks at times. This option enables/disables automatic
628 kmemleak scan at boot up.
629
630 Say N here to disable kmemleak auto scan thread to stop automatic
631 scanning. Disabling this option disables automatic reporting of
632 memory leaks.
633
634 If unsure, say Y.
635
Dave Hansen0610c8a2013-07-01 13:04:43 -0700636config DEBUG_STACK_USAGE
637 bool "Stack utilization instrumentation"
Helge Deller6c31da32016-03-19 17:54:10 +0100638 depends on DEBUG_KERNEL && !IA64
Dave Hansen0610c8a2013-07-01 13:04:43 -0700639 help
640 Enables the display of the minimum amount of free stack which each
641 task has ever had available in the sysrq-T and sysrq-P debug output.
642
643 This option will slow down process creation somewhat.
644
Changbin Dudc9b9632019-12-06 17:03:57 -0800645config SCHED_STACK_END_CHECK
646 bool "Detect stack corruption on calls to schedule()"
647 depends on DEBUG_KERNEL
648 default n
649 help
650 This option checks for a stack overrun on calls to schedule().
651 If the stack end location is found to be over written always panic as
652 the content of the corrupted region can no longer be trusted.
653 This is to ensure no erroneous behaviour occurs which could result in
654 data corruption or a sporadic crash at a later stage once the region
655 is examined. The runtime overhead introduced is minimal.
656
Dave Hansen0610c8a2013-07-01 13:04:43 -0700657config DEBUG_VM
658 bool "Debug VM"
659 depends on DEBUG_KERNEL
660 help
661 Enable this to turn on extended checks in the virtual-memory system
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800662 that may impact performance.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700663
664 If unsure, say N.
665
Davidlohr Bueso4f115142014-06-04 16:06:46 -0700666config DEBUG_VM_VMACACHE
667 bool "Debug VMA caching"
668 depends on DEBUG_VM
669 help
670 Enable this to turn on VMA caching debug information. Doing so
671 can cause significant overhead, so only enable it in non-production
672 environments.
673
674 If unsure, say N.
675
Dave Hansen0610c8a2013-07-01 13:04:43 -0700676config DEBUG_VM_RB
677 bool "Debug VM red-black trees"
678 depends on DEBUG_VM
679 help
Davidlohr Buesoa663dad2014-04-18 15:07:22 -0700680 Enable VM red-black tree debugging information and extra validations.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700681
682 If unsure, say N.
683
Kirill A. Shutemov95ad9752016-01-15 16:51:21 -0800684config DEBUG_VM_PGFLAGS
685 bool "Debug page-flags operations"
686 depends on DEBUG_VM
687 help
688 Enables extra validation on page flags operations.
689
690 If unsure, say N.
691
Laura Abbottfa5b6ec2017-01-10 13:35:40 -0800692config ARCH_HAS_DEBUG_VIRTUAL
693 bool
694
Dave Hansen0610c8a2013-07-01 13:04:43 -0700695config DEBUG_VIRTUAL
696 bool "Debug VM translations"
Laura Abbottfa5b6ec2017-01-10 13:35:40 -0800697 depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL
Dave Hansen0610c8a2013-07-01 13:04:43 -0700698 help
699 Enable some costly sanity checks in virtual to page code. This can
700 catch mistakes with virt_to_page() and friends.
701
702 If unsure, say N.
703
704config DEBUG_NOMMU_REGIONS
705 bool "Debug the global anon/private NOMMU mapping region tree"
706 depends on DEBUG_KERNEL && !MMU
707 help
708 This option causes the global tree of anonymous and private mapping
709 regions to be regularly checked for invalid topology.
710
711config DEBUG_MEMORY_INIT
712 bool "Debug memory initialisation" if EXPERT
713 default !EXPERT
714 help
715 Enable this for additional checks during memory initialisation.
716 The sanity checks verify aspects of the VM such as the memory model
717 and other information provided by the architecture. Verbose
718 information will be printed at KERN_DEBUG loglevel depending
719 on the mminit_loglevel= command-line option.
720
721 If unsure, say Y
722
723config MEMORY_NOTIFIER_ERROR_INJECT
724 tristate "Memory hotplug notifier error injection module"
725 depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
726 help
727 This option provides the ability to inject artificial errors to
728 memory hotplug notifier chain callbacks. It is controlled through
729 debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
730
731 If the notifier call chain should be failed with some events
732 notified, write the error code to "actions/<notifier event>/error".
733
734 Example: Inject memory hotplug offline error (-12 == -ENOMEM)
735
736 # cd /sys/kernel/debug/notifier-error-inject/memory
737 # echo -12 > actions/MEM_GOING_OFFLINE/error
738 # echo offline > /sys/devices/system/memory/memoryXXX/state
739 bash: echo: write error: Cannot allocate memory
740
741 To compile this code as a module, choose M here: the module will
742 be called memory-notifier-error-inject.
743
744 If unsure, say N.
745
746config DEBUG_PER_CPU_MAPS
747 bool "Debug access to per_cpu maps"
748 depends on DEBUG_KERNEL
749 depends on SMP
750 help
751 Say Y to verify that the per_cpu map being accessed has
752 been set up. This adds a fair amount of code to kernel memory
753 and decreases performance.
754
755 Say N if unsure.
756
757config DEBUG_HIGHMEM
758 bool "Highmem debugging"
759 depends on DEBUG_KERNEL && HIGHMEM
760 help
Geert Uytterhoevenb1357c92014-04-14 18:55:50 +0200761 This option enables additional error checking for high memory
762 systems. Disable for production systems.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700763
764config HAVE_DEBUG_STACKOVERFLOW
765 bool
766
767config DEBUG_STACKOVERFLOW
768 bool "Check for stack overflows"
769 depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
770 ---help---
771 Say Y here if you want to check for overflows of kernel, IRQ
Borislav Petkovedb0ec02015-01-25 19:50:34 +0100772 and exception stacks (if your architecture uses them). This
Dave Hansen0610c8a2013-07-01 13:04:43 -0700773 option will show detailed messages if free stack space drops
774 below a certain limit.
775
776 These kinds of bugs usually occur when call-chains in the
777 kernel get too deep, especially when interrupts are
778 involved.
779
780 Use this in cases where you see apparently random memory
781 corruption, especially if it appears in 'struct thread_info'
782
783 If in doubt, say "N".
784
Andrey Ryabinin0b24bec2015-02-13 14:39:17 -0800785source "lib/Kconfig.kasan"
786
Dave Hansen0610c8a2013-07-01 13:04:43 -0700787endmenu # "Memory Debugging"
788
Linus Torvalds1da177e2005-04-16 15:20:36 -0700789config DEBUG_SHIRQ
790 bool "Debug shared IRQ handlers"
Martin Schwidefsky0244ad02013-08-30 09:39:53 +0200791 depends on DEBUG_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700792 help
793 Enable this to generate a spurious interrupt as soon as a shared
794 interrupt handler is registered, and just before one is deregistered.
795 Drivers ought to be able to handle interrupts coming in at those
796 points; some don't and need to be caught.
797
Changbin Duf43a2892019-12-06 17:03:54 -0800798menu "Debug Oops, Lockups and Hangs"
799
800config PANIC_ON_OOPS
801 bool "Panic on Oops"
802 help
803 Say Y here to enable the kernel to panic when it oopses. This
804 has the same effect as setting oops=panic on the kernel command
805 line.
806
807 This feature is useful to ensure that the kernel does not do
808 anything erroneous after an oops which could result in data
809 corruption or other issues.
810
811 Say N if unsure.
812
813config PANIC_ON_OOPS_VALUE
814 int
815 range 0 1
816 default 0 if !PANIC_ON_OOPS
817 default 1 if PANIC_ON_OOPS
818
819config PANIC_TIMEOUT
820 int "panic timeout"
821 default 0
822 help
823 Set the timeout value (in seconds) until a reboot occurs when the
824 the kernel panics. If n = 0, then we wait forever. A timeout
825 value n > 0 will wait n seconds before rebooting, while a timeout
826 value n < 0 will reboot immediately.
Dave Hansen92aef8fb2013-07-01 13:04:50 -0700827
Linus Torvalds1da177e2005-04-16 15:20:36 -0700828config LOCKUP_DETECTOR
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700829 bool
830
831config SOFTLOCKUP_DETECTOR
832 bool "Detect Soft Lockups"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700833 depends on DEBUG_KERNEL && !S390
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700834 select LOCKUP_DETECTOR
Linus Torvalds1da177e2005-04-16 15:20:36 -0700835 help
836 Say Y here to enable the kernel to act as a watchdog to detect
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700837 soft lockups.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700838
839 Softlockups are bugs that cause the kernel to loop in kernel
840 mode for more than 20 seconds, without giving other tasks a
841 chance to run. The current stack trace is displayed upon
842 detection and the system will stay locked up.
843
Randy Dunlap5f00ae02018-04-10 16:32:51 -0700844config BOOTPARAM_SOFTLOCKUP_PANIC
845 bool "Panic (Reboot) On Soft Lockups"
846 depends on SOFTLOCKUP_DETECTOR
847 help
848 Say Y here to enable the kernel to panic on "soft lockups",
849 which are bugs that cause the kernel to loop in kernel
850 mode for more than 20 seconds (configurable using the watchdog_thresh
851 sysctl), without giving other tasks a chance to run.
852
853 The panic can be used in combination with panic_timeout,
854 to cause the system to reboot automatically after a
855 lockup has been detected. This feature is useful for
856 high-availability systems that have uptime guarantees and
857 where a lockup must be resolved ASAP.
858
859 Say N if unsure.
860
861config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
862 int
863 depends on SOFTLOCKUP_DETECTOR
864 range 0 1
865 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
866 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
867
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700868config HARDLOCKUP_DETECTOR_PERF
869 bool
870 select SOFTLOCKUP_DETECTOR
871
872#
Thomas Gleixner7edaeb62017-08-15 09:50:13 +0200873# Enables a timestamp based low pass filter to compensate for perf based
874# hard lockup detection which runs too fast due to turbo modes.
875#
876config HARDLOCKUP_CHECK_TIMESTAMP
877 bool
878
879#
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700880# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
881# lockup detector rather than the perf based detector.
882#
883config HARDLOCKUP_DETECTOR
884 bool "Detect Hard Lockups"
885 depends on DEBUG_KERNEL && !S390
886 depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH
887 select LOCKUP_DETECTOR
888 select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
889 select HARDLOCKUP_DETECTOR_ARCH if HAVE_HARDLOCKUP_DETECTOR_ARCH
890 help
891 Say Y here to enable the kernel to act as a watchdog to detect
892 hard lockups.
893
Linus Torvalds1da177e2005-04-16 15:20:36 -0700894 Hardlockups are bugs that cause the CPU to loop in kernel mode
895 for more than 10 seconds, without letting other interrupts have a
896 chance to run. The current stack trace is displayed upon detection
897 and the system will stay locked up.
898
Linus Torvalds1da177e2005-04-16 15:20:36 -0700899config BOOTPARAM_HARDLOCKUP_PANIC
900 bool "Panic (Reboot) On Hard Lockups"
901 depends on HARDLOCKUP_DETECTOR
902 help
903 Say Y here to enable the kernel to panic on "hard lockups",
904 which are bugs that cause the kernel to loop in kernel
905 mode with interrupts disabled for more than 10 seconds (configurable
906 using the watchdog_thresh sysctl).
907
908 Say N if unsure.
909
910config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
911 int
912 depends on HARDLOCKUP_DETECTOR
913 range 0 1
914 default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
915 default 1 if BOOTPARAM_HARDLOCKUP_PANIC
916
Linus Torvalds1da177e2005-04-16 15:20:36 -0700917config DETECT_HUNG_TASK
918 bool "Detect Hung Tasks"
919 depends on DEBUG_KERNEL
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700920 default SOFTLOCKUP_DETECTOR
Linus Torvalds1da177e2005-04-16 15:20:36 -0700921 help
922 Say Y here to enable the kernel to detect "hung tasks",
923 which are bugs that cause the task to be stuck in
Vivien Didelot96b03ab2016-09-22 16:55:13 -0400924 uninterruptible "D" state indefinitely.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700925
926 When a hung task is detected, the kernel will print the
927 current stack trace (which you should report), but the
928 task will stay in uninterruptible state. If lockdep is
929 enabled then all held locks will also be reported. This
930 feature has negligible overhead.
Al Viro871751e2006-03-25 03:06:39 -0800931
932config DEFAULT_HUNG_TASK_TIMEOUT
933 int "Default timeout for hung task detection (in seconds)"
934 depends on DETECT_HUNG_TASK
Linus Torvalds1da177e2005-04-16 15:20:36 -0700935 default 120
936 help
Ingo Molnar8637c092006-07-03 00:24:38 -0700937 This option controls the default timeout (in seconds) used
Linus Torvalds1da177e2005-04-16 15:20:36 -0700938 to determine when a task has become non-responsive and should
939 be considered hung.
940
941 It can be adjusted at runtime via the kernel.hung_task_timeout_secs
942 sysctl or by writing a value to
943 /proc/sys/kernel/hung_task_timeout_secs.
944
Ingo Molnare7eebaf2006-06-27 02:54:55 -0700945 A timeout of 0 disables the check. The default is two minutes.
946 Keeping the default should be fine in most cases.
Ingo Molnare7eebaf2006-06-27 02:54:55 -0700947
948config BOOTPARAM_HUNG_TASK_PANIC
949 bool "Panic (Reboot) On Hung Tasks"
950 depends on DETECT_HUNG_TASK
951 help
952 Say Y here to enable the kernel to panic on "hung tasks",
953 which are bugs that cause the kernel to leave a task stuck
954 in uninterruptible "D" state.
955
956 The panic can be used in combination with panic_timeout,
Thomas Gleixner61a87122006-06-27 02:54:56 -0700957 to cause the system to reboot automatically after a
958 hung task has been detected. This feature is useful for
Roman Zippela1583d32006-06-27 02:55:00 -0700959 high-availability systems that have uptime guarantees and
Thomas Gleixner61a87122006-06-27 02:54:56 -0700960 where a hung tasks must be resolved ASAP.
961
962 Say N if unsure.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700963
Hugh Dickins048c8bc2006-11-01 05:44:54 +1100964config BOOTPARAM_HUNG_TASK_PANIC_VALUE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700965 int
966 depends on DETECT_HUNG_TASK
967 range 0 1
968 default 0 if !BOOTPARAM_HUNG_TASK_PANIC
969 default 1 if BOOTPARAM_HUNG_TASK_PANIC
970
Tejun Heo82607adc2015-12-08 11:28:04 -0500971config WQ_WATCHDOG
972 bool "Detect Workqueue Stalls"
973 depends on DEBUG_KERNEL
974 help
975 Say Y here to enable stall detection on workqueues. If a
976 worker pool doesn't make forward progress on a pending work
977 item for over a given amount of time, 30s by default, a
978 warning message is printed along with dump of workqueue
979 state. This can be configured through kernel parameter
980 "workqueue.watchdog_thresh" and its sysfs counterpart.
981
Dave Hansen92aef8fb2013-07-01 13:04:50 -0700982endmenu # "Debug lockups and hangs"
983
Changbin Duebebdd02019-12-06 17:04:00 -0800984menu "Scheduler Debugging"
Jason Baron5800dc32013-11-25 23:23:04 +0000985
Linus Torvalds1da177e2005-04-16 15:20:36 -0700986config SCHED_DEBUG
987 bool "Collect scheduler debugging info"
988 depends on DEBUG_KERNEL && PROC_FS
989 default y
990 help
991 If you say Y here, the /proc/sched_debug file will be provided
992 that can help debug the scheduler. The runtime overhead of this
993 option is minimal.
994
Naveen N. Raof6db8342015-06-25 23:53:37 +0530995config SCHED_INFO
996 bool
997 default n
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
Changbin Duebebdd02019-12-06 17:04:00 -08001012endmenu
Aaron Tomlin0d9e2632014-09-12 14:16:19 +01001013
John Stultz3c17ad12015-03-11 21:16:32 -07001014config DEBUG_TIMEKEEPING
1015 bool "Enable extra timekeeping sanity checking"
1016 help
1017 This option will enable additional timekeeping sanity checks
1018 which may be helpful when diagnosing issues where timekeeping
1019 problems are suspected.
1020
1021 This may include checks in the timekeeping hotpaths, so this
1022 option may have a (very small) performance impact to some
1023 workloads.
1024
1025 If unsure, say N.
1026
Linus Torvalds1da177e2005-04-16 15:20:36 -07001027config DEBUG_PREEMPT
1028 bool "Debug preemptible kernel"
Sebastian Andrzej Siewior9f472862019-10-15 21:18:19 +02001029 depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001030 default y
1031 help
1032 If you say Y here then the kernel will use a debug variant of the
1033 commonly used smp_processor_id() function and will print warnings
1034 if kernel code uses it in a preemption-unsafe way. Also, the kernel
1035 will detect preemption count underflows.
1036
Dave Hansen9eade162013-07-01 13:04:47 -07001037menu "Lock Debugging (spinlocks, mutexes, etc...)"
1038
Waiman Longf07cbeb2018-03-30 17:27:59 -04001039config LOCK_DEBUGGING_SUPPORT
1040 bool
1041 depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1042 default y
1043
Waiman Long19193bc2018-03-30 17:28:00 -04001044config PROVE_LOCKING
1045 bool "Lock debugging: prove locking correctness"
1046 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1047 select LOCKDEP
1048 select DEBUG_SPINLOCK
1049 select DEBUG_MUTEXES
1050 select DEBUG_RT_MUTEXES if RT_MUTEXES
Waiman Longc71fd892019-05-20 16:59:00 -04001051 select DEBUG_RWSEMS
Waiman Long19193bc2018-03-30 17:28:00 -04001052 select DEBUG_WW_MUTEX_SLOWPATH
1053 select DEBUG_LOCK_ALLOC
1054 select TRACE_IRQFLAGS
1055 default n
1056 help
1057 This feature enables the kernel to prove that all locking
1058 that occurs in the kernel runtime is mathematically
1059 correct: that under no circumstance could an arbitrary (and
1060 not yet triggered) combination of observed locking
1061 sequences (on an arbitrary number of CPUs, running an
1062 arbitrary number of tasks and interrupt contexts) cause a
1063 deadlock.
1064
1065 In short, this feature enables the kernel to report locking
1066 related deadlocks before they actually occur.
1067
1068 The proof does not depend on how hard and complex a
1069 deadlock scenario would be to trigger: how many
1070 participant CPUs, tasks and irq-contexts would be needed
1071 for it to trigger. The proof also does not depend on
1072 timing: if a race and a resulting deadlock is possible
1073 theoretically (no matter how unlikely the race scenario
1074 is), it will be proven so and will immediately be
1075 reported by the kernel (once the event is observed that
1076 makes the deadlock theoretically possible).
1077
1078 If a deadlock is impossible (i.e. the locking rules, as
1079 observed by the kernel, are mathematically correct), the
1080 kernel reports nothing.
1081
1082 NOTE: this feature can also be enabled for rwlocks, mutexes
1083 and rwsems - in which case all dependencies between these
1084 different locking variants are observed and mapped too, and
1085 the proof of observed correctness is also maintained for an
1086 arbitrary combination of these separate locking variants.
1087
Mauro Carvalho Chehab387b1462019-04-10 08:32:41 -03001088 For more details, see Documentation/locking/lockdep-design.rst.
Waiman Long19193bc2018-03-30 17:28:00 -04001089
1090config LOCK_STAT
1091 bool "Lock usage statistics"
1092 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1093 select LOCKDEP
1094 select DEBUG_SPINLOCK
1095 select DEBUG_MUTEXES
1096 select DEBUG_RT_MUTEXES if RT_MUTEXES
1097 select DEBUG_LOCK_ALLOC
1098 default n
1099 help
1100 This feature enables tracking lock contention points
1101
Mauro Carvalho Chehab387b1462019-04-10 08:32:41 -03001102 For more details, see Documentation/locking/lockstat.rst
Waiman Long19193bc2018-03-30 17:28:00 -04001103
1104 This also enables lock events required by "perf lock",
1105 subcommand of perf.
1106 If you want to use "perf lock", you also need to turn on
1107 CONFIG_EVENT_TRACING.
1108
1109 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
1110 (CONFIG_LOCKDEP defines "acquire" and "release" events.)
1111
Linus Torvalds1da177e2005-04-16 15:20:36 -07001112config DEBUG_RT_MUTEXES
1113 bool "RT Mutex debugging, deadlock detection"
1114 depends on DEBUG_KERNEL && RT_MUTEXES
1115 help
1116 This allows rt mutex semantics violations and rt mutex related
1117 deadlocks (lockups) to be detected and reported automatically.
1118
Linus Torvalds1da177e2005-04-16 15:20:36 -07001119config DEBUG_SPINLOCK
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001120 bool "Spinlock and rw-lock debugging: basic checks"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001121 depends on DEBUG_KERNEL
Raghavendra K Te335e3e2012-03-22 15:25:08 +05301122 select UNINLINE_SPIN_UNLOCK
Linus Torvalds1da177e2005-04-16 15:20:36 -07001123 help
1124 Say Y here and build SMP to catch missing spinlock initialization
1125 and certain other kinds of spinlock errors commonly made. This is
1126 best used in conjunction with the NMI watchdog so that spinlock
1127 deadlocks are also debuggable.
1128
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001129config DEBUG_MUTEXES
1130 bool "Mutex debugging: basic checks"
1131 depends on DEBUG_KERNEL
1132 help
1133 This feature allows mutex semantics violations to be detected and
1134 reported.
1135
Daniel Vetter23010022013-06-20 13:31:17 +02001136config DEBUG_WW_MUTEX_SLOWPATH
1137 bool "Wait/wound mutex debugging: Slowpath testing"
Waiman Longf07cbeb2018-03-30 17:27:59 -04001138 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Daniel Vetter23010022013-06-20 13:31:17 +02001139 select DEBUG_LOCK_ALLOC
1140 select DEBUG_SPINLOCK
1141 select DEBUG_MUTEXES
1142 help
1143 This feature enables slowpath testing for w/w mutex users by
1144 injecting additional -EDEADLK wound/backoff cases. Together with
1145 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
1146 will test all possible w/w mutex interface abuse with the
1147 exception of simply not acquiring all the required locks.
Rob Clark4d692372014-08-27 11:19:26 -04001148 Note that this feature can introduce significant overhead, so
1149 it really should not be enabled in a production or distro kernel,
1150 even a debug kernel. If you are a driver writer, enable it. If
1151 you are a distro, do not.
Daniel Vetter23010022013-06-20 13:31:17 +02001152
Waiman Long5149cba2018-03-30 17:27:58 -04001153config DEBUG_RWSEMS
1154 bool "RW Semaphore debugging: basic checks"
Waiman Longc71fd892019-05-20 16:59:00 -04001155 depends on DEBUG_KERNEL
Waiman Long5149cba2018-03-30 17:27:58 -04001156 help
Waiman Longc71fd892019-05-20 16:59:00 -04001157 This debugging feature allows mismatched rw semaphore locks
1158 and unlocks to be detected and reported.
Waiman Long5149cba2018-03-30 17:27:58 -04001159
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001160config DEBUG_LOCK_ALLOC
1161 bool "Lock debugging: detect incorrect freeing of live locks"
Waiman Longf07cbeb2018-03-30 17:27:59 -04001162 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001163 select DEBUG_SPINLOCK
1164 select DEBUG_MUTEXES
Peter Zijlstraf5694782016-09-19 12:15:37 +02001165 select DEBUG_RT_MUTEXES if RT_MUTEXES
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001166 select LOCKDEP
1167 help
1168 This feature will check whether any held lock (spinlock, rwlock,
1169 mutex or rwsem) is incorrectly freed by the kernel, via any of the
1170 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
1171 vfree(), etc.), whether a live lock is incorrectly reinitialized via
1172 spin_lock_init()/mutex_init()/etc., or whether there is any lock
1173 held during task exit.
1174
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001175config LOCKDEP
1176 bool
Waiman Longf07cbeb2018-03-30 17:27:59 -04001177 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001178 select STACKTRACE
Stefan Agnerf9b58e82018-09-30 23:02:33 +01001179 select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001180 select KALLSYMS
1181 select KALLSYMS_ALL
1182
Daniel Jordan395102d2017-04-10 11:50:52 -04001183config LOCKDEP_SMALL
1184 bool
1185
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001186config DEBUG_LOCKDEP
1187 bool "Lock dependency engine debugging"
Adrian Bunk517e7aa2006-07-14 00:24:32 -07001188 depends on DEBUG_KERNEL && LOCKDEP
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001189 help
1190 If you say Y here, the lock dependency engine will do
1191 additional runtime checks to debug itself, at the price
1192 of more runtime overhead.
1193
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001194config DEBUG_ATOMIC_SLEEP
1195 bool "Sleep inside atomic section checking"
Frederic Weisbeckere8f7c702011-06-08 01:51:02 +02001196 select PREEMPT_COUNT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001197 depends on DEBUG_KERNEL
Christoph Hellwig87a4c372018-07-31 13:39:32 +02001198 depends on !ARCH_NO_PREEMPT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001199 help
1200 If you say Y here, various routines which may sleep will become very
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001201 noisy if they are called inside atomic sections: when a spinlock is
1202 held, inside an rcu read side critical section, inside preempt disabled
1203 sections, inside an interrupt, etc...
Linus Torvalds1da177e2005-04-16 15:20:36 -07001204
Ingo Molnarcae2ed92006-07-03 00:24:48 -07001205config DEBUG_LOCKING_API_SELFTESTS
1206 bool "Locking API boot-time self-tests"
1207 depends on DEBUG_KERNEL
1208 help
1209 Say Y here if you want the kernel to run a short self-test during
1210 bootup. The self-test checks whether common types of locking bugs
1211 are detected by debugging mechanisms or not. (if you disable
1212 lock debugging then those bugs wont be detected of course.)
1213 The following locking APIs are covered: spinlocks, rwlocks,
1214 mutexes and rwsems.
1215
Paul E. McKenney0af3fe12014-02-04 15:51:41 -08001216config LOCK_TORTURE_TEST
1217 tristate "torture tests for locking"
1218 depends on DEBUG_KERNEL
1219 select TORTURE_TEST
Paul E. McKenney0af3fe12014-02-04 15:51:41 -08001220 help
1221 This option provides a kernel module that runs torture tests
1222 on kernel locking primitives. The kernel module may be built
1223 after the fact on the running kernel to be tested, if desired.
1224
1225 Say Y here if you want kernel locking-primitive torture tests
1226 to be built into the kernel.
1227 Say M if you want these torture tests to build as a module.
1228 Say N if you are unsure.
1229
Chris Wilsonf2a5fec2016-12-01 11:47:06 +00001230config WW_MUTEX_SELFTEST
1231 tristate "Wait/wound mutex selftests"
1232 help
1233 This option provides a kernel module that runs tests on the
1234 on the struct ww_mutex locking API.
1235
1236 It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction
1237 with this test harness.
1238
1239 Say M if you want these self tests to build as a module.
1240 Say N if you are unsure.
1241
Dave Hansen9eade162013-07-01 13:04:47 -07001242endmenu # lock debugging
1243
1244config TRACE_IRQFLAGS
1245 bool
1246 help
1247 Enables hooks to interrupt enabling and disabling for
1248 either tracing or lock debugging.
1249
Ingo Molnar8637c092006-07-03 00:24:38 -07001250config STACKTRACE
Dave Jones0c38e1f2014-08-29 15:18:35 -07001251 bool "Stack backtrace support"
Ingo Molnar8637c092006-07-03 00:24:38 -07001252 depends on STACKTRACE_SUPPORT
Dave Jones0c38e1f2014-08-29 15:18:35 -07001253 help
1254 This option causes the kernel to create a /proc/pid/stack for
1255 every process, showing its current stack trace.
1256 It is also used by various kernel debugging features that require
1257 stack trace generation.
Ingo Molnar8637c092006-07-03 00:24:38 -07001258
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001259config WARN_ALL_UNSEEDED_RANDOM
1260 bool "Warn for all uses of unseeded randomness"
1261 default n
Jason A. Donenfeldd06bfd12017-06-07 23:06:55 -04001262 help
1263 Some parts of the kernel contain bugs relating to their use of
1264 cryptographically secure random numbers before it's actually possible
1265 to generate those numbers securely. This setting ensures that these
1266 flaws don't go unnoticed, by enabling a message, should this ever
1267 occur. This will allow people with obscure setups to know when things
1268 are going wrong, so that they might contact developers about fixing
1269 it.
1270
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001271 Unfortunately, on some models of some architectures getting
1272 a fully seeded CRNG is extremely difficult, and so this can
1273 result in dmesg getting spammed for a surprisingly long
1274 time. This is really bad from a security perspective, and
1275 so architecture maintainers really need to do what they can
1276 to get the CRNG seeded sooner after the system is booted.
Thibaut Sautereau4c5d1142018-09-04 15:46:23 -07001277 However, since users cannot do anything actionable to
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001278 address this, by default the kernel will issue only a single
1279 warning for the first use of unseeded randomness.
1280
1281 Say Y here if you want to receive warnings for all uses of
1282 unseeded randomness. This will be of use primarily for
Thibaut Sautereau4c5d1142018-09-04 15:46:23 -07001283 those developers interested in improving the security of
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001284 Linux kernels running on their architecture (or
1285 subarchitecture).
Jason A. Donenfeldd06bfd12017-06-07 23:06:55 -04001286
Linus Torvalds1da177e2005-04-16 15:20:36 -07001287config DEBUG_KOBJECT
1288 bool "kobject debugging"
1289 depends on DEBUG_KERNEL
1290 help
1291 If you say Y here, some extra kobject debugging messages will be sent
Mike Rapoportaca52c32018-10-30 15:07:44 -07001292 to the syslog.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001293
Russell Kingc817a672013-06-27 15:06:14 +01001294config DEBUG_KOBJECT_RELEASE
1295 bool "kobject release debugging"
Linus Torvalds2a999aa2013-10-29 08:33:36 -07001296 depends on DEBUG_OBJECTS_TIMERS
Russell Kingc817a672013-06-27 15:06:14 +01001297 help
1298 kobjects are reference counted objects. This means that their
1299 last reference count put is not predictable, and the kobject can
1300 live on past the point at which a driver decides to drop it's
1301 initial reference to the kobject gained on allocation. An
1302 example of this would be a struct device which has just been
1303 unregistered.
1304
1305 However, some buggy drivers assume that after such an operation,
1306 the memory backing the kobject can be immediately freed. This
1307 goes completely against the principles of a refcounted object.
1308
1309 If you say Y here, the kernel will delay the release of kobjects
1310 on the last reference count to improve the visibility of this
1311 kind of kobject release bug.
1312
Catalin Marinas9b2a60c2012-10-08 16:28:13 -07001313config HAVE_DEBUG_BUGVERBOSE
1314 bool
1315
Changbin Du3be5cbc2019-12-06 17:03:48 -08001316menu "Debug kernel data structures"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001317
Dave Jones199a9af2006-09-29 01:59:00 -07001318config DEBUG_LIST
1319 bool "Debug linked list manipulation"
Arnd Bergmann4520bcb2016-08-26 17:42:00 +02001320 depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
Dave Jones199a9af2006-09-29 01:59:00 -07001321 help
1322 Enable this to turn on extended checks in the linked-list
1323 walking routines.
1324
1325 If unsure, say N.
1326
Davidlohr Bueso8e18fae2019-05-14 15:42:46 -07001327config DEBUG_PLIST
Dan Streetmanb8cfff62014-06-04 16:11:54 -07001328 bool "Debug priority linked list manipulation"
1329 depends on DEBUG_KERNEL
1330 help
1331 Enable this to turn on extended checks in the priority-ordered
1332 linked-list (plist) walking routines. This checks the entire
1333 list multiple times during each manipulation.
1334
1335 If unsure, say N.
1336
Jens Axboed6ec0842007-10-22 20:01:06 +02001337config DEBUG_SG
1338 bool "Debug SG table operations"
1339 depends on DEBUG_KERNEL
1340 help
1341 Enable this to turn on checks on scatter-gather tables. This can
1342 help find problems with drivers that do not properly initialize
1343 their sg tables.
1344
1345 If unsure, say N.
1346
Arjan van de Ven1b2439d2008-08-15 15:29:38 -07001347config DEBUG_NOTIFIERS
1348 bool "Debug notifier call chains"
1349 depends on DEBUG_KERNEL
1350 help
1351 Enable this to turn on sanity checking for notifier call chains.
1352 This is most useful for kernel developers to make sure that
1353 modules properly unregister themselves from notifier chains.
1354 This is a relatively cheap check but if you care about maximum
1355 performance, say N.
1356
Changbin Du3be5cbc2019-12-06 17:03:48 -08001357config BUG_ON_DATA_CORRUPTION
1358 bool "Trigger a BUG when data corruption is detected"
1359 select DEBUG_LIST
1360 help
1361 Select this option if the kernel should BUG when it encounters
1362 data corruption in kernel memory structures when they get checked
1363 for validity.
1364
1365 If unsure, say N.
1366
1367endmenu
1368
David Howellse0e81732009-09-02 09:13:40 +01001369config DEBUG_CREDENTIALS
1370 bool "Debug credential management"
1371 depends on DEBUG_KERNEL
1372 help
1373 Enable this to turn on some debug checking for credential
1374 management. The additional code keeps track of the number of
1375 pointers from task_structs to any given cred struct, and checks to
1376 see that this number never exceeds the usage count of the cred
1377 struct.
1378
1379 Furthermore, if SELinux is enabled, this also checks that the
1380 security pointer in the cred struct is never seen to be invalid.
1381
1382 If unsure, say N.
1383
Paul E. McKenney43a0a2a2017-05-17 09:19:44 -07001384source "kernel/rcu/Kconfig.debug"
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001385
Tejun Heof303fccb2016-02-09 17:59:38 -05001386config DEBUG_WQ_FORCE_RR_CPU
1387 bool "Force round-robin CPU selection for unbound work items"
1388 depends on DEBUG_KERNEL
1389 default n
1390 help
1391 Workqueue used to implicitly guarantee that work items queued
1392 without explicit CPU specified are put on the local CPU. This
1393 guarantee is no longer true and while local CPU is still
1394 preferred work items may be put on foreign CPUs. Kernel
1395 parameter "workqueue.debug_force_rr_cpu" is added to force
1396 round-robin CPU selection to flush out usages which depend on the
1397 now broken guarantee. This config option enables the debug
1398 feature by default. When enabled, memory and cache locality will
1399 be impacted.
1400
Tejun Heo870d6652008-08-25 19:47:25 +09001401config DEBUG_BLOCK_EXT_DEVT
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -08001402 bool "Force extended block device numbers and spread them"
Tejun Heo870d6652008-08-25 19:47:25 +09001403 depends on DEBUG_KERNEL
1404 depends on BLOCK
Jens Axboe759f8ca2008-08-29 09:06:29 +02001405 default n
Tejun Heo870d6652008-08-25 19:47:25 +09001406 help
Tejun Heo0e11e342008-10-13 10:46:01 +02001407 BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1408 SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1409 YOU ARE DOING. Distros, please enable this and fix whatever
1410 is broken.
1411
Tejun Heo870d6652008-08-25 19:47:25 +09001412 Conventionally, block device numbers are allocated from
1413 predetermined contiguous area. However, extended block area
1414 may introduce non-contiguous block device numbers. This
1415 option forces most block device numbers to be allocated from
1416 the extended space and spreads them to discover kernel or
1417 userland code paths which assume predetermined contiguous
1418 device number allocation.
1419
Tejun Heo55dc7db2008-09-01 13:44:35 +02001420 Note that turning on this debug option shuffles all the
1421 device numbers for all IDE and SCSI devices including libata
1422 ones, so root partition specified using device number
1423 directly (via rdev or root=MAJ:MIN) won't work anymore.
1424 Textual device names (root=/dev/sdXn) will continue to work.
1425
Tejun Heo870d6652008-08-25 19:47:25 +09001426 Say N if you are unsure.
1427
Thomas Gleixner757c9892016-02-26 18:43:32 +00001428config CPU_HOTPLUG_STATE_CONTROL
1429 bool "Enable CPU hotplug state control"
1430 depends on DEBUG_KERNEL
1431 depends on HOTPLUG_CPU
1432 default n
1433 help
1434 Allows to write steps between "offline" and "online" to the CPUs
1435 sysfs target file so states can be stepped granular. This is a debug
1436 option for now as the hotplug machinery cannot be stopped and
1437 restarted at arbitrary points yet.
1438
1439 Say N if your are unsure.
1440
Changbin Du09a74952019-12-06 17:03:51 -08001441config LATENCYTOP
1442 bool "Latency measuring infrastructure"
1443 depends on DEBUG_KERNEL
1444 depends on STACKTRACE_SUPPORT
1445 depends on PROC_FS
1446 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1447 select KALLSYMS
1448 select KALLSYMS_ALL
1449 select STACKTRACE
1450 select SCHEDSTATS
1451 select SCHED_DEBUG
1452 help
1453 Enable this option if you want to use the LatencyTOP tool
1454 to find out which userspace is blocking on what kernel operations.
1455
1456source "kernel/trace/Kconfig"
1457
1458config PROVIDE_OHCI1394_DMA_INIT
1459 bool "Remote debugging over FireWire early on boot"
1460 depends on PCI && X86
1461 help
1462 If you want to debug problems which hang or crash the kernel early
1463 on boot and the crashing machine has a FireWire port, you can use
1464 this feature to remotely access the memory of the crashed machine
1465 over FireWire. This employs remote DMA as part of the OHCI1394
1466 specification which is now the standard for FireWire controllers.
1467
1468 With remote DMA, you can monitor the printk buffer remotely using
1469 firescope and access all memory below 4GB using fireproxy from gdb.
1470 Even controlling a kernel debugger is possible using remote DMA.
1471
1472 Usage:
1473
1474 If ohci1394_dma=early is used as boot parameter, it will initialize
1475 all OHCI1394 controllers which are found in the PCI config space.
1476
1477 As all changes to the FireWire bus such as enabling and disabling
1478 devices cause a bus reset and thereby disable remote DMA for all
1479 devices, be sure to have the cable plugged and FireWire enabled on
1480 the debugging host before booting the debug target for debugging.
1481
1482 This code (~1k) is freed after boot. By then, the firewire stack
1483 in charge of the OHCI-1394 controllers should be used instead.
1484
1485 See Documentation/debugging-via-ohci1394.txt for more information.
1486
Changbin Du045f6d72019-12-17 20:51:56 -08001487source "samples/Kconfig"
1488
1489config ARCH_HAS_DEVMEM_IS_ALLOWED
1490 bool
1491
1492config STRICT_DEVMEM
1493 bool "Filter access to /dev/mem"
1494 depends on MMU && DEVMEM
1495 depends on ARCH_HAS_DEVMEM_IS_ALLOWED
1496 default y if PPC || X86 || ARM64
1497 help
1498 If this option is disabled, you allow userspace (root) access to all
1499 of memory, including kernel and userspace memory. Accidental
1500 access to this is obviously disastrous, but specific access can
1501 be used by people debugging the kernel. Note that with PAT support
1502 enabled, even in this case there are restrictions on /dev/mem
1503 use due to the cache aliasing requirements.
1504
1505 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
1506 file only allows userspace access to PCI space and the BIOS code and
1507 data regions. This is sufficient for dosemu and X and all common
1508 users of /dev/mem.
1509
1510 If in doubt, say Y.
1511
1512config IO_STRICT_DEVMEM
1513 bool "Filter I/O access to /dev/mem"
1514 depends on STRICT_DEVMEM
1515 help
1516 If this option is disabled, you allow userspace (root) access to all
1517 io-memory regardless of whether a driver is actively using that
1518 range. Accidental access to this is obviously disastrous, but
1519 specific access can be used by people debugging kernel drivers.
1520
1521 If this option is switched on, the /dev/mem file only allows
1522 userspace access to *idle* io-memory ranges (see /proc/iomem) This
1523 may break traditional users of /dev/mem (dosemu, legacy X, etc...)
1524 if the driver using a given range cannot be disabled.
1525
1526 If in doubt, say Y.
1527
1528menu "$(SRCARCH) Debugging"
1529
1530source "arch/$(SRCARCH)/Kconfig.debug"
1531
1532endmenu
1533
1534menu "Kernel Testing and Coverage"
1535
Changbin Du09a74952019-12-06 17:03:51 -08001536source "lib/kunit/Kconfig"
1537
Akinobu Mita8d438282012-07-30 14:43:02 -07001538config NOTIFIER_ERROR_INJECTION
1539 tristate "Notifier error injection"
1540 depends on DEBUG_KERNEL
1541 select DEBUG_FS
1542 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001543 This option provides the ability to inject artificial errors to
Akinobu Mita8d438282012-07-30 14:43:02 -07001544 specified notifier chain callbacks. It is useful to test the error
1545 handling of notifier call chain failures.
1546
1547 Say N if unsure.
1548
Akinobu Mita048b9c32012-07-30 14:43:07 -07001549config PM_NOTIFIER_ERROR_INJECT
1550 tristate "PM notifier error injection module"
1551 depends on PM && NOTIFIER_ERROR_INJECTION
1552 default m if PM_DEBUG
1553 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001554 This option provides the ability to inject artificial errors to
Akinobu Mita048b9c32012-07-30 14:43:07 -07001555 PM notifier chain callbacks. It is controlled through debugfs
1556 interface /sys/kernel/debug/notifier-error-inject/pm
1557
1558 If the notifier call chain should be failed with some events
1559 notified, write the error code to "actions/<notifier event>/error".
1560
1561 Example: Inject PM suspend error (-12 = -ENOMEM)
1562
1563 # cd /sys/kernel/debug/notifier-error-inject/pm/
1564 # echo -12 > actions/PM_SUSPEND_PREPARE/error
1565 # echo mem > /sys/power/state
1566 bash: echo: write error: Cannot allocate memory
1567
1568 To compile this code as a module, choose M here: the module will
1569 be called pm-notifier-error-inject.
1570
1571 If unsure, say N.
1572
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001573config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1574 tristate "OF reconfig notifier error injection module"
1575 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001576 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001577 This option provides the ability to inject artificial errors to
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001578 OF reconfig notifier chain callbacks. It is controlled
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001579 through debugfs interface under
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001580 /sys/kernel/debug/notifier-error-inject/OF-reconfig/
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001581
1582 If the notifier call chain should be failed with some events
1583 notified, write the error code to "actions/<notifier event>/error".
1584
1585 To compile this code as a module, choose M here: the module will
Akinobu Mitae12a95f2013-04-30 15:28:49 -07001586 be called of-reconfig-notifier-error-inject.
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001587
1588 If unsure, say N.
1589
Nikolay Aleksandrov02fff962015-11-28 13:45:28 +01001590config NETDEV_NOTIFIER_ERROR_INJECT
1591 tristate "Netdev notifier error injection module"
1592 depends on NET && NOTIFIER_ERROR_INJECTION
1593 help
1594 This option provides the ability to inject artificial errors to
1595 netdevice notifier chain callbacks. It is controlled through debugfs
1596 interface /sys/kernel/debug/notifier-error-inject/netdev
1597
1598 If the notifier call chain should be failed with some events
1599 notified, write the error code to "actions/<notifier event>/error".
1600
1601 Example: Inject netdevice mtu change error (-22 = -EINVAL)
1602
1603 # cd /sys/kernel/debug/notifier-error-inject/netdev
1604 # echo -22 > actions/NETDEV_CHANGEMTU/error
1605 # ip link set eth0 mtu 1024
1606 RTNETLINK answers: Invalid argument
1607
1608 To compile this code as a module, choose M here: the module will
1609 be called netdev-notifier-error-inject.
1610
1611 If unsure, say N.
1612
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001613config FUNCTION_ERROR_INJECTION
1614 def_bool y
1615 depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1616
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001617config FAULT_INJECTION
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001618 bool "Fault-injection framework"
1619 depends on DEBUG_KERNEL
Akinobu Mita329409a2006-12-08 02:39:48 -08001620 help
1621 Provide fault-injection framework.
1622 For more details, see Documentation/fault-injection/.
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001623
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001624config FAILSLAB
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001625 bool "Fault-injection capability for kmalloc"
1626 depends on FAULT_INJECTION
Akinobu Mita773ff602008-12-23 19:37:01 +09001627 depends on SLAB || SLUB
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001628 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001629 Provide fault-injection capability for kmalloc.
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001630
Akinobu Mita933e3122006-12-08 02:39:45 -08001631config FAIL_PAGE_ALLOC
1632 bool "Fault-injection capabilitiy for alloc_pages()"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001633 depends on FAULT_INJECTION
Akinobu Mita933e3122006-12-08 02:39:45 -08001634 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001635 Provide fault-injection capability for alloc_pages().
Akinobu Mita933e3122006-12-08 02:39:45 -08001636
Akinobu Mitac17bb492006-12-08 02:39:46 -08001637config FAIL_MAKE_REQUEST
Dave Jones86327d12006-12-12 20:16:36 +01001638 bool "Fault-injection capability for disk IO"
Jens Axboe581d4e22008-09-14 05:56:33 -07001639 depends on FAULT_INJECTION && BLOCK
Akinobu Mitac17bb492006-12-08 02:39:46 -08001640 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001641 Provide fault-injection capability for disk IO.
Akinobu Mitac17bb492006-12-08 02:39:46 -08001642
Jens Axboe581d4e22008-09-14 05:56:33 -07001643config FAIL_IO_TIMEOUT
Takuya Yoshikawaf4d01432010-07-21 16:05:53 +09001644 bool "Fault-injection capability for faking disk interrupts"
Jens Axboe581d4e22008-09-14 05:56:33 -07001645 depends on FAULT_INJECTION && BLOCK
1646 help
1647 Provide fault-injection capability on end IO handling. This
1648 will make the block layer "forget" an interrupt as configured,
1649 thus exercising the error handling.
1650
1651 Only works with drivers that use the generic timeout handling,
1652 for others it wont do anything.
1653
Davidlohr Buesoab51fba2015-06-29 23:26:02 -07001654config FAIL_FUTEX
1655 bool "Fault-injection capability for futexes"
1656 select DEBUG_FS
1657 depends on FAULT_INJECTION && FUTEX
1658 help
1659 Provide fault-injection capability for futexes.
1660
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001661config FAULT_INJECTION_DEBUG_FS
1662 bool "Debugfs entries for fault-injection capabilities"
1663 depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1664 help
1665 Enable configuration of fault-injection capabilities via debugfs.
1666
Masami Hiramatsu4b1a29a2018-01-13 02:56:03 +09001667config FAIL_FUNCTION
1668 bool "Fault-injection capability for functions"
1669 depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1670 help
1671 Provide function-based fault-injection capability.
1672 This will allow you to override a specific function with a return
1673 with given return value. As a result, function caller will see
1674 an error value and have to handle it. This is useful to test the
1675 error handling in various subsystems.
1676
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001677config FAIL_MMC_REQUEST
1678 bool "Fault-injection capability for MMC IO"
1679 depends on FAULT_INJECTION_DEBUG_FS && MMC
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001680 help
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001681 Provide fault-injection capability for MMC IO.
1682 This will make the mmc core return data errors. This is
1683 useful to test the error handling in the mmc block device
1684 and to test how the mmc host driver handles retries from
1685 the block device.
Akinobu Mita1df49002007-02-20 13:57:56 -08001686
1687config FAULT_INJECTION_STACKTRACE_FILTER
1688 bool "stacktrace filter for fault-injection capabilities"
1689 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
Akinobu Mita6d690dc2007-05-12 10:36:53 -07001690 depends on !X86_64
Akinobu Mita1df49002007-02-20 13:57:56 -08001691 select STACKTRACE
Stefan Agnerf9b58e82018-09-30 23:02:33 +01001692 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
Akinobu Mita1df49002007-02-20 13:57:56 -08001693 help
1694 Provide stacktrace filter for fault-injection capabilities
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07001695
Changbin Du09a74952019-12-06 17:03:51 -08001696config ARCH_HAS_KCOV
1697 bool
Arjan van de Ven97455122008-01-25 21:08:34 +01001698 help
Changbin Du09a74952019-12-06 17:03:51 -08001699 An architecture should select this when it can successfully
1700 build and run with CONFIG_KCOV. This typically requires
1701 disabling instrumentation for some early boot code.
Arjan van de Ven97455122008-01-25 21:08:34 +01001702
Changbin Du09a74952019-12-06 17:03:51 -08001703config CC_HAS_SANCOV_TRACE_PC
1704 def_bool $(cc-option,-fsanitize-coverage=trace-pc)
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001705
Changbin Du09a74952019-12-06 17:03:51 -08001706
1707config KCOV
1708 bool "Code coverage for fuzzing"
1709 depends on ARCH_HAS_KCOV
1710 depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
1711 select DEBUG_FS
1712 select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001713 help
Changbin Du09a74952019-12-06 17:03:51 -08001714 KCOV exposes kernel code coverage information in a form suitable
1715 for coverage-guided fuzzing (randomized testing).
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001716
Changbin Du09a74952019-12-06 17:03:51 -08001717 If RANDOMIZE_BASE is enabled, PC values will not be stable across
1718 different machines and across reboots. If you need stable PC values,
1719 disable RANDOMIZE_BASE.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001720
Changbin Du09a74952019-12-06 17:03:51 -08001721 For more details, see Documentation/dev-tools/kcov.rst.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001722
Changbin Du09a74952019-12-06 17:03:51 -08001723config KCOV_ENABLE_COMPARISONS
1724 bool "Enable comparison operands collection by KCOV"
1725 depends on KCOV
1726 depends on $(cc-option,-fsanitize-coverage=trace-cmp)
1727 help
1728 KCOV also exposes operands of every comparison in the instrumented
1729 code along with operand sizes and PCs of the comparison instructions.
1730 These operands can be used by fuzzing engines to improve the quality
1731 of fuzzing coverage.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001732
Changbin Du09a74952019-12-06 17:03:51 -08001733config KCOV_INSTRUMENT_ALL
1734 bool "Instrument all code by default"
1735 depends on KCOV
1736 default y
1737 help
1738 If you are doing generic system call fuzzing (like e.g. syzkaller),
1739 then you will want to instrument the whole kernel and you should
1740 say y here. If you are doing more targeted fuzzing (like e.g.
1741 filesystem fuzzing with AFL) then you will want to enable coverage
1742 for more specific subsets of files, and should say n here.
Brendan Higgins84bc8092019-09-23 02:02:36 -07001743
Vincent Legolld3deafa2018-02-06 15:38:38 -08001744menuconfig RUNTIME_TESTING_MENU
1745 bool "Runtime Testing"
Anders Roxell908009e82018-02-21 14:46:05 -08001746 def_bool y
Vincent Legolld3deafa2018-02-06 15:38:38 -08001747
1748if RUNTIME_TESTING_MENU
Dave Hansen881c5142013-07-01 13:04:44 -07001749
1750config LKDTM
1751 tristate "Linux Kernel Dump Test Tool Module"
1752 depends on DEBUG_FS
Dave Hansen881c5142013-07-01 13:04:44 -07001753 help
1754 This module enables testing of the different dumping mechanisms by
1755 inducing system failures at predefined crash points.
1756 If you don't need it: say N
1757 Choose M here to compile this code as a module. The module will be
1758 called lkdtm.
1759
1760 Documentation on how to use the module can be found in
Mauro Carvalho Chehab10ffebb2019-06-12 14:52:44 -03001761 Documentation/fault-injection/provoke-crashes.rst
Dave Hansen881c5142013-07-01 13:04:44 -07001762
1763config TEST_LIST_SORT
Geert Uytterhoevene327fd72017-05-08 15:55:26 -07001764 tristate "Linked list sorting test"
1765 depends on DEBUG_KERNEL || m
Dave Hansen881c5142013-07-01 13:04:44 -07001766 help
1767 Enable this to turn on 'list_sort()' function test. This test is
Geert Uytterhoevene327fd72017-05-08 15:55:26 -07001768 executed only once during system boot (so affects only boot time),
1769 or at module load time.
Dave Hansen881c5142013-07-01 13:04:44 -07001770
1771 If unsure, say N.
1772
Kostenzer Felixc5adae92017-02-24 15:01:07 -08001773config TEST_SORT
Geert Uytterhoeven5c4e6792017-05-08 15:55:23 -07001774 tristate "Array-based sort test"
1775 depends on DEBUG_KERNEL || m
Kostenzer Felixc5adae92017-02-24 15:01:07 -08001776 help
Geert Uytterhoeven5c4e6792017-05-08 15:55:23 -07001777 This option enables the self-test function of 'sort()' at boot,
1778 or at module load time.
Kostenzer Felixc5adae92017-02-24 15:01:07 -08001779
1780 If unsure, say N.
1781
Dave Hansen881c5142013-07-01 13:04:44 -07001782config KPROBES_SANITY_TEST
1783 bool "Kprobes sanity tests"
1784 depends on DEBUG_KERNEL
1785 depends on KPROBES
Dave Hansen881c5142013-07-01 13:04:44 -07001786 help
1787 This option provides for testing basic kprobes functionality on
Masami Hiramatsu5a6cf772018-06-20 01:05:07 +09001788 boot. Samples of kprobe and kretprobe are inserted and
Dave Hansen881c5142013-07-01 13:04:44 -07001789 verified for functionality.
1790
1791 Say N if you are unsure.
1792
1793config BACKTRACE_SELF_TEST
1794 tristate "Self test for the backtrace code"
1795 depends on DEBUG_KERNEL
Dave Hansen881c5142013-07-01 13:04:44 -07001796 help
1797 This option provides a kernel module that can be used to test
1798 the kernel stack backtrace code. This option is not useful
1799 for distributions or general kernels, but only for kernel
1800 developers working on architecture code.
1801
1802 Note that if you want to also test saved backtraces, you will
1803 have to enable STACKTRACE as well.
1804
1805 Say N if you are unsure.
1806
Michel Lespinasse910a7422012-10-08 16:30:39 -07001807config RBTREE_TEST
1808 tristate "Red-Black tree test"
Cody P Schafer7c993e12013-09-11 14:25:19 -07001809 depends on DEBUG_KERNEL
Michel Lespinasse910a7422012-10-08 16:30:39 -07001810 help
1811 A benchmark measuring the performance of the rbtree library.
1812 Also includes rbtree invariant checks.
1813
Ferdinand Blomqvist4b4f3ac2019-06-20 17:10:33 +03001814config REED_SOLOMON_TEST
1815 tristate "Reed-Solomon library test"
1816 depends on DEBUG_KERNEL || m
1817 select REED_SOLOMON
1818 select REED_SOLOMON_ENC16
1819 select REED_SOLOMON_DEC16
1820 help
1821 This option enables the self-test function of rslib at boot,
1822 or at module load time.
1823
1824 If unsure, say N.
1825
Michel Lespinassefff3fd82012-10-08 16:31:23 -07001826config INTERVAL_TREE_TEST
1827 tristate "Interval tree test"
Davidlohr Bueso0f789b62017-07-10 15:51:43 -07001828 depends on DEBUG_KERNEL
Chris Wilsona88cc102014-03-17 12:21:54 +00001829 select INTERVAL_TREE
Michel Lespinassefff3fd82012-10-08 16:31:23 -07001830 help
1831 A benchmark measuring the performance of the interval tree library
1832
Greg Thelen623fd802013-11-12 15:08:34 -08001833config PERCPU_TEST
1834 tristate "Per cpu operations test"
1835 depends on m && DEBUG_KERNEL
1836 help
1837 Enable this option to build test module which validates per-cpu
1838 operations.
1839
1840 If unsure, say N.
1841
Dave Hansen881c5142013-07-01 13:04:44 -07001842config ATOMIC64_SELFTEST
Geert Uytterhoeven55ded952017-02-24 15:00:55 -08001843 tristate "Perform an atomic64_t self-test"
Dave Hansen881c5142013-07-01 13:04:44 -07001844 help
Geert Uytterhoeven55ded952017-02-24 15:00:55 -08001845 Enable this option to test the atomic64_t functions at boot or
1846 at module load time.
Dave Hansen881c5142013-07-01 13:04:44 -07001847
1848 If unsure, say N.
1849
1850config ASYNC_RAID6_TEST
1851 tristate "Self test for hardware accelerated raid6 recovery"
1852 depends on ASYNC_RAID6_RECOV
1853 select ASYNC_MEMCPY
1854 ---help---
1855 This is a one-shot self test that permutes through the
1856 recovery of all the possible two disk failure scenarios for a
1857 N-disk array. Recovery is performed with the asynchronous
1858 raid6 recovery routines, and will optionally use an offload
1859 engine if one is available.
1860
1861 If unsure, say N.
1862
Andy Shevchenko64d1d772015-02-12 15:02:21 -08001863config TEST_HEXDUMP
1864 tristate "Test functions located in the hexdump module at runtime"
1865
Dave Hansen881c5142013-07-01 13:04:44 -07001866config TEST_STRING_HELPERS
1867 tristate "Test functions located in the string_helpers module at runtime"
1868
Tobin C. Harding0b0600c2019-04-05 12:58:59 +11001869config TEST_STRSCPY
1870 tristate "Test strscpy*() family of functions at runtime"
1871
Dave Hansen881c5142013-07-01 13:04:44 -07001872config TEST_KSTRTOX
1873 tristate "Test kstrto*() family of functions at runtime"
1874
Rasmus Villemoes707cc722015-11-06 16:30:29 -08001875config TEST_PRINTF
1876 tristate "Test printf() family of functions at runtime"
1877
David Decotigny5fd003f2016-02-19 09:24:00 -05001878config TEST_BITMAP
1879 tristate "Test bitmap_*() family of functions at runtime"
David Decotigny5fd003f2016-02-19 09:24:00 -05001880 help
1881 Enable this option to test the bitmap functions at boot.
1882
1883 If unsure, say N.
1884
Johannes Berg0e2dc702018-06-20 08:58:30 +02001885config TEST_BITFIELD
1886 tristate "Test bitfield functions at runtime"
1887 help
1888 Enable this option to test the bitfield functions at boot.
1889
1890 If unsure, say N.
1891
Andy Shevchenkocfaff0e2016-05-30 17:40:41 +03001892config TEST_UUID
1893 tristate "Test functions located in the uuid module at runtime"
1894
Matthew Wilcoxad3d6c72017-11-07 14:57:46 -05001895config TEST_XARRAY
1896 tristate "Test the XArray code at runtime"
1897
Rasmus Villemoes455a35a2018-05-08 00:36:28 +02001898config TEST_OVERFLOW
1899 tristate "Test check_*_overflow() functions at runtime"
1900
Thomas Graf7e1e7762014-08-02 11:47:44 +02001901config TEST_RHASHTABLE
Geert Uytterhoeven9d6dbe12015-01-29 15:40:25 +01001902 tristate "Perform selftest on resizable hash table"
Thomas Graf7e1e7762014-08-02 11:47:44 +02001903 help
1904 Enable this option to test the rhashtable functions at boot.
1905
1906 If unsure, say N.
1907
George Spelvin468a9422016-05-26 22:11:51 -04001908config TEST_HASH
1909 tristate "Perform selftest on hash functions"
George Spelvin468a9422016-05-26 22:11:51 -04001910 help
Jason A. Donenfeld2c956a62017-01-08 13:54:00 +01001911 Enable this option to test the kernel's integer (<linux/hash.h>),
1912 string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1913 hash functions on boot (or module load).
George Spelvin468a9422016-05-26 22:11:51 -04001914
1915 This is intended to help people writing architecture-specific
1916 optimized versions. If unsure, say N.
1917
Matthew Wilcox8ab8ba32018-06-18 16:59:29 -04001918config TEST_IDA
1919 tristate "Perform selftest on IDA functions"
1920
Jiri Pirko44091d22017-02-03 10:29:06 +01001921config TEST_PARMAN
1922 tristate "Perform selftest on priority array manager"
Jiri Pirko44091d22017-02-03 10:29:06 +01001923 depends on PARMAN
1924 help
1925 Enable this option to test priority array manager on boot
1926 (or module load).
1927
1928 If unsure, say N.
1929
Daniel Lezcano6aed82d2019-05-27 22:55:19 +02001930config TEST_IRQ_TIMINGS
1931 bool "IRQ timings selftest"
1932 depends on IRQ_TIMINGS
1933 help
1934 Enable this option to test the irq timings code on boot.
1935
1936 If unsure, say N.
1937
Valentin Rothberg8a6f0b42014-10-13 15:51:38 -07001938config TEST_LKM
Kees Cook93e9ef82014-01-23 15:54:37 -08001939 tristate "Test module loading with 'hello world' module"
Kees Cook93e9ef82014-01-23 15:54:37 -08001940 depends on m
1941 help
1942 This builds the "test_module" module that emits "Hello, world"
1943 on printk when loaded. It is designed to be used for basic
1944 evaluation of the module loading subsystem (for example when
1945 validating module verification). It lacks any extra dependencies,
1946 and will not normally be loaded by the system unless explicitly
1947 requested by name.
1948
1949 If unsure, say N.
1950
Uladzislau Rezki (Sony)3f21a6b2019-03-05 15:43:34 -08001951config TEST_VMALLOC
1952 tristate "Test module for stress/performance analysis of vmalloc allocator"
1953 default n
1954 depends on MMU
1955 depends on m
1956 help
1957 This builds the "test_vmalloc" module that should be used for
1958 stress and performance analysis. So, any new change for vmalloc
1959 subsystem can be evaluated from performance and stability point
1960 of view.
1961
1962 If unsure, say N.
1963
Kees Cook3e2a4c12014-01-23 15:54:38 -08001964config TEST_USER_COPY
1965 tristate "Test user/kernel boundary protections"
Kees Cook3e2a4c12014-01-23 15:54:38 -08001966 depends on m
1967 help
1968 This builds the "test_user_copy" module that runs sanity checks
1969 on the copy_to/from_user infrastructure, making sure basic
1970 user/kernel boundary testing is working. If it fails to load,
1971 a regression has been detected in the user/kernel memory boundary
1972 protections.
1973
1974 If unsure, say N.
1975
Alexei Starovoitov64a89462014-05-08 14:10:52 -07001976config TEST_BPF
1977 tristate "Test BPF filter functionality"
Randy Dunlap98920ba2014-05-13 09:58:44 -07001978 depends on m && NET
Alexei Starovoitov64a89462014-05-08 14:10:52 -07001979 help
1980 This builds the "test_bpf" module that runs various test vectors
1981 against the BPF interpreter or BPF JIT compiler depending on the
1982 current setting. This is in particular useful for BPF JIT compiler
1983 development, but also to run regression tests against changes in
Alexei Starovoitov3c731eb2014-09-26 00:17:07 -07001984 the interpreter code. It also enables test stubs for eBPF maps and
1985 verifier used by user space verifier testsuite.
Alexei Starovoitov64a89462014-05-08 14:10:52 -07001986
1987 If unsure, say N.
1988
Mahesh Bandewar509e56b2019-07-01 14:39:01 -07001989config TEST_BLACKHOLE_DEV
1990 tristate "Test blackhole netdev functionality"
1991 depends on m && NET
1992 help
1993 This builds the "test_blackhole_dev" module that validates the
1994 data path through this blackhole netdev.
1995
1996 If unsure, say N.
1997
Yury Norovdceeb3e2018-02-06 15:38:27 -08001998config FIND_BIT_BENCHMARK
Yury Norov4441fca2017-11-17 15:28:31 -08001999 tristate "Test find_bit functions"
Yury Norov4441fca2017-11-17 15:28:31 -08002000 help
2001 This builds the "test_find_bit" module that measure find_*_bit()
2002 functions performance.
2003
2004 If unsure, say N.
2005
Kees Cook0a8adf52014-07-14 14:38:12 -07002006config TEST_FIRMWARE
2007 tristate "Test firmware loading via userspace interface"
Kees Cook0a8adf52014-07-14 14:38:12 -07002008 depends on FW_LOADER
2009 help
2010 This builds the "test_firmware" module that creates a userspace
2011 interface for testing firmware loading. This can be used to
2012 control the triggering of firmware loading without needing an
2013 actual firmware-using device. The contents can be rechecked by
2014 userspace.
2015
2016 If unsure, say N.
2017
Luis R. Rodriguez9308f2f2017-07-12 14:33:43 -07002018config TEST_SYSCTL
2019 tristate "sysctl test driver"
Luis R. Rodriguez9308f2f2017-07-12 14:33:43 -07002020 depends on PROC_SYSCTL
2021 help
2022 This builds the "test_sysctl" module. This driver enables to test the
2023 proc sysctl interfaces available to drivers safely without affecting
2024 production knobs which might alter system functionality.
2025
2026 If unsure, say N.
2027
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002028config SYSCTL_KUNIT_TEST
Alan Maguirec475c772020-01-06 22:28:20 +00002029 tristate "KUnit test for sysctl"
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002030 depends on KUNIT
2031 help
2032 This builds the proc sysctl unit test, which runs on boot.
2033 Tests the API contract and implementation correctness of sysctl.
2034 For more information on KUnit and unit tests in general please refer
2035 to the KUnit documentation in Documentation/dev-tools/kunit/.
2036
2037 If unsure, say N.
2038
David Gowea2dd7c2019-10-24 15:46:31 -07002039config LIST_KUNIT_TEST
Alan Maguirec475c772020-01-06 22:28:20 +00002040 tristate "KUnit Test for Kernel Linked-list structures"
David Gowea2dd7c2019-10-24 15:46:31 -07002041 depends on KUNIT
2042 help
2043 This builds the linked list KUnit test suite.
2044 It tests that the API and basic functionality of the list_head type
2045 and associated macros.
2046
2047 KUnit tests run during boot and output the results to the debug log
2048 in TAP format (http://testanything.org/). Only useful for kernel devs
2049 running the KUnit test harness, and not intended for inclusion into a
2050 production build.
2051
2052 For more information on KUnit and unit tests in general please refer
2053 to the KUnit documentation in Documentation/dev-tools/kunit/.
2054
2055 If unsure, say N.
2056
David Rileye704f932014-06-16 14:58:32 -07002057config TEST_UDELAY
2058 tristate "udelay test driver"
David Rileye704f932014-06-16 14:58:32 -07002059 help
2060 This builds the "udelay_test" module that helps to make sure
2061 that udelay() is working properly.
2062
2063 If unsure, say N.
2064
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002065config TEST_STATIC_KEYS
2066 tristate "Test static keys"
Jason Baron579e1ac2015-07-30 03:59:44 +00002067 depends on m
2068 help
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002069 Test the static key interfaces.
Jason Baron579e1ac2015-07-30 03:59:44 +00002070
2071 If unsure, say N.
2072
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002073config TEST_KMOD
2074 tristate "kmod stress tester"
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002075 depends on m
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002076 depends on NETDEVICES && NET_CORE && INET # for TUN
YueHaibingae3d6a32019-04-25 22:23:44 -07002077 depends on BLOCK
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002078 select TEST_LKM
2079 select XFS_FS
2080 select TUN
2081 select BTRFS_FS
2082 help
2083 Test the kernel's module loading mechanism: kmod. kmod implements
2084 support to load modules using the Linux kernel's usermode helper.
2085 This test provides a series of tests against kmod.
2086
2087 Although technically you can either build test_kmod as a module or
2088 into the kernel we disallow building it into the kernel since
2089 it stress tests request_module() and this will very likely cause
2090 some issues by taking over precious threads available from other
2091 module load requests, ultimately this could be fatal.
2092
2093 To run tests run:
2094
2095 tools/testing/selftests/kmod/kmod.sh --help
2096
2097 If unsure, say N.
2098
Florian Fainellie4dace32017-09-08 16:15:31 -07002099config TEST_DEBUG_VIRTUAL
2100 tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2101 depends on DEBUG_VIRTUAL
2102 help
2103 Test the kernel's ability to detect incorrect calls to
2104 virt_to_phys() done against the non-linear part of the
2105 kernel's virtual address map.
2106
2107 If unsure, say N.
2108
Alexander Shishkince76d932018-10-05 15:43:05 +03002109config TEST_MEMCAT_P
2110 tristate "Test memcat_p() helper function"
2111 help
2112 Test the memcat_p() helper for correctly merging two
2113 pointer arrays together.
2114
2115 If unsure, say N.
2116
Joe Lawrencea2818ee2019-01-09 13:43:29 +01002117config TEST_LIVEPATCH
2118 tristate "Test livepatching"
2119 default n
Joe Lawrencebae05432019-01-31 11:41:24 -05002120 depends on DYNAMIC_DEBUG
Joe Lawrencea2818ee2019-01-09 13:43:29 +01002121 depends on LIVEPATCH
2122 depends on m
2123 help
2124 Test kernel livepatching features for correctness. The tests will
2125 load test modules that will be livepatched in various scenarios.
2126
2127 To run all the livepatching tests:
2128
2129 make -C tools/testing/selftests TARGETS=livepatch run_tests
2130
2131 Alternatively, individual tests may be invoked:
2132
2133 tools/testing/selftests/livepatch/test-callbacks.sh
2134 tools/testing/selftests/livepatch/test-livepatch.sh
2135 tools/testing/selftests/livepatch/test-shadow-vars.sh
2136
2137 If unsure, say N.
2138
Jiri Pirko0a020d42018-11-14 08:22:28 +00002139config TEST_OBJAGG
2140 tristate "Perform selftest on object aggreration manager"
2141 default n
2142 depends on OBJAGG
2143 help
2144 Enable this option to test object aggregation manager on boot
2145 (or module load).
2146
Jiri Pirko0a020d42018-11-14 08:22:28 +00002147
Kees Cook50ceaa95e2019-01-23 12:24:32 -07002148config TEST_STACKINIT
2149 tristate "Test level of stack variable initialization"
2150 help
2151 Test if the kernel is zero-initializing stack variables and
2152 padding. Coverage is controlled by compiler flags,
2153 CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2154 or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2155
2156 If unsure, say N.
2157
Alexander Potapenko5015a302019-07-16 16:27:27 -07002158config TEST_MEMINIT
2159 tristate "Test heap/page initialization"
2160 help
2161 Test if the kernel is zero-initializing heap and page allocations.
2162 This can be useful to test init_on_alloc and init_on_free features.
2163
2164 If unsure, say N.
2165
Vincent Legolld3deafa2018-02-06 15:38:38 -08002166endif # RUNTIME_TESTING_MENU
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002167
2168config MEMTEST
2169 bool "Memtest"
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002170 ---help---
2171 This option adds a kernel parameter 'memtest', which allows memtest
2172 to be set.
2173 memtest=0, mean disabled; -- default
2174 memtest=1, mean do 1 test pattern;
2175 ...
2176 memtest=17, mean do 17 test patterns.
2177 If you are unsure how to answer this question, answer N.
2178
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002179
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002180
Branden Bonabyaf9ca6f2019-10-03 17:01:49 -04002181config HYPERV_TESTING
2182 bool "Microsoft Hyper-V driver testing"
2183 default n
2184 depends on HYPERV && DEBUG_FS
2185 help
2186 Select this option to enable Hyper-V vmbus testing.
2187
Changbin Du045f6d72019-12-17 20:51:56 -08002188endmenu # "Kernel Testing and Coverage"
2189
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002190endmenu # Kernel hacking