blob: c0521f085b3f748ee6f653a86731486bf041562d [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
Tao Huang42148322021-11-12 11:05:18 +080021config PRINTK_TIME_FROM_ARM_ARCH_TIMER
22 bool "Timing from ARM architected timer"
23 depends on PRINTK_TIME && ARM_ARCH_TIMER && NO_GKI
24
Tetsuo Handa15ff2062018-12-18 06:05:04 +090025config PRINTK_CALLER
26 bool "Show caller information on printks"
27 depends on PRINTK
28 help
29 Selecting this option causes printk() to add a caller "thread id" (if
30 in task context) or a caller "processor id" (if not in task context)
31 to every message.
32
33 This option is intended for environments where multiple threads
34 concurrently call printk() for many times, for it is difficult to
35 interpret without knowing where these lines (or sometimes individual
36 line which was divided into multiple lines due to race) came from.
37
38 Since toggling after boot makes the code racy, currently there is
39 no option to enable/disable at the kernel command line parameter or
40 sysfs interface.
41
Olof Johanssona8cfdc62016-12-12 16:45:56 -080042config CONSOLE_LOGLEVEL_DEFAULT
43 int "Default console loglevel (1-15)"
44 range 1 15
45 default "7"
46 help
47 Default loglevel to determine what will be printed on the console.
48
49 Setting a default here is equivalent to passing in loglevel=<x> in
50 the kernel bootargs. loglevel=<x> continues to override whatever
51 value is specified here as well.
52
Borislav Petkov50f4d9b2016-12-19 16:23:15 -080053 Note: This does not affect the log level of un-prefixed printk()
Olof Johanssona8cfdc62016-12-12 16:45:56 -080054 usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
55 option.
56
Hans de Goede22eceb82018-06-19 13:57:26 +020057config CONSOLE_LOGLEVEL_QUIET
58 int "quiet console loglevel (1-15)"
59 range 1 15
60 default "4"
61 help
62 loglevel to use when "quiet" is passed on the kernel commandline.
63
64 When "quiet" is passed on the kernel commandline this loglevel
65 will be used as the loglevel. IOW passing "quiet" will be the
66 equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
67
Alex Elder42a9dc02014-08-06 16:09:01 -070068config MESSAGE_LOGLEVEL_DEFAULT
Mandeep Singh Baines5af5bcb2011-03-22 16:34:23 -070069 int "Default message log level (1-7)"
70 range 1 7
71 default "4"
72 help
73 Default log level for printk statements with no specified priority.
74
75 This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
76 that are auditing their logs closely may want to set it to a lower
77 priority.
78
Olof Johanssona8cfdc62016-12-12 16:45:56 -080079 Note: This does not affect what message level gets printed on the console
80 by default. To change that, use loglevel=<x> in the kernel bootargs,
81 or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.
82
Dave Hansen604ff0d2013-07-01 13:04:49 -070083config BOOT_PRINTK_DELAY
84 bool "Delay each boot printk message by N milliseconds"
85 depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
86 help
87 This build option allows you to read kernel boot messages
88 by inserting a short delay after each one. The delay is
89 specified in milliseconds on the kernel command line,
90 using "boot_delay=N".
91
92 It is likely that you would also need to use "lpj=M" to preset
93 the "loops per jiffie" value.
94 See a previous boot log for the "lpj" value to use for your
95 system, and then set "lpj=M" before setting "boot_delay=N".
96 NOTE: Using this option may adversely affect SMP systems.
97 I.e., processors other than the first one may not boot up.
98 BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
99 what it believes to be lockup conditions.
100
101config DYNAMIC_DEBUG
102 bool "Enable dynamic printk() support"
103 default n
104 depends on PRINTK
Greg Kroah-Hartman239a5792020-02-10 13:11:42 -0800105 depends on (DEBUG_FS || PROC_FS)
Orson Zhaiceabef72020-06-07 21:40:14 -0700106 select DYNAMIC_DEBUG_CORE
Dave Hansen604ff0d2013-07-01 13:04:49 -0700107 help
108
109 Compiles debug level messages into the kernel, which would not
110 otherwise be available at runtime. These messages can then be
111 enabled/disabled based on various levels of scope - per source file,
112 function, module, format string, and line number. This mechanism
113 implicitly compiles in all pr_debug() and dev_dbg() calls, which
114 enlarges the kernel text size by about 2%.
115
116 If a source file is compiled with DEBUG flag set, any
117 pr_debug() calls in it are enabled by default, but can be
118 disabled at runtime as below. Note that DEBUG flag is
119 turned on by many CONFIG_*DEBUG* options.
120
121 Usage:
122
123 Dynamic debugging is controlled via the 'dynamic_debug/control' file,
Greg Kroah-Hartman239a5792020-02-10 13:11:42 -0800124 which is contained in the 'debugfs' filesystem or procfs.
125 Thus, the debugfs or procfs filesystem must first be mounted before
126 making use of this feature.
Dave Hansen604ff0d2013-07-01 13:04:49 -0700127 We refer the control file as: <debugfs>/dynamic_debug/control. This
128 file contains a list of the debug statements that can be enabled. The
129 format for each line of the file is:
130
131 filename:lineno [module]function flags format
132
133 filename : source file of the debug statement
134 lineno : line number of the debug statement
135 module : module that contains the debug statement
136 function : function that contains the debug statement
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800137 flags : '=p' means the line is turned 'on' for printing
138 format : the format used for the debug statement
Dave Hansen604ff0d2013-07-01 13:04:49 -0700139
140 From a live system:
141
142 nullarbor:~ # cat <debugfs>/dynamic_debug/control
143 # filename:lineno [module]function flags format
144 fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
145 fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
146 fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
147
148 Example usage:
149
150 // enable the message at line 1603 of file svcsock.c
151 nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
152 <debugfs>/dynamic_debug/control
153
154 // enable all the messages in file svcsock.c
155 nullarbor:~ # echo -n 'file svcsock.c +p' >
156 <debugfs>/dynamic_debug/control
157
158 // enable all the messages in the NFS server module
159 nullarbor:~ # echo -n 'module nfsd +p' >
160 <debugfs>/dynamic_debug/control
161
162 // enable all 12 messages in the function svc_process()
163 nullarbor:~ # echo -n 'func svc_process +p' >
164 <debugfs>/dynamic_debug/control
165
166 // disable all 12 messages in the function svc_process()
167 nullarbor:~ # echo -n 'func svc_process -p' >
168 <debugfs>/dynamic_debug/control
169
Hans Holmbergf8998c22017-03-16 09:37:32 +0100170 See Documentation/admin-guide/dynamic-debug-howto.rst for additional
171 information.
Dave Hansen604ff0d2013-07-01 13:04:49 -0700172
Orson Zhaiceabef72020-06-07 21:40:14 -0700173config DYNAMIC_DEBUG_CORE
174 bool "Enable core function of dynamic debug support"
175 depends on PRINTK
176 depends on (DEBUG_FS || PROC_FS)
177 help
178 Enable core functional support of dynamic debug. It is useful
179 when you want to tie dynamic debug to your kernel modules with
180 DYNAMIC_DEBUG_MODULE defined for each of them, especially for
181 the case of embedded system where the kernel image size is
182 sensitive for people.
183
Rasmus Villemoes57f56772019-10-15 21:07:05 +0200184config SYMBOLIC_ERRNAME
185 bool "Support symbolic error names in printf"
186 default y if PRINTK
187 help
188 If you say Y here, the kernel's printf implementation will
189 be able to print symbolic error names such as ENOSPC instead
190 of the number 28. It makes the kernel image slightly larger
191 (about 3KB), but can make the kernel logs easier to read.
192
Changbin Du2b05bb72019-12-06 17:04:03 -0800193config DEBUG_BUGVERBOSE
194 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
195 depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
196 default y
197 help
198 Say Y here to make BUG() panics output the file name and line number
199 of the BUG call as well as the EIP and oops trace. This aids
200 debugging but costs about 70-100K of memory.
201
Dave Hansen604ff0d2013-07-01 13:04:49 -0700202endmenu # "printk and dmesg options"
203
Dave Hansen6dfc0662013-07-01 13:04:46 -0700204menu "Compile-time checks and compiler options"
205
206config DEBUG_INFO
207 bool "Compile the kernel with debug info"
Linus Torvalds12b13832014-02-04 12:20:01 -0800208 depends on DEBUG_KERNEL && !COMPILE_TEST
Dave Hansen6dfc0662013-07-01 13:04:46 -0700209 help
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800210 If you say Y here the resulting kernel image will include
Dave Hansen6dfc0662013-07-01 13:04:46 -0700211 debugging info resulting in a larger kernel image.
212 This adds debug symbols to the kernel and modules (gcc -g), and
213 is needed if you intend to use kernel crashdump or binary object
214 tools like crash, kgdb, LKCD, gdb, etc on the kernel.
215 Say Y here only if you plan to debug the kernel.
216
217 If unsure, say N.
218
Sedat Dilek695afd32020-08-16 14:32:44 +0200219if DEBUG_INFO
220
Dave Hansen6dfc0662013-07-01 13:04:46 -0700221config DEBUG_INFO_REDUCED
222 bool "Reduce debugging information"
Dave Hansen6dfc0662013-07-01 13:04:46 -0700223 help
224 If you say Y here gcc is instructed to generate less debugging
225 information for structure types. This means that tools that
226 need full debugging information (like kgdb or systemtap) won't
227 be happy. But if you merely need debugging information to
228 resolve line numbers there is no loss. Advantage is that
229 build directory object sizes shrink dramatically over a full
230 DEBUG_INFO build and compile times are reduced too.
231 Only works with newer gcc versions.
232
Nick Desaulniers10e68b022020-05-26 10:18:29 -0700233config DEBUG_INFO_COMPRESSED
234 bool "Compressed debugging information"
Nick Desaulniers10e68b022020-05-26 10:18:29 -0700235 depends on $(cc-option,-gz=zlib)
Nick Desaulniers10e68b022020-05-26 10:18:29 -0700236 depends on $(ld-option,--compress-debug-sections=zlib)
237 help
238 Compress the debug information using zlib. Requires GCC 5.0+ or Clang
239 5.0+, binutils 2.26+, and zlib.
240
241 Users of dpkg-deb via scripts/package/builddeb may find an increase in
242 size of their debug .deb packages with this config set, due to the
243 debug info being compressed with zlib, then the object files being
244 recompressed with a different compression scheme. But this is still
245 preferable to setting $KDEB_COMPRESS to "none" which would be even
246 larger.
247
Andi Kleen866ced92014-07-30 20:50:18 +0200248config DEBUG_INFO_SPLIT
249 bool "Produce split debuginfo in .dwo files"
Masahiro Yamada9d937442019-02-22 16:56:09 +0900250 depends on $(cc-option,-gsplit-dwarf)
Andi Kleen866ced92014-07-30 20:50:18 +0200251 help
252 Generate debug info into separate .dwo files. This significantly
253 reduces the build directory size for builds with DEBUG_INFO,
254 because it stores the information only once on disk in .dwo
255 files instead of multiple times in object files and executables.
256 In addition the debug information is also compressed.
257
258 Requires recent gcc (4.7+) and recent gdb/binutils.
259 Any tool that packages or reads debug information would need
260 to know about the .dwo files and include them.
261 Incompatible with older versions of ccache.
262
Andi Kleenbfaf2dd2014-07-30 20:50:19 +0200263config DEBUG_INFO_DWARF4
264 bool "Generate dwarf4 debuginfo"
Masahiro Yamada9d937442019-02-22 16:56:09 +0900265 depends on $(cc-option,-gdwarf-4)
Andi Kleenbfaf2dd2014-07-30 20:50:19 +0200266 help
267 Generate dwarf4 debug info. This requires recent versions
268 of gcc and gdb. It makes the debug information larger.
269 But it significantly improves the success of resolving
270 variables in gdb on optimized code.
271
Andrii Nakryikoe83b9f52019-04-02 09:49:50 -0700272config DEBUG_INFO_BTF
273 bool "Generate BTF typeinfo"
Slava Bacherikov7d32e692020-04-02 23:41:39 +0300274 depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
275 depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
Andrii Nakryikoe83b9f52019-04-02 09:49:50 -0700276 help
277 Generate deduplicated BTF type information from DWARF debug info.
278 Turning this on expects presence of pahole tool, which will convert
279 DWARF type info into equivalent deduplicated BTF type info.
280
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800281config GDB_SCRIPTS
282 bool "Provide GDB scripts for kernel debugging"
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800283 help
284 This creates the required links to GDB helper scripts in the
285 build directory. If you load vmlinux into gdb, the helper
286 scripts will be automatically imported by gdb as well, and
287 additional functions are available to analyze a Linux kernel
Andreas Platschek700199b02016-12-14 15:05:40 -0800288 instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
289 for further details.
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800290
Sedat Dilek695afd32020-08-16 14:32:44 +0200291endif # DEBUG_INFO
292
Andrew Mortoncebc04b2006-08-14 22:43:18 -0700293config ENABLE_MUST_CHECK
294 bool "Enable __must_check logic"
295 default y
296 help
297 Enable the __must_check logic in the kernel build. Disable this to
298 suppress the "warning: ignoring return value of 'foo', declared with
299 attribute warn_unused_result" messages.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700300
Andi Kleen35bb5b12008-02-22 15:15:03 +0100301config FRAME_WARN
Masahiro Yamadaa83e4ca2020-02-17 00:19:36 +0900302 int "Warn for stack frames larger than"
Andi Kleen35bb5b12008-02-22 15:15:03 +0100303 range 0 8192
Kees Cook0e07f662016-10-27 17:46:41 -0700304 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
Helge Deller19d91d32021-11-19 22:31:03 +0100305 default 2048 if PARISC
306 default 1536 if (!64BIT && XTENSA)
Lee Jonesf09ac622022-11-25 12:07:50 +0000307 default 1280 if KASAN && !64BIT
Helge Deller19d91d32021-11-19 22:31:03 +0100308 default 1024 if !64BIT
Andi Kleen35bb5b12008-02-22 15:15:03 +0100309 default 2048 if 64BIT
310 help
311 Tell gcc to warn at build time for stack frames larger than this.
312 Setting this too low will cause a lot of warnings.
313 Setting it to 0 disables the warning.
Andi Kleen35bb5b12008-02-22 15:15:03 +0100314
Randy Dunlap99657c72009-09-18 12:49:22 -0700315config STRIP_ASM_SYMS
316 bool "Strip assembler-generated symbols during link"
317 default n
318 help
319 Strip internal assembler-generated symbols during a link (symbols
320 that look like '.Lxxx') so they don't pollute the output of
321 get_wchan() and suchlike.
322
Andi Kleen1873e872012-03-28 11:51:18 -0700323config READABLE_ASM
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800324 bool "Generate readable assembler code"
325 depends on DEBUG_KERNEL
Don Mullisbf4735a2006-12-10 02:18:37 -0800326 help
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800327 Disable some compiler optimizations that tend to generate human unreadable
328 assembler output. This may make the kernel slightly slower, but it helps
329 to keep kernel developers who have to stare a lot at assembler listings
330 sane.
Don Mullisbf4735a2006-12-10 02:18:37 -0800331
Masahiro Yamadae949f4c2019-06-04 19:13:59 +0900332config HEADERS_INSTALL
333 bool "Install uapi headers to usr/include"
Don Mullisbf4735a2006-12-10 02:18:37 -0800334 depends on !UML
335 help
Masahiro Yamadae949f4c2019-06-04 19:13:59 +0900336 This option will install uapi headers (headers exported to user-space)
337 into the usr/include directory for use during the kernel build.
338 This is unneeded for building the kernel itself, but needed for some
339 user-space program samples. It is also needed by some features such
340 as uapi header sanity checks.
341
Sam Ravnborg91341d42008-01-21 21:31:44 +0100342config DEBUG_SECTION_MISMATCH
343 bool "Enable full Section mismatch analysis"
Sam Ravnborg91341d42008-01-21 21:31:44 +0100344 help
345 The section mismatch analysis checks if there are illegal
346 references from one section to another section.
Michael Wittene809ab02011-04-17 04:08:48 +0000347 During linktime or runtime, some sections are dropped;
348 any use of code/data previously in these sections would
Sam Ravnborg91341d42008-01-21 21:31:44 +0100349 most likely result in an oops.
Michael Wittene809ab02011-04-17 04:08:48 +0000350 In the code, functions and variables are annotated with
Paul Gortmaker0db06282013-06-19 14:53:51 -0400351 __init,, etc. (see the full list in include/linux/init.h),
Geert Uytterhoevend6fbfa42008-01-30 11:13:23 +0100352 which results in the code/data being placed in specific sections.
Michael Wittene809ab02011-04-17 04:08:48 +0000353 The section mismatch analysis is always performed after a full
354 kernel build, and enabling this option causes the following
Masahiro Yamadab7dca6d2019-07-17 15:17:57 +0900355 additional step to occur:
Michael Wittene809ab02011-04-17 04:08:48 +0000356 - Add the option -fno-inline-functions-called-once to gcc commands.
357 When inlining a function annotated with __init in a non-init
358 function, we would lose the section information and thus
Sam Ravnborg91341d42008-01-21 21:31:44 +0100359 the analysis would not catch the illegal reference.
Michael Wittene809ab02011-04-17 04:08:48 +0000360 This option tells gcc to inline less (but it does result in
361 a larger kernel).
Sam Ravnborg91341d42008-01-21 21:31:44 +0100362
Nicolas Boichat47490ec2015-10-06 09:44:42 +1030363config SECTION_MISMATCH_WARN_ONLY
364 bool "Make section mismatch errors non-fatal"
365 default y
366 help
367 If you say N here, the build process will fail if there are any
368 section mismatch, instead of just throwing warnings.
369
370 If unsure, say Y.
371
Feng Tang09c60542020-08-11 18:34:13 -0700372config DEBUG_FORCE_FUNCTION_ALIGN_32B
373 bool "Force all function address 32B aligned" if EXPERT
374 help
375 There are cases that a commit from one domain changes the function
376 address alignment of other domains, and cause magic performance
377 bump (regression or improvement). Enable this option will help to
378 verify if the bump is caused by function alignment changes, while
379 it will slightly increase the kernel size and affect icache usage.
380
381 It is mainly for debug and performance tuning use.
382
Dave Hansen6dfc0662013-07-01 13:04:46 -0700383#
384# Select this config option from the architecture Kconfig, if it
385# is preferred to always offer frame pointers as a config
386# option on the architecture (regardless of KERNEL_DEBUG):
387#
388config ARCH_WANT_FRAME_POINTERS
389 bool
Dave Hansen6dfc0662013-07-01 13:04:46 -0700390
391config FRAME_POINTER
392 bool "Compile the kernel with frame pointers"
Arnd Bergmanna687a532018-03-07 23:30:54 +0100393 depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
Dave Hansen6dfc0662013-07-01 13:04:46 -0700394 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
395 help
396 If you say Y here the resulting kernel image will be slightly
397 larger and slower, but it gives very useful debugging information
398 in case of kernel bugs. (precise oopses/stacktraces/warnings)
399
Josh Poimboeufb9ab5eb2016-02-28 22:22:42 -0600400config STACK_VALIDATION
401 bool "Compile-time stack metadata validation"
402 depends on HAVE_STACK_VALIDATION
403 default n
404 help
405 Add compile-time checks to validate stack metadata, including frame
406 pointers (if CONFIG_FRAME_POINTER is enabled). This helps ensure
407 that runtime stack traces are more reliable.
408
Josh Poimboeufee9f8fc2017-07-24 18:36:57 -0500409 This is also a prerequisite for generation of ORC unwind data, which
Josh Poimboeuf11af8472017-10-13 15:02:00 -0500410 is needed for CONFIG_UNWINDER_ORC.
Josh Poimboeufee9f8fc2017-07-24 18:36:57 -0500411
Josh Poimboeufb9ab5eb2016-02-28 22:22:42 -0600412 For more information, see
413 tools/objtool/Documentation/stack-validation.txt.
414
Peter Zijlstra6804c1a2020-03-18 13:33:54 +0100415config VMLINUX_VALIDATION
416 bool
417 depends on STACK_VALIDATION && DEBUG_ENTRY && !PARAVIRT
418 default y
419
Dave Hansen6dfc0662013-07-01 13:04:46 -0700420config DEBUG_FORCE_WEAK_PER_CPU
421 bool "Force weak per-cpu definitions"
422 depends on DEBUG_KERNEL
423 help
424 s390 and alpha require percpu variables in modules to be
425 defined weak to work around addressing range issue which
426 puts the following two restrictions on percpu variable
427 definitions.
428
429 1. percpu symbols must be unique whether static or not
430 2. percpu variables can't be defined inside a function
431
432 To ensure that generic code follows the above rules, this
433 option forces all percpu variables to be defined as weak.
434
435endmenu # "Compiler options"
436
Changbin Du6210b642019-12-06 17:03:42 -0800437menu "Generic Kernel Debugging Instruments"
438
Dave Hansen6dfc0662013-07-01 13:04:46 -0700439config MAGIC_SYSRQ
440 bool "Magic SysRq key"
441 depends on !UML
442 help
443 If you say Y here, you will have some control over the system even
444 if the system crashes for example during kernel debugging (e.g., you
445 will be able to flush the buffer cache to disk, reboot the system
446 immediately or dump some status information). This is accomplished
447 by pressing various keys while holding SysRq (Alt+PrintScreen). It
448 also works on a serial console (on PC hardware at least), if you
449 send a BREAK and then within 5 seconds a command keypress. The
Hans Holmbergf8998c22017-03-16 09:37:32 +0100450 keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
451 Don't say Y unless you really know what this hack does.
Dave Hansen6dfc0662013-07-01 13:04:46 -0700452
Ben Hutchings8eaede42013-10-07 01:05:46 +0100453config MAGIC_SYSRQ_DEFAULT_ENABLE
454 hex "Enable magic SysRq key functions by default"
455 depends on MAGIC_SYSRQ
456 default 0x1
457 help
458 Specifies which SysRq key functions are enabled by default.
459 This may be set to 1 or 0 to enable or disable them all, or
Hans Holmbergf8998c22017-03-16 09:37:32 +0100460 to a bitmask as described in Documentation/admin-guide/sysrq.rst.
Ben Hutchings8eaede42013-10-07 01:05:46 +0100461
Felix Fietkau732dbf32016-12-22 08:31:34 +0100462config MAGIC_SYSRQ_SERIAL
463 bool "Enable magic SysRq key over serial"
464 depends on MAGIC_SYSRQ
465 default y
466 help
467 Many embedded boards have a disconnected TTL level serial which can
468 generate some garbage that can lead to spurious false sysrq detects.
469 This option allows you to decide whether you want to enable the
470 magic SysRq key.
471
Dmitry Safonov68af4312020-03-02 17:51:35 +0000472config MAGIC_SYSRQ_SERIAL_SEQUENCE
473 string "Char sequence that enables magic SysRq over serial"
474 depends on MAGIC_SYSRQ_SERIAL
475 default ""
476 help
477 Specifies a sequence of characters that can follow BREAK to enable
478 SysRq on a serial console.
479
Dmitry Safonovd3394b32020-03-06 15:31:56 +0000480 If unsure, leave an empty string and the option will not be enabled.
481
Changbin Duec29a5c2019-12-06 17:04:06 -0800482config DEBUG_FS
483 bool "Debug Filesystem"
484 help
485 debugfs is a virtual file system that kernel developers use to put
486 debugging files into. Enable this option to be able to read and
487 write to these files.
488
489 For detailed documentation on the debugfs API, see
490 Documentation/filesystems/.
491
492 If unsure, say N.
493
Peter Enderborga24c6f72020-07-16 09:15:11 +0200494choice
495 prompt "Debugfs default access"
496 depends on DEBUG_FS
497 default DEBUG_FS_ALLOW_ALL
498 help
499 This selects the default access restrictions for debugfs.
500 It can be overridden with kernel command line option
501 debugfs=[on,no-mount,off]. The restrictions apply for API access
502 and filesystem registration.
503
504config DEBUG_FS_ALLOW_ALL
505 bool "Access normal"
506 help
507 No restrictions apply. Both API and filesystem registration
508 is on. This is the normal default operation.
509
510config DEBUG_FS_DISALLOW_MOUNT
511 bool "Do not register debugfs as filesystem"
512 help
513 The API is open but filesystem is not loaded. Clients can still do
514 their work and read with debug tools that do not need
515 debugfs filesystem.
516
517config DEBUG_FS_ALLOW_NONE
518 bool "No access"
519 help
520 Access is off. Clients get -PERM when trying to create nodes in
521 debugfs tree and debugfs is not registered as a filesystem.
522 Client can then back-off or continue without debugfs access.
523
524endchoice
525
Changbin Du6210b642019-12-06 17:03:42 -0800526source "lib/Kconfig.kgdb"
Changbin Du6210b642019-12-06 17:03:42 -0800527source "lib/Kconfig.ubsan"
Changbin Du2645d432020-09-18 21:20:42 -0700528source "lib/Kconfig.kcsan"
Changbin Du6210b642019-12-06 17:03:42 -0800529
530endmenu
531
Adrian Bunkf346f4b2006-01-09 20:54:51 -0800532config DEBUG_KERNEL
533 bool "Kernel debugging"
534 help
535 Say Y here if you are developing drivers or trying to debug and
536 identify kernel problems.
537
Sinan Kayac66d7a22019-05-14 15:44:00 -0700538config DEBUG_MISC
539 bool "Miscellaneous debug code"
540 default DEBUG_KERNEL
541 depends on DEBUG_KERNEL
542 help
543 Say Y here if you need to enable miscellaneous debug code that should
544 be under a more specific debug option but isn't.
545
546
Dave Hansen0610c8a2013-07-01 13:04:43 -0700547menu "Memory Debugging"
David Woodhousea304e1b2007-02-12 00:52:00 -0800548
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900549source "mm/Kconfig.debug"
Ingo Molnar82f67cd2007-02-16 01:28:13 -0800550
Thomas Gleixner3ac7fe52008-04-30 00:55:01 -0700551config DEBUG_OBJECTS
552 bool "Debug object operations"
553 depends on DEBUG_KERNEL
554 help
555 If you say Y here, additional code will be inserted into the
556 kernel to track the life time of various objects and validate
557 the operations on those objects.
558
559config DEBUG_OBJECTS_SELFTEST
560 bool "Debug objects selftest"
561 depends on DEBUG_OBJECTS
562 help
563 This enables the selftest of the object debug code.
564
565config DEBUG_OBJECTS_FREE
566 bool "Debug objects in freed memory"
567 depends on DEBUG_OBJECTS
568 help
569 This enables checks whether a k/v free operation frees an area
570 which contains an object which has not been deactivated
571 properly. This can make kmalloc/kfree-intensive workloads
572 much slower.
573
Thomas Gleixnerc6f3a972008-04-30 00:55:03 -0700574config DEBUG_OBJECTS_TIMERS
575 bool "Debug timer objects"
576 depends on DEBUG_OBJECTS
577 help
578 If you say Y here, additional code will be inserted into the
579 timer routines to track the life time of timer objects and
580 validate the timer operations.
581
Thomas Gleixnerdc186ad2009-11-16 01:09:48 +0900582config DEBUG_OBJECTS_WORK
583 bool "Debug work objects"
584 depends on DEBUG_OBJECTS
585 help
586 If you say Y here, additional code will be inserted into the
587 work queue routines to track the life time of work objects and
588 validate the work operations.
589
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400590config DEBUG_OBJECTS_RCU_HEAD
591 bool "Debug RCU callbacks objects"
Mathieu Desnoyersfc2ecf72011-02-23 09:42:14 -0800592 depends on DEBUG_OBJECTS
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400593 help
594 Enable this to turn on debugging of RCU list heads (call_rcu() usage).
595
Tejun Heoe2852ae2010-10-26 14:23:05 -0700596config DEBUG_OBJECTS_PERCPU_COUNTER
597 bool "Debug percpu counter objects"
598 depends on DEBUG_OBJECTS
599 help
600 If you say Y here, additional code will be inserted into the
601 percpu counter routines to track the life time of percpu counter
602 objects and validate the percpu counter operations.
603
Ingo Molnar3ae70202008-11-26 10:02:00 +0100604config DEBUG_OBJECTS_ENABLE_DEFAULT
605 int "debug_objects bootup default value (0-1)"
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800606 range 0 1
607 default "1"
608 depends on DEBUG_OBJECTS
609 help
610 Debug objects boot parameter default value
Ingo Molnar3ae70202008-11-26 10:02:00 +0100611
Linus Torvalds1da177e2005-04-16 15:20:36 -0700612config DEBUG_SLAB
Andrew Morton4a2f0ac2006-03-25 03:07:22 -0800613 bool "Debug slab memory allocations"
Levin, Alexander (Sasha Levin)4675ff02017-11-15 17:36:02 -0800614 depends on DEBUG_KERNEL && SLAB
Linus Torvalds1da177e2005-04-16 15:20:36 -0700615 help
616 Say Y here to have the kernel do limited verification on memory
617 allocation as well as poisoning memory on free to catch use of freed
618 memory. This can make kmalloc/kfree-intensive workloads much slower.
619
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700620config SLUB_DEBUG_ON
621 bool "SLUB debugging on by default"
Levin, Alexander (Sasha Levin)4675ff02017-11-15 17:36:02 -0800622 depends on SLUB && SLUB_DEBUG
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700623 default n
624 help
625 Boot with debugging on by default. SLUB boots by default with
626 the runtime debug capabilities switched off. Enabling this is
627 equivalent to specifying the "slub_debug" parameter on boot.
628 There is no support for more fine grained debug control like
629 possible with slub_debug=xxx. SLUB debugging may be switched
630 off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
631 "slub_debug=-".
632
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800633config SLUB_STATS
634 default n
635 bool "Enable SLUB performance statistics"
Christoph Lameterab4d5ed2010-10-05 13:57:26 -0500636 depends on SLUB && SYSFS
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800637 help
638 SLUB statistics are useful to debug SLUBs allocation behavior in
639 order find ways to optimize the allocator. This should never be
640 enabled for production use since keeping statistics slows down
641 the allocator by a few percentage points. The slabinfo command
642 supports the determination of the most active slabs to figure
643 out which slabs are relevant to a particular load.
644 Try running: slabinfo -DA
645
Catalin Marinasb69ec422012-10-08 16:28:11 -0700646config HAVE_DEBUG_KMEMLEAK
647 bool
648
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100649config DEBUG_KMEMLEAK
650 bool "Kernel memory leak detector"
Kees Cook525c1f92013-01-16 18:54:16 -0800651 depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
Catalin Marinas79e0d9b2011-04-27 17:06:19 +0100652 select DEBUG_FS
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100653 select STACKTRACE if STACKTRACE_SUPPORT
654 select KALLSYMS
Randy Dunlapb60e26a2009-11-06 15:33:45 -0800655 select CRC32
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100656 help
657 Say Y here if you want to enable the memory leak
658 detector. The memory allocation/freeing is traced in a way
659 similar to the Boehm's conservative garbage collector, the
660 difference being that the orphan objects are not freed but
661 only shown in /sys/kernel/debug/kmemleak. Enabling this
662 feature will introduce an overhead to memory
Andreas Platschek700199b02016-12-14 15:05:40 -0800663 allocations. See Documentation/dev-tools/kmemleak.rst for more
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100664 details.
665
Catalin Marinasbf96d1e2009-06-23 14:40:27 +0100666 Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
667 of finding leaks due to the slab objects poisoning.
668
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100669 In order to access the kmemleak file, debugfs needs to be
670 mounted (usually at /sys/kernel/debug).
671
Catalin Marinasc5665862019-09-23 15:34:05 -0700672config DEBUG_KMEMLEAK_MEM_POOL_SIZE
673 int "Kmemleak memory pool size"
Catalin Marinasa9d90582009-06-25 10:16:11 +0100674 depends on DEBUG_KMEMLEAK
Qian Caic59180a2019-09-23 15:34:10 -0700675 range 200 1000000
Nicolas Boichatb751c522019-09-23 15:33:55 -0700676 default 16000
Catalin Marinasa9d90582009-06-25 10:16:11 +0100677 help
678 Kmemleak must track all the memory allocations to avoid
679 reporting false positives. Since memory may be allocated or
Catalin Marinasc5665862019-09-23 15:34:05 -0700680 freed before kmemleak is fully initialised, use a static pool
681 of metadata objects to track such callbacks. After kmemleak is
682 fully initialised, this memory pool acts as an emergency one
683 if slab allocations fail.
Catalin Marinasa9d90582009-06-25 10:16:11 +0100684
Catalin Marinas0822ee42009-06-11 13:24:14 +0100685config DEBUG_KMEMLEAK_TEST
686 tristate "Simple test for the kernel memory leak detector"
Daniel Baluta97182692011-04-04 15:06:44 -0700687 depends on DEBUG_KMEMLEAK && m
Catalin Marinas0822ee42009-06-11 13:24:14 +0100688 help
Daniel Baluta97182692011-04-04 15:06:44 -0700689 This option enables a module that explicitly leaks memory.
Catalin Marinas0822ee42009-06-11 13:24:14 +0100690
691 If unsure, say N.
692
Jason Baronab0155a2010-07-19 11:54:17 +0100693config DEBUG_KMEMLEAK_DEFAULT_OFF
694 bool "Default kmemleak to off"
695 depends on DEBUG_KMEMLEAK
696 help
697 Say Y here to disable kmemleak by default. It can then be enabled
698 on the command line via kmemleak=on.
699
Sri Krishna chowdaryd53ce042018-12-28 00:38:54 -0800700config DEBUG_KMEMLEAK_AUTO_SCAN
701 bool "Enable kmemleak auto scan thread on boot up"
702 default y
703 depends on DEBUG_KMEMLEAK
704 help
705 Depending on the cpu, kmemleak scan may be cpu intensive and can
706 stall user tasks at times. This option enables/disables automatic
707 kmemleak scan at boot up.
708
709 Say N here to disable kmemleak auto scan thread to stop automatic
710 scanning. Disabling this option disables automatic reporting of
711 memory leaks.
712
713 If unsure, say Y.
714
Dave Hansen0610c8a2013-07-01 13:04:43 -0700715config DEBUG_STACK_USAGE
716 bool "Stack utilization instrumentation"
Helge Deller6c31da32016-03-19 17:54:10 +0100717 depends on DEBUG_KERNEL && !IA64
Dave Hansen0610c8a2013-07-01 13:04:43 -0700718 help
719 Enables the display of the minimum amount of free stack which each
720 task has ever had available in the sysrq-T and sysrq-P debug output.
721
722 This option will slow down process creation somewhat.
723
Changbin Dudc9b9632019-12-06 17:03:57 -0800724config SCHED_STACK_END_CHECK
725 bool "Detect stack corruption on calls to schedule()"
726 depends on DEBUG_KERNEL
727 default n
728 help
729 This option checks for a stack overrun on calls to schedule().
730 If the stack end location is found to be over written always panic as
731 the content of the corrupted region can no longer be trusted.
732 This is to ensure no erroneous behaviour occurs which could result in
733 data corruption or a sporadic crash at a later stage once the region
734 is examined. The runtime overhead introduced is minimal.
735
Anshuman Khandual399145f2020-06-04 16:47:15 -0700736config ARCH_HAS_DEBUG_VM_PGTABLE
737 bool
738 help
739 An architecture should select this when it can successfully
740 build and run DEBUG_VM_PGTABLE.
741
Dave Hansen0610c8a2013-07-01 13:04:43 -0700742config DEBUG_VM
743 bool "Debug VM"
744 depends on DEBUG_KERNEL
745 help
746 Enable this to turn on extended checks in the virtual-memory system
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800747 that may impact performance.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700748
749 If unsure, say N.
750
Davidlohr Bueso4f115142014-06-04 16:06:46 -0700751config DEBUG_VM_VMACACHE
752 bool "Debug VMA caching"
753 depends on DEBUG_VM
754 help
755 Enable this to turn on VMA caching debug information. Doing so
756 can cause significant overhead, so only enable it in non-production
757 environments.
758
759 If unsure, say N.
760
Dave Hansen0610c8a2013-07-01 13:04:43 -0700761config DEBUG_VM_RB
762 bool "Debug VM red-black trees"
763 depends on DEBUG_VM
764 help
Davidlohr Buesoa663dad2014-04-18 15:07:22 -0700765 Enable VM red-black tree debugging information and extra validations.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700766
767 If unsure, say N.
768
Kirill A. Shutemov95ad9752016-01-15 16:51:21 -0800769config DEBUG_VM_PGFLAGS
770 bool "Debug page-flags operations"
771 depends on DEBUG_VM
772 help
773 Enables extra validation on page flags operations.
774
775 If unsure, say N.
776
Anshuman Khandual399145f2020-06-04 16:47:15 -0700777config DEBUG_VM_PGTABLE
778 bool "Debug arch page table for semantics compliance"
779 depends on MMU
780 depends on ARCH_HAS_DEBUG_VM_PGTABLE
781 default y if DEBUG_VM
782 help
783 This option provides a debug method which can be used to test
784 architecture page table helper functions on various platforms in
785 verifying if they comply with expected generic MM semantics. This
786 will help architecture code in making sure that any changes or
787 new additions of these helpers still conform to expected
788 semantics of the generic MM. Platforms will have to opt in for
789 this through ARCH_HAS_DEBUG_VM_PGTABLE.
790
791 If unsure, say N.
792
Laura Abbottfa5b6ec2017-01-10 13:35:40 -0800793config ARCH_HAS_DEBUG_VIRTUAL
794 bool
795
Dave Hansen0610c8a2013-07-01 13:04:43 -0700796config DEBUG_VIRTUAL
797 bool "Debug VM translations"
Laura Abbottfa5b6ec2017-01-10 13:35:40 -0800798 depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL
Dave Hansen0610c8a2013-07-01 13:04:43 -0700799 help
800 Enable some costly sanity checks in virtual to page code. This can
801 catch mistakes with virt_to_page() and friends.
802
803 If unsure, say N.
804
805config DEBUG_NOMMU_REGIONS
806 bool "Debug the global anon/private NOMMU mapping region tree"
807 depends on DEBUG_KERNEL && !MMU
808 help
809 This option causes the global tree of anonymous and private mapping
810 regions to be regularly checked for invalid topology.
811
812config DEBUG_MEMORY_INIT
813 bool "Debug memory initialisation" if EXPERT
814 default !EXPERT
815 help
816 Enable this for additional checks during memory initialisation.
817 The sanity checks verify aspects of the VM such as the memory model
818 and other information provided by the architecture. Verbose
819 information will be printed at KERN_DEBUG loglevel depending
820 on the mminit_loglevel= command-line option.
821
822 If unsure, say Y
823
824config MEMORY_NOTIFIER_ERROR_INJECT
825 tristate "Memory hotplug notifier error injection module"
826 depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
827 help
828 This option provides the ability to inject artificial errors to
829 memory hotplug notifier chain callbacks. It is controlled through
830 debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
831
832 If the notifier call chain should be failed with some events
833 notified, write the error code to "actions/<notifier event>/error".
834
835 Example: Inject memory hotplug offline error (-12 == -ENOMEM)
836
837 # cd /sys/kernel/debug/notifier-error-inject/memory
838 # echo -12 > actions/MEM_GOING_OFFLINE/error
839 # echo offline > /sys/devices/system/memory/memoryXXX/state
840 bash: echo: write error: Cannot allocate memory
841
842 To compile this code as a module, choose M here: the module will
843 be called memory-notifier-error-inject.
844
845 If unsure, say N.
846
847config DEBUG_PER_CPU_MAPS
848 bool "Debug access to per_cpu maps"
849 depends on DEBUG_KERNEL
850 depends on SMP
851 help
852 Say Y to verify that the per_cpu map being accessed has
853 been set up. This adds a fair amount of code to kernel memory
854 and decreases performance.
855
856 Say N if unsure.
857
858config DEBUG_HIGHMEM
859 bool "Highmem debugging"
860 depends on DEBUG_KERNEL && HIGHMEM
861 help
Geert Uytterhoevenb1357c92014-04-14 18:55:50 +0200862 This option enables additional error checking for high memory
863 systems. Disable for production systems.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700864
865config HAVE_DEBUG_STACKOVERFLOW
866 bool
867
868config DEBUG_STACKOVERFLOW
869 bool "Check for stack overflows"
870 depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
Masahiro Yamadaa7f7f622020-06-14 01:50:22 +0900871 help
Dave Hansen0610c8a2013-07-01 13:04:43 -0700872 Say Y here if you want to check for overflows of kernel, IRQ
Borislav Petkovedb0ec02015-01-25 19:50:34 +0100873 and exception stacks (if your architecture uses them). This
Dave Hansen0610c8a2013-07-01 13:04:43 -0700874 option will show detailed messages if free stack space drops
875 below a certain limit.
876
877 These kinds of bugs usually occur when call-chains in the
878 kernel get too deep, especially when interrupts are
879 involved.
880
881 Use this in cases where you see apparently random memory
882 corruption, especially if it appears in 'struct thread_info'
883
884 If in doubt, say "N".
885
Andrey Ryabinin0b24bec2015-02-13 14:39:17 -0800886source "lib/Kconfig.kasan"
Alexander Potapenkoadb54c72021-01-22 09:18:31 +0000887source "lib/Kconfig.kfence"
Andrey Ryabinin0b24bec2015-02-13 14:39:17 -0800888
Dave Hansen0610c8a2013-07-01 13:04:43 -0700889endmenu # "Memory Debugging"
890
Linus Torvalds1da177e2005-04-16 15:20:36 -0700891config DEBUG_SHIRQ
892 bool "Debug shared IRQ handlers"
Martin Schwidefsky0244ad02013-08-30 09:39:53 +0200893 depends on DEBUG_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700894 help
Wolfram Sang0a2fae22020-07-03 00:20:24 +0200895 Enable this to generate a spurious interrupt just before a shared
896 interrupt handler is deregistered (generating one when registering
897 is currently disabled). Drivers need to handle this correctly. Some
898 don't and need to be caught.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700899
Changbin Duf43a2892019-12-06 17:03:54 -0800900menu "Debug Oops, Lockups and Hangs"
901
902config PANIC_ON_OOPS
903 bool "Panic on Oops"
904 help
905 Say Y here to enable the kernel to panic when it oopses. This
906 has the same effect as setting oops=panic on the kernel command
907 line.
908
909 This feature is useful to ensure that the kernel does not do
910 anything erroneous after an oops which could result in data
911 corruption or other issues.
912
913 Say N if unsure.
914
915config PANIC_ON_OOPS_VALUE
916 int
917 range 0 1
918 default 0 if !PANIC_ON_OOPS
919 default 1 if PANIC_ON_OOPS
920
921config PANIC_TIMEOUT
922 int "panic timeout"
923 default 0
924 help
Tiezhu Yang9d5b1342020-08-11 18:36:49 -0700925 Set the timeout value (in seconds) until a reboot occurs when
Changbin Duf43a2892019-12-06 17:03:54 -0800926 the kernel panics. If n = 0, then we wait forever. A timeout
927 value n > 0 will wait n seconds before rebooting, while a timeout
928 value n < 0 will reboot immediately.
Dave Hansen92aef8fb2013-07-01 13:04:50 -0700929
Linus Torvalds1da177e2005-04-16 15:20:36 -0700930config LOCKUP_DETECTOR
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700931 bool
932
933config SOFTLOCKUP_DETECTOR
934 bool "Detect Soft Lockups"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700935 depends on DEBUG_KERNEL && !S390
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700936 select LOCKUP_DETECTOR
Linus Torvalds1da177e2005-04-16 15:20:36 -0700937 help
938 Say Y here to enable the kernel to act as a watchdog to detect
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700939 soft lockups.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700940
941 Softlockups are bugs that cause the kernel to loop in kernel
942 mode for more than 20 seconds, without giving other tasks a
943 chance to run. The current stack trace is displayed upon
944 detection and the system will stay locked up.
945
Randy Dunlap5f00ae02018-04-10 16:32:51 -0700946config BOOTPARAM_SOFTLOCKUP_PANIC
947 bool "Panic (Reboot) On Soft Lockups"
948 depends on SOFTLOCKUP_DETECTOR
949 help
950 Say Y here to enable the kernel to panic on "soft lockups",
951 which are bugs that cause the kernel to loop in kernel
952 mode for more than 20 seconds (configurable using the watchdog_thresh
953 sysctl), without giving other tasks a chance to run.
954
955 The panic can be used in combination with panic_timeout,
956 to cause the system to reboot automatically after a
957 lockup has been detected. This feature is useful for
958 high-availability systems that have uptime guarantees and
959 where a lockup must be resolved ASAP.
960
961 Say N if unsure.
962
963config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
964 int
965 depends on SOFTLOCKUP_DETECTOR
966 range 0 1
967 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
968 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
969
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700970config HARDLOCKUP_DETECTOR_PERF
971 bool
972 select SOFTLOCKUP_DETECTOR
973
974#
Thomas Gleixner7edaeb62017-08-15 09:50:13 +0200975# Enables a timestamp based low pass filter to compensate for perf based
976# hard lockup detection which runs too fast due to turbo modes.
977#
978config HARDLOCKUP_CHECK_TIMESTAMP
979 bool
980
981#
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700982# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
983# lockup detector rather than the perf based detector.
984#
Colin Cross93d3aff2013-01-11 13:51:48 -0800985config HAVE_HARDLOCKUP_DETECTOR_OTHER_CPU
986 def_bool y
987 depends on NO_GKI
988 depends on SMP
989 depends on !HAVE_HARDLOCKUP_DETECTOR_PERF && !HAVE_HARDLOCKUP_DETECTOR_ARCH
990
991config HARDLOCKUP_DETECTOR_OTHER_CPU
992 bool
993 select SOFTLOCKUP_DETECTOR
994
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700995config HARDLOCKUP_DETECTOR
996 bool "Detect Hard Lockups"
997 depends on DEBUG_KERNEL && !S390
Colin Cross93d3aff2013-01-11 13:51:48 -0800998 depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH || HAVE_HARDLOCKUP_DETECTOR_OTHER_CPU
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700999 select LOCKUP_DETECTOR
1000 select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
Colin Cross93d3aff2013-01-11 13:51:48 -08001001 select HARDLOCKUP_DETECTOR_OTHER_CPU if HAVE_HARDLOCKUP_DETECTOR_OTHER_CPU
Nicholas Piggin05a4a952017-07-12 14:35:46 -07001002 help
1003 Say Y here to enable the kernel to act as a watchdog to detect
1004 hard lockups.
1005
Linus Torvalds1da177e2005-04-16 15:20:36 -07001006 Hardlockups are bugs that cause the CPU to loop in kernel mode
1007 for more than 10 seconds, without letting other interrupts have a
1008 chance to run. The current stack trace is displayed upon detection
1009 and the system will stay locked up.
1010
Linus Torvalds1da177e2005-04-16 15:20:36 -07001011config BOOTPARAM_HARDLOCKUP_PANIC
1012 bool "Panic (Reboot) On Hard Lockups"
1013 depends on HARDLOCKUP_DETECTOR
1014 help
1015 Say Y here to enable the kernel to panic on "hard lockups",
1016 which are bugs that cause the kernel to loop in kernel
1017 mode with interrupts disabled for more than 10 seconds (configurable
1018 using the watchdog_thresh sysctl).
1019
1020 Say N if unsure.
1021
1022config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
1023 int
1024 depends on HARDLOCKUP_DETECTOR
1025 range 0 1
1026 default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
1027 default 1 if BOOTPARAM_HARDLOCKUP_PANIC
1028
Linus Torvalds1da177e2005-04-16 15:20:36 -07001029config DETECT_HUNG_TASK
1030 bool "Detect Hung Tasks"
1031 depends on DEBUG_KERNEL
Nicholas Piggin05a4a952017-07-12 14:35:46 -07001032 default SOFTLOCKUP_DETECTOR
Linus Torvalds1da177e2005-04-16 15:20:36 -07001033 help
1034 Say Y here to enable the kernel to detect "hung tasks",
1035 which are bugs that cause the task to be stuck in
Vivien Didelot96b03ab2016-09-22 16:55:13 -04001036 uninterruptible "D" state indefinitely.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001037
1038 When a hung task is detected, the kernel will print the
1039 current stack trace (which you should report), but the
1040 task will stay in uninterruptible state. If lockdep is
1041 enabled then all held locks will also be reported. This
1042 feature has negligible overhead.
Al Viro871751e2006-03-25 03:06:39 -08001043
1044config DEFAULT_HUNG_TASK_TIMEOUT
1045 int "Default timeout for hung task detection (in seconds)"
1046 depends on DETECT_HUNG_TASK
Linus Torvalds1da177e2005-04-16 15:20:36 -07001047 default 120
1048 help
Ingo Molnar8637c092006-07-03 00:24:38 -07001049 This option controls the default timeout (in seconds) used
Linus Torvalds1da177e2005-04-16 15:20:36 -07001050 to determine when a task has become non-responsive and should
1051 be considered hung.
1052
1053 It can be adjusted at runtime via the kernel.hung_task_timeout_secs
1054 sysctl or by writing a value to
1055 /proc/sys/kernel/hung_task_timeout_secs.
1056
Ingo Molnare7eebaf2006-06-27 02:54:55 -07001057 A timeout of 0 disables the check. The default is two minutes.
1058 Keeping the default should be fine in most cases.
Ingo Molnare7eebaf2006-06-27 02:54:55 -07001059
1060config BOOTPARAM_HUNG_TASK_PANIC
1061 bool "Panic (Reboot) On Hung Tasks"
1062 depends on DETECT_HUNG_TASK
1063 help
1064 Say Y here to enable the kernel to panic on "hung tasks",
1065 which are bugs that cause the kernel to leave a task stuck
1066 in uninterruptible "D" state.
1067
1068 The panic can be used in combination with panic_timeout,
Thomas Gleixner61a87122006-06-27 02:54:56 -07001069 to cause the system to reboot automatically after a
1070 hung task has been detected. This feature is useful for
Roman Zippela1583d32006-06-27 02:55:00 -07001071 high-availability systems that have uptime guarantees and
Thomas Gleixner61a87122006-06-27 02:54:56 -07001072 where a hung tasks must be resolved ASAP.
1073
1074 Say N if unsure.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001075
Hugh Dickins048c8bc2006-11-01 05:44:54 +11001076config BOOTPARAM_HUNG_TASK_PANIC_VALUE
Linus Torvalds1da177e2005-04-16 15:20:36 -07001077 int
1078 depends on DETECT_HUNG_TASK
1079 range 0 1
1080 default 0 if !BOOTPARAM_HUNG_TASK_PANIC
1081 default 1 if BOOTPARAM_HUNG_TASK_PANIC
1082
Tejun Heo82607adc2015-12-08 11:28:04 -05001083config WQ_WATCHDOG
1084 bool "Detect Workqueue Stalls"
1085 depends on DEBUG_KERNEL
1086 help
1087 Say Y here to enable stall detection on workqueues. If a
1088 worker pool doesn't make forward progress on a pending work
1089 item for over a given amount of time, 30s by default, a
1090 warning message is printed along with dump of workqueue
1091 state. This can be configured through kernel parameter
1092 "workqueue.watchdog_thresh" and its sysfs counterpart.
1093
Konstantin Khlebnikov30428ef2020-04-06 20:09:47 -07001094config TEST_LOCKUP
1095 tristate "Test module to generate lockups"
Tiezhu Yang63646bc2020-08-11 18:34:44 -07001096 depends on m
Konstantin Khlebnikov30428ef2020-04-06 20:09:47 -07001097 help
1098 This builds the "test_lockup" module that helps to make sure
1099 that watchdogs and lockup detectors are working properly.
1100
1101 Depending on module parameters it could emulate soft or hard
1102 lockup, "hung task", or locking arbitrary lock for a long time.
1103 Also it could generate series of lockups with cooling-down periods.
1104
1105 If unsure, say N.
1106
Dave Hansen92aef8fb2013-07-01 13:04:50 -07001107endmenu # "Debug lockups and hangs"
1108
Changbin Duebebdd02019-12-06 17:04:00 -08001109menu "Scheduler Debugging"
Jason Baron5800dc32013-11-25 23:23:04 +00001110
Linus Torvalds1da177e2005-04-16 15:20:36 -07001111config SCHED_DEBUG
1112 bool "Collect scheduler debugging info"
1113 depends on DEBUG_KERNEL && PROC_FS
1114 default y
1115 help
1116 If you say Y here, the /proc/sched_debug file will be provided
1117 that can help debug the scheduler. The runtime overhead of this
1118 option is minimal.
1119
Naveen N. Raof6db8342015-06-25 23:53:37 +05301120config SCHED_INFO
1121 bool
1122 default n
1123
Linus Torvalds1da177e2005-04-16 15:20:36 -07001124config SCHEDSTATS
1125 bool "Collect scheduler statistics"
1126 depends on DEBUG_KERNEL && PROC_FS
Naveen N. Raof6db8342015-06-25 23:53:37 +05301127 select SCHED_INFO
Linus Torvalds1da177e2005-04-16 15:20:36 -07001128 help
1129 If you say Y here, additional code will be inserted into the
1130 scheduler and related routines to collect statistics about
1131 scheduler behavior and provide them in /proc/schedstat. These
1132 stats may be useful for both tuning and debugging the scheduler
1133 If you aren't debugging the scheduler or trying to tune a specific
1134 application, you can say N to avoid the very slight overhead
1135 this adds.
1136
Changbin Duebebdd02019-12-06 17:04:00 -08001137endmenu
Aaron Tomlin0d9e2632014-09-12 14:16:19 +01001138
John Stultz3c17ad12015-03-11 21:16:32 -07001139config DEBUG_TIMEKEEPING
1140 bool "Enable extra timekeeping sanity checking"
1141 help
1142 This option will enable additional timekeeping sanity checks
1143 which may be helpful when diagnosing issues where timekeeping
1144 problems are suspected.
1145
1146 This may include checks in the timekeeping hotpaths, so this
1147 option may have a (very small) performance impact to some
1148 workloads.
1149
1150 If unsure, say N.
1151
Linus Torvalds1da177e2005-04-16 15:20:36 -07001152config DEBUG_PREEMPT
1153 bool "Debug preemptible kernel"
Sebastian Andrzej Siewior9f472862019-10-15 21:18:19 +02001154 depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001155 default y
1156 help
1157 If you say Y here then the kernel will use a debug variant of the
1158 commonly used smp_processor_id() function and will print warnings
1159 if kernel code uses it in a preemption-unsafe way. Also, the kernel
1160 will detect preemption count underflows.
1161
Dave Hansen9eade162013-07-01 13:04:47 -07001162menu "Lock Debugging (spinlocks, mutexes, etc...)"
1163
Waiman Longf07cbeb2018-03-30 17:27:59 -04001164config LOCK_DEBUGGING_SUPPORT
1165 bool
1166 depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1167 default y
1168
Waiman Long19193bc2018-03-30 17:28:00 -04001169config PROVE_LOCKING
1170 bool "Lock debugging: prove locking correctness"
1171 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1172 select LOCKDEP
1173 select DEBUG_SPINLOCK
1174 select DEBUG_MUTEXES
1175 select DEBUG_RT_MUTEXES if RT_MUTEXES
Waiman Longc71fd892019-05-20 16:59:00 -04001176 select DEBUG_RWSEMS
Waiman Long19193bc2018-03-30 17:28:00 -04001177 select DEBUG_WW_MUTEX_SLOWPATH
1178 select DEBUG_LOCK_ALLOC
Ahmed S. Darwish8fd8ad52020-07-20 17:55:13 +02001179 select PREEMPT_COUNT if !ARCH_NO_PREEMPT
Waiman Long19193bc2018-03-30 17:28:00 -04001180 select TRACE_IRQFLAGS
1181 default n
1182 help
1183 This feature enables the kernel to prove that all locking
1184 that occurs in the kernel runtime is mathematically
1185 correct: that under no circumstance could an arbitrary (and
1186 not yet triggered) combination of observed locking
1187 sequences (on an arbitrary number of CPUs, running an
1188 arbitrary number of tasks and interrupt contexts) cause a
1189 deadlock.
1190
1191 In short, this feature enables the kernel to report locking
1192 related deadlocks before they actually occur.
1193
1194 The proof does not depend on how hard and complex a
1195 deadlock scenario would be to trigger: how many
1196 participant CPUs, tasks and irq-contexts would be needed
1197 for it to trigger. The proof also does not depend on
1198 timing: if a race and a resulting deadlock is possible
1199 theoretically (no matter how unlikely the race scenario
1200 is), it will be proven so and will immediately be
1201 reported by the kernel (once the event is observed that
1202 makes the deadlock theoretically possible).
1203
1204 If a deadlock is impossible (i.e. the locking rules, as
1205 observed by the kernel, are mathematically correct), the
1206 kernel reports nothing.
1207
1208 NOTE: this feature can also be enabled for rwlocks, mutexes
1209 and rwsems - in which case all dependencies between these
1210 different locking variants are observed and mapped too, and
1211 the proof of observed correctness is also maintained for an
1212 arbitrary combination of these separate locking variants.
1213
Mauro Carvalho Chehab387b1462019-04-10 08:32:41 -03001214 For more details, see Documentation/locking/lockdep-design.rst.
Waiman Long19193bc2018-03-30 17:28:00 -04001215
Peter Zijlstrade8f5e42020-03-21 12:26:01 +01001216config PROVE_RAW_LOCK_NESTING
1217 bool "Enable raw_spinlock - spinlock nesting checks"
1218 depends on PROVE_LOCKING
1219 default n
1220 help
1221 Enable the raw_spinlock vs. spinlock nesting checks which ensure
1222 that the lock nesting rules for PREEMPT_RT enabled kernels are
1223 not violated.
1224
1225 NOTE: There are known nesting problems. So if you enable this
1226 option expect lockdep splats until these problems have been fully
1227 addressed which is work in progress. This config switch allows to
1228 identify and analyze these problems. It will be removed and the
1229 check permanentely enabled once the main issues have been fixed.
1230
1231 If unsure, select N.
1232
Waiman Long19193bc2018-03-30 17:28:00 -04001233config LOCK_STAT
1234 bool "Lock usage statistics"
1235 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1236 select LOCKDEP
1237 select DEBUG_SPINLOCK
1238 select DEBUG_MUTEXES
1239 select DEBUG_RT_MUTEXES if RT_MUTEXES
1240 select DEBUG_LOCK_ALLOC
1241 default n
1242 help
1243 This feature enables tracking lock contention points
1244
Mauro Carvalho Chehab387b1462019-04-10 08:32:41 -03001245 For more details, see Documentation/locking/lockstat.rst
Waiman Long19193bc2018-03-30 17:28:00 -04001246
1247 This also enables lock events required by "perf lock",
1248 subcommand of perf.
1249 If you want to use "perf lock", you also need to turn on
1250 CONFIG_EVENT_TRACING.
1251
1252 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
1253 (CONFIG_LOCKDEP defines "acquire" and "release" events.)
1254
Linus Torvalds1da177e2005-04-16 15:20:36 -07001255config DEBUG_RT_MUTEXES
1256 bool "RT Mutex debugging, deadlock detection"
1257 depends on DEBUG_KERNEL && RT_MUTEXES
1258 help
1259 This allows rt mutex semantics violations and rt mutex related
1260 deadlocks (lockups) to be detected and reported automatically.
1261
Linus Torvalds1da177e2005-04-16 15:20:36 -07001262config DEBUG_SPINLOCK
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001263 bool "Spinlock and rw-lock debugging: basic checks"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001264 depends on DEBUG_KERNEL
Raghavendra K Te335e3e2012-03-22 15:25:08 +05301265 select UNINLINE_SPIN_UNLOCK
Linus Torvalds1da177e2005-04-16 15:20:36 -07001266 help
1267 Say Y here and build SMP to catch missing spinlock initialization
1268 and certain other kinds of spinlock errors commonly made. This is
1269 best used in conjunction with the NMI watchdog so that spinlock
1270 deadlocks are also debuggable.
1271
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001272config DEBUG_MUTEXES
1273 bool "Mutex debugging: basic checks"
1274 depends on DEBUG_KERNEL
1275 help
1276 This feature allows mutex semantics violations to be detected and
1277 reported.
1278
Daniel Vetter23010022013-06-20 13:31:17 +02001279config DEBUG_WW_MUTEX_SLOWPATH
1280 bool "Wait/wound mutex debugging: Slowpath testing"
Waiman Longf07cbeb2018-03-30 17:27:59 -04001281 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Daniel Vetter23010022013-06-20 13:31:17 +02001282 select DEBUG_LOCK_ALLOC
1283 select DEBUG_SPINLOCK
1284 select DEBUG_MUTEXES
1285 help
1286 This feature enables slowpath testing for w/w mutex users by
1287 injecting additional -EDEADLK wound/backoff cases. Together with
1288 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
1289 will test all possible w/w mutex interface abuse with the
1290 exception of simply not acquiring all the required locks.
Rob Clark4d692372014-08-27 11:19:26 -04001291 Note that this feature can introduce significant overhead, so
1292 it really should not be enabled in a production or distro kernel,
1293 even a debug kernel. If you are a driver writer, enable it. If
1294 you are a distro, do not.
Daniel Vetter23010022013-06-20 13:31:17 +02001295
Waiman Long5149cba2018-03-30 17:27:58 -04001296config DEBUG_RWSEMS
1297 bool "RW Semaphore debugging: basic checks"
Waiman Longc71fd892019-05-20 16:59:00 -04001298 depends on DEBUG_KERNEL
Waiman Long5149cba2018-03-30 17:27:58 -04001299 help
Waiman Longc71fd892019-05-20 16:59:00 -04001300 This debugging feature allows mismatched rw semaphore locks
1301 and unlocks to be detected and reported.
Waiman Long5149cba2018-03-30 17:27:58 -04001302
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001303config DEBUG_LOCK_ALLOC
1304 bool "Lock debugging: detect incorrect freeing of live locks"
Waiman Longf07cbeb2018-03-30 17:27:59 -04001305 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001306 select DEBUG_SPINLOCK
1307 select DEBUG_MUTEXES
Peter Zijlstraf5694782016-09-19 12:15:37 +02001308 select DEBUG_RT_MUTEXES if RT_MUTEXES
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001309 select LOCKDEP
1310 help
1311 This feature will check whether any held lock (spinlock, rwlock,
1312 mutex or rwsem) is incorrectly freed by the kernel, via any of the
1313 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
1314 vfree(), etc.), whether a live lock is incorrectly reinitialized via
1315 spin_lock_init()/mutex_init()/etc., or whether there is any lock
1316 held during task exit.
1317
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001318config LOCKDEP
1319 bool
Waiman Longf07cbeb2018-03-30 17:27:59 -04001320 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001321 select STACKTRACE
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001322 select KALLSYMS
1323 select KALLSYMS_ALL
1324
Daniel Jordan395102d2017-04-10 11:50:52 -04001325config LOCKDEP_SMALL
1326 bool
1327
Tetsuo Handa19bf7192021-04-05 20:33:57 +09001328config LOCKDEP_BITS
1329 int "Bitsize for MAX_LOCKDEP_ENTRIES"
1330 depends on LOCKDEP && !LOCKDEP_SMALL
1331 range 10 30
1332 default 15
1333 help
1334 Try increasing this value if you hit "BUG: MAX_LOCKDEP_ENTRIES too low!" message.
1335
1336config LOCKDEP_CHAINS_BITS
1337 int "Bitsize for MAX_LOCKDEP_CHAINS"
1338 depends on LOCKDEP && !LOCKDEP_SMALL
1339 range 10 30
1340 default 16
1341 help
1342 Try increasing this value if you hit "BUG: MAX_LOCKDEP_CHAINS too low!" message.
1343
1344config LOCKDEP_STACK_TRACE_BITS
1345 int "Bitsize for MAX_STACK_TRACE_ENTRIES"
1346 depends on LOCKDEP && !LOCKDEP_SMALL
1347 range 10 30
1348 default 19
1349 help
1350 Try increasing this value if you hit "BUG: MAX_STACK_TRACE_ENTRIES too low!" message.
1351
1352config LOCKDEP_STACK_TRACE_HASH_BITS
1353 int "Bitsize for STACK_TRACE_HASH_SIZE"
1354 depends on LOCKDEP && !LOCKDEP_SMALL
1355 range 10 30
1356 default 14
1357 help
1358 Try increasing this value if you need large MAX_STACK_TRACE_ENTRIES.
1359
1360config LOCKDEP_CIRCULAR_QUEUE_BITS
1361 int "Bitsize for elements in circular_queue struct"
1362 depends on LOCKDEP
1363 range 10 30
1364 default 12
1365 help
1366 Try increasing this value if you hit "lockdep bfs error:-1" warning due to __cq_enqueue() failure.
1367
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001368config DEBUG_LOCKDEP
1369 bool "Lock dependency engine debugging"
Adrian Bunk517e7aa2006-07-14 00:24:32 -07001370 depends on DEBUG_KERNEL && LOCKDEP
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001371 help
1372 If you say Y here, the lock dependency engine will do
1373 additional runtime checks to debug itself, at the price
1374 of more runtime overhead.
1375
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001376config DEBUG_ATOMIC_SLEEP
1377 bool "Sleep inside atomic section checking"
Frederic Weisbeckere8f7c702011-06-08 01:51:02 +02001378 select PREEMPT_COUNT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001379 depends on DEBUG_KERNEL
Christoph Hellwig87a4c372018-07-31 13:39:32 +02001380 depends on !ARCH_NO_PREEMPT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001381 help
1382 If you say Y here, various routines which may sleep will become very
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001383 noisy if they are called inside atomic sections: when a spinlock is
1384 held, inside an rcu read side critical section, inside preempt disabled
1385 sections, inside an interrupt, etc...
Linus Torvalds1da177e2005-04-16 15:20:36 -07001386
Ingo Molnarcae2ed92006-07-03 00:24:48 -07001387config DEBUG_LOCKING_API_SELFTESTS
1388 bool "Locking API boot-time self-tests"
1389 depends on DEBUG_KERNEL
1390 help
1391 Say Y here if you want the kernel to run a short self-test during
1392 bootup. The self-test checks whether common types of locking bugs
1393 are detected by debugging mechanisms or not. (if you disable
1394 lock debugging then those bugs wont be detected of course.)
1395 The following locking APIs are covered: spinlocks, rwlocks,
1396 mutexes and rwsems.
1397
Paul E. McKenney0af3fe12014-02-04 15:51:41 -08001398config LOCK_TORTURE_TEST
1399 tristate "torture tests for locking"
1400 depends on DEBUG_KERNEL
1401 select TORTURE_TEST
Paul E. McKenney0af3fe12014-02-04 15:51:41 -08001402 help
1403 This option provides a kernel module that runs torture tests
1404 on kernel locking primitives. The kernel module may be built
1405 after the fact on the running kernel to be tested, if desired.
1406
1407 Say Y here if you want kernel locking-primitive torture tests
1408 to be built into the kernel.
1409 Say M if you want these torture tests to build as a module.
1410 Say N if you are unsure.
1411
Chris Wilsonf2a5fec2016-12-01 11:47:06 +00001412config WW_MUTEX_SELFTEST
1413 tristate "Wait/wound mutex selftests"
1414 help
1415 This option provides a kernel module that runs tests on the
1416 on the struct ww_mutex locking API.
1417
1418 It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction
1419 with this test harness.
1420
1421 Say M if you want these self tests to build as a module.
1422 Say N if you are unsure.
1423
Paul E. McKenneye9d338a2020-06-24 15:59:59 -07001424config SCF_TORTURE_TEST
1425 tristate "torture tests for smp_call_function*()"
1426 depends on DEBUG_KERNEL
1427 select TORTURE_TEST
1428 help
1429 This option provides a kernel module that runs torture tests
1430 on the smp_call_function() family of primitives. The kernel
1431 module may be built after the fact on the running kernel to
1432 be tested, if desired.
1433
Paul E. McKenney35feb602020-06-30 13:22:54 -07001434config CSD_LOCK_WAIT_DEBUG
1435 bool "Debugging for csd_lock_wait(), called from smp_call_function*()"
1436 depends on DEBUG_KERNEL
1437 depends on 64BIT
1438 default n
1439 help
1440 This option enables debug prints when CPUs are slow to respond
1441 to the smp_call_function*() IPI wrappers. These debug prints
1442 include the IPI handler function currently executing (if any)
1443 and relevant stack traces.
1444
Dave Hansen9eade162013-07-01 13:04:47 -07001445endmenu # lock debugging
1446
1447config TRACE_IRQFLAGS
peterz@infradead.orged004952020-07-27 14:48:52 +02001448 depends on TRACE_IRQFLAGS_SUPPORT
Dave Hansen9eade162013-07-01 13:04:47 -07001449 bool
1450 help
1451 Enables hooks to interrupt enabling and disabling for
1452 either tracing or lock debugging.
1453
peterz@infradead.orged004952020-07-27 14:48:52 +02001454config TRACE_IRQFLAGS_NMI
1455 def_bool y
1456 depends on TRACE_IRQFLAGS
1457 depends on TRACE_IRQFLAGS_NMI_SUPPORT
1458
Ingo Molnar8637c092006-07-03 00:24:38 -07001459config STACKTRACE
Dave Jones0c38e1f2014-08-29 15:18:35 -07001460 bool "Stack backtrace support"
Ingo Molnar8637c092006-07-03 00:24:38 -07001461 depends on STACKTRACE_SUPPORT
Dave Jones0c38e1f2014-08-29 15:18:35 -07001462 help
1463 This option causes the kernel to create a /proc/pid/stack for
1464 every process, showing its current stack trace.
1465 It is also used by various kernel debugging features that require
1466 stack trace generation.
Ingo Molnar8637c092006-07-03 00:24:38 -07001467
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001468config WARN_ALL_UNSEEDED_RANDOM
1469 bool "Warn for all uses of unseeded randomness"
1470 default n
Jason A. Donenfeldd06bfd12017-06-07 23:06:55 -04001471 help
1472 Some parts of the kernel contain bugs relating to their use of
1473 cryptographically secure random numbers before it's actually possible
1474 to generate those numbers securely. This setting ensures that these
1475 flaws don't go unnoticed, by enabling a message, should this ever
1476 occur. This will allow people with obscure setups to know when things
1477 are going wrong, so that they might contact developers about fixing
1478 it.
1479
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001480 Unfortunately, on some models of some architectures getting
1481 a fully seeded CRNG is extremely difficult, and so this can
1482 result in dmesg getting spammed for a surprisingly long
1483 time. This is really bad from a security perspective, and
1484 so architecture maintainers really need to do what they can
1485 to get the CRNG seeded sooner after the system is booted.
Thibaut Sautereau4c5d1142018-09-04 15:46:23 -07001486 However, since users cannot do anything actionable to
Jason A. Donenfeld31ac2942022-05-09 16:13:18 +02001487 address this, by default this option is disabled.
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001488
1489 Say Y here if you want to receive warnings for all uses of
1490 unseeded randomness. This will be of use primarily for
Thibaut Sautereau4c5d1142018-09-04 15:46:23 -07001491 those developers interested in improving the security of
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001492 Linux kernels running on their architecture (or
1493 subarchitecture).
Jason A. Donenfeldd06bfd12017-06-07 23:06:55 -04001494
Linus Torvalds1da177e2005-04-16 15:20:36 -07001495config DEBUG_KOBJECT
1496 bool "kobject debugging"
1497 depends on DEBUG_KERNEL
1498 help
1499 If you say Y here, some extra kobject debugging messages will be sent
Mike Rapoportaca52c32018-10-30 15:07:44 -07001500 to the syslog.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001501
Russell Kingc817a672013-06-27 15:06:14 +01001502config DEBUG_KOBJECT_RELEASE
1503 bool "kobject release debugging"
Linus Torvalds2a999aa2013-10-29 08:33:36 -07001504 depends on DEBUG_OBJECTS_TIMERS
Russell Kingc817a672013-06-27 15:06:14 +01001505 help
1506 kobjects are reference counted objects. This means that their
1507 last reference count put is not predictable, and the kobject can
1508 live on past the point at which a driver decides to drop it's
1509 initial reference to the kobject gained on allocation. An
1510 example of this would be a struct device which has just been
1511 unregistered.
1512
1513 However, some buggy drivers assume that after such an operation,
1514 the memory backing the kobject can be immediately freed. This
1515 goes completely against the principles of a refcounted object.
1516
1517 If you say Y here, the kernel will delay the release of kobjects
1518 on the last reference count to improve the visibility of this
1519 kind of kobject release bug.
1520
Catalin Marinas9b2a60c2012-10-08 16:28:13 -07001521config HAVE_DEBUG_BUGVERBOSE
1522 bool
1523
Changbin Du3be5cbc2019-12-06 17:03:48 -08001524menu "Debug kernel data structures"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001525
Dave Jones199a9af2006-09-29 01:59:00 -07001526config DEBUG_LIST
1527 bool "Debug linked list manipulation"
Arnd Bergmann4520bcb2016-08-26 17:42:00 +02001528 depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
Dave Jones199a9af2006-09-29 01:59:00 -07001529 help
1530 Enable this to turn on extended checks in the linked-list
1531 walking routines.
1532
1533 If unsure, say N.
1534
Davidlohr Bueso8e18fae2019-05-14 15:42:46 -07001535config DEBUG_PLIST
Dan Streetmanb8cfff62014-06-04 16:11:54 -07001536 bool "Debug priority linked list manipulation"
1537 depends on DEBUG_KERNEL
1538 help
1539 Enable this to turn on extended checks in the priority-ordered
1540 linked-list (plist) walking routines. This checks the entire
1541 list multiple times during each manipulation.
1542
1543 If unsure, say N.
1544
Jens Axboed6ec0842007-10-22 20:01:06 +02001545config DEBUG_SG
1546 bool "Debug SG table operations"
1547 depends on DEBUG_KERNEL
1548 help
1549 Enable this to turn on checks on scatter-gather tables. This can
1550 help find problems with drivers that do not properly initialize
1551 their sg tables.
1552
1553 If unsure, say N.
1554
Arjan van de Ven1b2439d2008-08-15 15:29:38 -07001555config DEBUG_NOTIFIERS
1556 bool "Debug notifier call chains"
1557 depends on DEBUG_KERNEL
1558 help
1559 Enable this to turn on sanity checking for notifier call chains.
1560 This is most useful for kernel developers to make sure that
1561 modules properly unregister themselves from notifier chains.
1562 This is a relatively cheap check but if you care about maximum
1563 performance, say N.
1564
Changbin Du3be5cbc2019-12-06 17:03:48 -08001565config BUG_ON_DATA_CORRUPTION
1566 bool "Trigger a BUG when data corruption is detected"
1567 select DEBUG_LIST
1568 help
1569 Select this option if the kernel should BUG when it encounters
1570 data corruption in kernel memory structures when they get checked
1571 for validity.
1572
1573 If unsure, say N.
1574
1575endmenu
1576
David Howellse0e81732009-09-02 09:13:40 +01001577config DEBUG_CREDENTIALS
1578 bool "Debug credential management"
1579 depends on DEBUG_KERNEL
1580 help
1581 Enable this to turn on some debug checking for credential
1582 management. The additional code keeps track of the number of
1583 pointers from task_structs to any given cred struct, and checks to
1584 see that this number never exceeds the usage count of the cred
1585 struct.
1586
1587 Furthermore, if SELinux is enabled, this also checks that the
1588 security pointer in the cred struct is never seen to be invalid.
1589
1590 If unsure, say N.
1591
Paul E. McKenney43a0a2a2017-05-17 09:19:44 -07001592source "kernel/rcu/Kconfig.debug"
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001593
Tejun Heof303fccb2016-02-09 17:59:38 -05001594config DEBUG_WQ_FORCE_RR_CPU
1595 bool "Force round-robin CPU selection for unbound work items"
1596 depends on DEBUG_KERNEL
1597 default n
1598 help
1599 Workqueue used to implicitly guarantee that work items queued
1600 without explicit CPU specified are put on the local CPU. This
1601 guarantee is no longer true and while local CPU is still
1602 preferred work items may be put on foreign CPUs. Kernel
1603 parameter "workqueue.debug_force_rr_cpu" is added to force
1604 round-robin CPU selection to flush out usages which depend on the
1605 now broken guarantee. This config option enables the debug
1606 feature by default. When enabled, memory and cache locality will
1607 be impacted.
1608
Tejun Heo870d6652008-08-25 19:47:25 +09001609config DEBUG_BLOCK_EXT_DEVT
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -08001610 bool "Force extended block device numbers and spread them"
Tejun Heo870d6652008-08-25 19:47:25 +09001611 depends on DEBUG_KERNEL
1612 depends on BLOCK
Jens Axboe759f8ca2008-08-29 09:06:29 +02001613 default n
Tejun Heo870d6652008-08-25 19:47:25 +09001614 help
Tejun Heo0e11e342008-10-13 10:46:01 +02001615 BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1616 SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1617 YOU ARE DOING. Distros, please enable this and fix whatever
1618 is broken.
1619
Tejun Heo870d6652008-08-25 19:47:25 +09001620 Conventionally, block device numbers are allocated from
1621 predetermined contiguous area. However, extended block area
1622 may introduce non-contiguous block device numbers. This
1623 option forces most block device numbers to be allocated from
1624 the extended space and spreads them to discover kernel or
1625 userland code paths which assume predetermined contiguous
1626 device number allocation.
1627
Tejun Heo55dc7db2008-09-01 13:44:35 +02001628 Note that turning on this debug option shuffles all the
1629 device numbers for all IDE and SCSI devices including libata
1630 ones, so root partition specified using device number
1631 directly (via rdev or root=MAJ:MIN) won't work anymore.
1632 Textual device names (root=/dev/sdXn) will continue to work.
1633
Tejun Heo870d6652008-08-25 19:47:25 +09001634 Say N if you are unsure.
1635
Thomas Gleixner757c9892016-02-26 18:43:32 +00001636config CPU_HOTPLUG_STATE_CONTROL
1637 bool "Enable CPU hotplug state control"
1638 depends on DEBUG_KERNEL
1639 depends on HOTPLUG_CPU
1640 default n
1641 help
1642 Allows to write steps between "offline" and "online" to the CPUs
1643 sysfs target file so states can be stepped granular. This is a debug
1644 option for now as the hotplug machinery cannot be stopped and
1645 restarted at arbitrary points yet.
1646
1647 Say N if your are unsure.
1648
Changbin Du09a74952019-12-06 17:03:51 -08001649config LATENCYTOP
1650 bool "Latency measuring infrastructure"
1651 depends on DEBUG_KERNEL
1652 depends on STACKTRACE_SUPPORT
1653 depends on PROC_FS
Julian Braha955da2b2021-04-09 13:27:47 -07001654 depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
Changbin Du09a74952019-12-06 17:03:51 -08001655 select KALLSYMS
1656 select KALLSYMS_ALL
1657 select STACKTRACE
1658 select SCHEDSTATS
1659 select SCHED_DEBUG
1660 help
1661 Enable this option if you want to use the LatencyTOP tool
1662 to find out which userspace is blocking on what kernel operations.
1663
1664source "kernel/trace/Kconfig"
1665
1666config PROVIDE_OHCI1394_DMA_INIT
1667 bool "Remote debugging over FireWire early on boot"
1668 depends on PCI && X86
1669 help
1670 If you want to debug problems which hang or crash the kernel early
1671 on boot and the crashing machine has a FireWire port, you can use
1672 this feature to remotely access the memory of the crashed machine
1673 over FireWire. This employs remote DMA as part of the OHCI1394
1674 specification which is now the standard for FireWire controllers.
1675
1676 With remote DMA, you can monitor the printk buffer remotely using
1677 firescope and access all memory below 4GB using fireproxy from gdb.
1678 Even controlling a kernel debugger is possible using remote DMA.
1679
1680 Usage:
1681
1682 If ohci1394_dma=early is used as boot parameter, it will initialize
1683 all OHCI1394 controllers which are found in the PCI config space.
1684
1685 As all changes to the FireWire bus such as enabling and disabling
1686 devices cause a bus reset and thereby disable remote DMA for all
1687 devices, be sure to have the cable plugged and FireWire enabled on
1688 the debugging host before booting the debug target for debugging.
1689
1690 This code (~1k) is freed after boot. By then, the firewire stack
1691 in charge of the OHCI-1394 controllers should be used instead.
1692
Mauro Carvalho Chehaba74e2a22020-05-01 17:37:50 +02001693 See Documentation/core-api/debugging-via-ohci1394.rst for more information.
Changbin Du09a74952019-12-06 17:03:51 -08001694
Changbin Du045f6d72019-12-17 20:51:56 -08001695source "samples/Kconfig"
1696
1697config ARCH_HAS_DEVMEM_IS_ALLOWED
1698 bool
1699
1700config STRICT_DEVMEM
1701 bool "Filter access to /dev/mem"
1702 depends on MMU && DEVMEM
1703 depends on ARCH_HAS_DEVMEM_IS_ALLOWED
1704 default y if PPC || X86 || ARM64
1705 help
1706 If this option is disabled, you allow userspace (root) access to all
1707 of memory, including kernel and userspace memory. Accidental
1708 access to this is obviously disastrous, but specific access can
1709 be used by people debugging the kernel. Note that with PAT support
1710 enabled, even in this case there are restrictions on /dev/mem
1711 use due to the cache aliasing requirements.
1712
1713 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
1714 file only allows userspace access to PCI space and the BIOS code and
1715 data regions. This is sufficient for dosemu and X and all common
1716 users of /dev/mem.
1717
1718 If in doubt, say Y.
1719
1720config IO_STRICT_DEVMEM
1721 bool "Filter I/O access to /dev/mem"
1722 depends on STRICT_DEVMEM
1723 help
1724 If this option is disabled, you allow userspace (root) access to all
1725 io-memory regardless of whether a driver is actively using that
1726 range. Accidental access to this is obviously disastrous, but
1727 specific access can be used by people debugging kernel drivers.
1728
1729 If this option is switched on, the /dev/mem file only allows
1730 userspace access to *idle* io-memory ranges (see /proc/iomem) This
1731 may break traditional users of /dev/mem (dosemu, legacy X, etc...)
1732 if the driver using a given range cannot be disabled.
1733
1734 If in doubt, say Y.
1735
1736menu "$(SRCARCH) Debugging"
1737
1738source "arch/$(SRCARCH)/Kconfig.debug"
1739
1740endmenu
1741
1742menu "Kernel Testing and Coverage"
1743
Changbin Du09a74952019-12-06 17:03:51 -08001744source "lib/kunit/Kconfig"
1745
Akinobu Mita8d438282012-07-30 14:43:02 -07001746config NOTIFIER_ERROR_INJECTION
1747 tristate "Notifier error injection"
1748 depends on DEBUG_KERNEL
1749 select DEBUG_FS
1750 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001751 This option provides the ability to inject artificial errors to
Akinobu Mita8d438282012-07-30 14:43:02 -07001752 specified notifier chain callbacks. It is useful to test the error
1753 handling of notifier call chain failures.
1754
1755 Say N if unsure.
1756
Akinobu Mita048b9c32012-07-30 14:43:07 -07001757config PM_NOTIFIER_ERROR_INJECT
1758 tristate "PM notifier error injection module"
1759 depends on PM && NOTIFIER_ERROR_INJECTION
1760 default m if PM_DEBUG
1761 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001762 This option provides the ability to inject artificial errors to
Akinobu Mita048b9c32012-07-30 14:43:07 -07001763 PM notifier chain callbacks. It is controlled through debugfs
1764 interface /sys/kernel/debug/notifier-error-inject/pm
1765
1766 If the notifier call chain should be failed with some events
1767 notified, write the error code to "actions/<notifier event>/error".
1768
1769 Example: Inject PM suspend error (-12 = -ENOMEM)
1770
1771 # cd /sys/kernel/debug/notifier-error-inject/pm/
1772 # echo -12 > actions/PM_SUSPEND_PREPARE/error
1773 # echo mem > /sys/power/state
1774 bash: echo: write error: Cannot allocate memory
1775
1776 To compile this code as a module, choose M here: the module will
1777 be called pm-notifier-error-inject.
1778
1779 If unsure, say N.
1780
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001781config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1782 tristate "OF reconfig notifier error injection module"
1783 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001784 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001785 This option provides the ability to inject artificial errors to
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001786 OF reconfig notifier chain callbacks. It is controlled
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001787 through debugfs interface under
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001788 /sys/kernel/debug/notifier-error-inject/OF-reconfig/
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001789
1790 If the notifier call chain should be failed with some events
1791 notified, write the error code to "actions/<notifier event>/error".
1792
1793 To compile this code as a module, choose M here: the module will
Akinobu Mitae12a95f2013-04-30 15:28:49 -07001794 be called of-reconfig-notifier-error-inject.
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001795
1796 If unsure, say N.
1797
Nikolay Aleksandrov02fff962015-11-28 13:45:28 +01001798config NETDEV_NOTIFIER_ERROR_INJECT
1799 tristate "Netdev notifier error injection module"
1800 depends on NET && NOTIFIER_ERROR_INJECTION
1801 help
1802 This option provides the ability to inject artificial errors to
1803 netdevice notifier chain callbacks. It is controlled through debugfs
1804 interface /sys/kernel/debug/notifier-error-inject/netdev
1805
1806 If the notifier call chain should be failed with some events
1807 notified, write the error code to "actions/<notifier event>/error".
1808
1809 Example: Inject netdevice mtu change error (-22 = -EINVAL)
1810
1811 # cd /sys/kernel/debug/notifier-error-inject/netdev
1812 # echo -22 > actions/NETDEV_CHANGEMTU/error
1813 # ip link set eth0 mtu 1024
1814 RTNETLINK answers: Invalid argument
1815
1816 To compile this code as a module, choose M here: the module will
1817 be called netdev-notifier-error-inject.
1818
1819 If unsure, say N.
1820
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001821config FUNCTION_ERROR_INJECTION
Steven Rostedt (Google)c099d122022-11-21 10:44:03 -05001822 bool "Fault-injections of functions"
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001823 depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
Steven Rostedt (Google)c099d122022-11-21 10:44:03 -05001824 help
1825 Add fault injections into various functions that are annotated with
1826 ALLOW_ERROR_INJECTION() in the kernel. BPF may also modify the return
1827 value of theses functions. This is useful to test error paths of code.
1828
1829 If unsure, say N
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001830
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001831config FAULT_INJECTION
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001832 bool "Fault-injection framework"
1833 depends on DEBUG_KERNEL
Akinobu Mita329409a2006-12-08 02:39:48 -08001834 help
1835 Provide fault-injection framework.
1836 For more details, see Documentation/fault-injection/.
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001837
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001838config FAILSLAB
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001839 bool "Fault-injection capability for kmalloc"
1840 depends on FAULT_INJECTION
Akinobu Mita773ff602008-12-23 19:37:01 +09001841 depends on SLAB || SLUB
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001842 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001843 Provide fault-injection capability for kmalloc.
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001844
Akinobu Mita933e3122006-12-08 02:39:45 -08001845config FAIL_PAGE_ALLOC
Qiujun Huang29b46fa2020-04-06 20:12:49 -07001846 bool "Fault-injection capability for alloc_pages()"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001847 depends on FAULT_INJECTION
Akinobu Mita933e3122006-12-08 02:39:45 -08001848 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001849 Provide fault-injection capability for alloc_pages().
Akinobu Mita933e3122006-12-08 02:39:45 -08001850
Albert van der Linde2c739ce2020-10-15 20:13:46 -07001851config FAULT_INJECTION_USERCOPY
1852 bool "Fault injection capability for usercopy functions"
1853 depends on FAULT_INJECTION
1854 help
1855 Provides fault-injection capability to inject failures
1856 in usercopy functions (copy_from_user(), get_user(), ...).
1857
Akinobu Mitac17bb492006-12-08 02:39:46 -08001858config FAIL_MAKE_REQUEST
Dave Jones86327d12006-12-12 20:16:36 +01001859 bool "Fault-injection capability for disk IO"
Jens Axboe581d4e22008-09-14 05:56:33 -07001860 depends on FAULT_INJECTION && BLOCK
Akinobu Mitac17bb492006-12-08 02:39:46 -08001861 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001862 Provide fault-injection capability for disk IO.
Akinobu Mitac17bb492006-12-08 02:39:46 -08001863
Jens Axboe581d4e22008-09-14 05:56:33 -07001864config FAIL_IO_TIMEOUT
Takuya Yoshikawaf4d01432010-07-21 16:05:53 +09001865 bool "Fault-injection capability for faking disk interrupts"
Jens Axboe581d4e22008-09-14 05:56:33 -07001866 depends on FAULT_INJECTION && BLOCK
1867 help
1868 Provide fault-injection capability on end IO handling. This
1869 will make the block layer "forget" an interrupt as configured,
1870 thus exercising the error handling.
1871
1872 Only works with drivers that use the generic timeout handling,
1873 for others it wont do anything.
1874
Davidlohr Buesoab51fba2015-06-29 23:26:02 -07001875config FAIL_FUTEX
1876 bool "Fault-injection capability for futexes"
1877 select DEBUG_FS
1878 depends on FAULT_INJECTION && FUTEX
1879 help
1880 Provide fault-injection capability for futexes.
1881
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001882config FAULT_INJECTION_DEBUG_FS
1883 bool "Debugfs entries for fault-injection capabilities"
1884 depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1885 help
1886 Enable configuration of fault-injection capabilities via debugfs.
1887
Masami Hiramatsu4b1a29a2018-01-13 02:56:03 +09001888config FAIL_FUNCTION
1889 bool "Fault-injection capability for functions"
1890 depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1891 help
1892 Provide function-based fault-injection capability.
1893 This will allow you to override a specific function with a return
1894 with given return value. As a result, function caller will see
1895 an error value and have to handle it. This is useful to test the
1896 error handling in various subsystems.
1897
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001898config FAIL_MMC_REQUEST
1899 bool "Fault-injection capability for MMC IO"
1900 depends on FAULT_INJECTION_DEBUG_FS && MMC
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001901 help
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001902 Provide fault-injection capability for MMC IO.
1903 This will make the mmc core return data errors. This is
1904 useful to test the error handling in the mmc block device
1905 and to test how the mmc host driver handles retries from
1906 the block device.
Akinobu Mita1df49002007-02-20 13:57:56 -08001907
1908config FAULT_INJECTION_STACKTRACE_FILTER
1909 bool "stacktrace filter for fault-injection capabilities"
1910 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
Akinobu Mita6d690dc2007-05-12 10:36:53 -07001911 depends on !X86_64
Akinobu Mita1df49002007-02-20 13:57:56 -08001912 select STACKTRACE
Julian Braha955da2b2021-04-09 13:27:47 -07001913 depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
Akinobu Mita1df49002007-02-20 13:57:56 -08001914 help
1915 Provide stacktrace filter for fault-injection capabilities
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07001916
Changbin Du09a74952019-12-06 17:03:51 -08001917config ARCH_HAS_KCOV
1918 bool
Arjan van de Ven97455122008-01-25 21:08:34 +01001919 help
Changbin Du09a74952019-12-06 17:03:51 -08001920 An architecture should select this when it can successfully
1921 build and run with CONFIG_KCOV. This typically requires
1922 disabling instrumentation for some early boot code.
Arjan van de Ven97455122008-01-25 21:08:34 +01001923
Changbin Du09a74952019-12-06 17:03:51 -08001924config CC_HAS_SANCOV_TRACE_PC
1925 def_bool $(cc-option,-fsanitize-coverage=trace-pc)
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001926
Changbin Du09a74952019-12-06 17:03:51 -08001927
1928config KCOV
1929 bool "Code coverage for fuzzing"
1930 depends on ARCH_HAS_KCOV
1931 depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
1932 select DEBUG_FS
1933 select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001934 help
Changbin Du09a74952019-12-06 17:03:51 -08001935 KCOV exposes kernel code coverage information in a form suitable
1936 for coverage-guided fuzzing (randomized testing).
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001937
Changbin Du09a74952019-12-06 17:03:51 -08001938 If RANDOMIZE_BASE is enabled, PC values will not be stable across
1939 different machines and across reboots. If you need stable PC values,
1940 disable RANDOMIZE_BASE.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001941
Changbin Du09a74952019-12-06 17:03:51 -08001942 For more details, see Documentation/dev-tools/kcov.rst.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001943
Changbin Du09a74952019-12-06 17:03:51 -08001944config KCOV_ENABLE_COMPARISONS
1945 bool "Enable comparison operands collection by KCOV"
1946 depends on KCOV
1947 depends on $(cc-option,-fsanitize-coverage=trace-cmp)
1948 help
1949 KCOV also exposes operands of every comparison in the instrumented
1950 code along with operand sizes and PCs of the comparison instructions.
1951 These operands can be used by fuzzing engines to improve the quality
1952 of fuzzing coverage.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001953
Changbin Du09a74952019-12-06 17:03:51 -08001954config KCOV_INSTRUMENT_ALL
1955 bool "Instrument all code by default"
1956 depends on KCOV
1957 default y
1958 help
1959 If you are doing generic system call fuzzing (like e.g. syzkaller),
1960 then you will want to instrument the whole kernel and you should
1961 say y here. If you are doing more targeted fuzzing (like e.g.
1962 filesystem fuzzing with AFL) then you will want to enable coverage
1963 for more specific subsets of files, and should say n here.
Brendan Higgins84bc8092019-09-23 02:02:36 -07001964
Andrey Konovalov5ff3b302020-06-04 16:46:04 -07001965config KCOV_IRQ_AREA_SIZE
1966 hex "Size of interrupt coverage collection area in words"
1967 depends on KCOV
1968 default 0x40000
1969 help
1970 KCOV uses preallocated per-cpu areas to collect coverage from
1971 soft interrupts. This specifies the size of those areas in the
1972 number of unsigned long words.
1973
Vincent Legolld3deafa2018-02-06 15:38:38 -08001974menuconfig RUNTIME_TESTING_MENU
1975 bool "Runtime Testing"
Anders Roxell908009e82018-02-21 14:46:05 -08001976 def_bool y
Vincent Legolld3deafa2018-02-06 15:38:38 -08001977
1978if RUNTIME_TESTING_MENU
Dave Hansen881c5142013-07-01 13:04:44 -07001979
1980config LKDTM
1981 tristate "Linux Kernel Dump Test Tool Module"
1982 depends on DEBUG_FS
Dave Hansen881c5142013-07-01 13:04:44 -07001983 help
1984 This module enables testing of the different dumping mechanisms by
1985 inducing system failures at predefined crash points.
1986 If you don't need it: say N
1987 Choose M here to compile this code as a module. The module will be
1988 called lkdtm.
1989
1990 Documentation on how to use the module can be found in
Mauro Carvalho Chehab10ffebb2019-06-12 14:52:44 -03001991 Documentation/fault-injection/provoke-crashes.rst
Dave Hansen881c5142013-07-01 13:04:44 -07001992
1993config TEST_LIST_SORT
Geert Uytterhoevene327fd72017-05-08 15:55:26 -07001994 tristate "Linked list sorting test"
1995 depends on DEBUG_KERNEL || m
Dave Hansen881c5142013-07-01 13:04:44 -07001996 help
1997 Enable this to turn on 'list_sort()' function test. This test is
Geert Uytterhoevene327fd72017-05-08 15:55:26 -07001998 executed only once during system boot (so affects only boot time),
1999 or at module load time.
Dave Hansen881c5142013-07-01 13:04:44 -07002000
2001 If unsure, say N.
2002
Ian Rogers6e246282020-02-13 23:51:29 -08002003config TEST_MIN_HEAP
2004 tristate "Min heap test"
2005 depends on DEBUG_KERNEL || m
2006 help
2007 Enable this to turn on min heap function tests. This test is
2008 executed only once during system boot (so affects only boot time),
2009 or at module load time.
2010
2011 If unsure, say N.
2012
Kostenzer Felixc5adae92017-02-24 15:01:07 -08002013config TEST_SORT
Geert Uytterhoeven5c4e6792017-05-08 15:55:23 -07002014 tristate "Array-based sort test"
2015 depends on DEBUG_KERNEL || m
Kostenzer Felixc5adae92017-02-24 15:01:07 -08002016 help
Geert Uytterhoeven5c4e6792017-05-08 15:55:23 -07002017 This option enables the self-test function of 'sort()' at boot,
2018 or at module load time.
Kostenzer Felixc5adae92017-02-24 15:01:07 -08002019
2020 If unsure, say N.
2021
Dave Hansen881c5142013-07-01 13:04:44 -07002022config KPROBES_SANITY_TEST
2023 bool "Kprobes sanity tests"
2024 depends on DEBUG_KERNEL
2025 depends on KPROBES
Dave Hansen881c5142013-07-01 13:04:44 -07002026 help
2027 This option provides for testing basic kprobes functionality on
Masami Hiramatsu5a6cf772018-06-20 01:05:07 +09002028 boot. Samples of kprobe and kretprobe are inserted and
Dave Hansen881c5142013-07-01 13:04:44 -07002029 verified for functionality.
2030
2031 Say N if you are unsure.
2032
2033config BACKTRACE_SELF_TEST
2034 tristate "Self test for the backtrace code"
2035 depends on DEBUG_KERNEL
Dave Hansen881c5142013-07-01 13:04:44 -07002036 help
2037 This option provides a kernel module that can be used to test
2038 the kernel stack backtrace code. This option is not useful
2039 for distributions or general kernels, but only for kernel
2040 developers working on architecture code.
2041
2042 Note that if you want to also test saved backtraces, you will
2043 have to enable STACKTRACE as well.
2044
2045 Say N if you are unsure.
2046
Michel Lespinasse910a7422012-10-08 16:30:39 -07002047config RBTREE_TEST
2048 tristate "Red-Black tree test"
Cody P Schafer7c993e12013-09-11 14:25:19 -07002049 depends on DEBUG_KERNEL
Michel Lespinasse910a7422012-10-08 16:30:39 -07002050 help
2051 A benchmark measuring the performance of the rbtree library.
2052 Also includes rbtree invariant checks.
2053
Ferdinand Blomqvist4b4f3ac2019-06-20 17:10:33 +03002054config REED_SOLOMON_TEST
2055 tristate "Reed-Solomon library test"
2056 depends on DEBUG_KERNEL || m
2057 select REED_SOLOMON
2058 select REED_SOLOMON_ENC16
2059 select REED_SOLOMON_DEC16
2060 help
2061 This option enables the self-test function of rslib at boot,
2062 or at module load time.
2063
2064 If unsure, say N.
2065
Michel Lespinassefff3fd82012-10-08 16:31:23 -07002066config INTERVAL_TREE_TEST
2067 tristate "Interval tree test"
Davidlohr Bueso0f789b62017-07-10 15:51:43 -07002068 depends on DEBUG_KERNEL
Chris Wilsona88cc102014-03-17 12:21:54 +00002069 select INTERVAL_TREE
Michel Lespinassefff3fd82012-10-08 16:31:23 -07002070 help
2071 A benchmark measuring the performance of the interval tree library
2072
Greg Thelen623fd802013-11-12 15:08:34 -08002073config PERCPU_TEST
2074 tristate "Per cpu operations test"
2075 depends on m && DEBUG_KERNEL
2076 help
2077 Enable this option to build test module which validates per-cpu
2078 operations.
2079
2080 If unsure, say N.
2081
Dave Hansen881c5142013-07-01 13:04:44 -07002082config ATOMIC64_SELFTEST
Geert Uytterhoeven55ded952017-02-24 15:00:55 -08002083 tristate "Perform an atomic64_t self-test"
Dave Hansen881c5142013-07-01 13:04:44 -07002084 help
Geert Uytterhoeven55ded952017-02-24 15:00:55 -08002085 Enable this option to test the atomic64_t functions at boot or
2086 at module load time.
Dave Hansen881c5142013-07-01 13:04:44 -07002087
2088 If unsure, say N.
2089
2090config ASYNC_RAID6_TEST
2091 tristate "Self test for hardware accelerated raid6 recovery"
2092 depends on ASYNC_RAID6_RECOV
2093 select ASYNC_MEMCPY
Masahiro Yamadaa7f7f622020-06-14 01:50:22 +09002094 help
Dave Hansen881c5142013-07-01 13:04:44 -07002095 This is a one-shot self test that permutes through the
2096 recovery of all the possible two disk failure scenarios for a
2097 N-disk array. Recovery is performed with the asynchronous
2098 raid6 recovery routines, and will optionally use an offload
2099 engine if one is available.
2100
2101 If unsure, say N.
2102
Andy Shevchenko64d1d772015-02-12 15:02:21 -08002103config TEST_HEXDUMP
2104 tristate "Test functions located in the hexdump module at runtime"
2105
Dave Hansen881c5142013-07-01 13:04:44 -07002106config TEST_STRING_HELPERS
2107 tristate "Test functions located in the string_helpers module at runtime"
2108
Tobin C. Harding0b0600c2019-04-05 12:58:59 +11002109config TEST_STRSCPY
2110 tristate "Test strscpy*() family of functions at runtime"
2111
Dave Hansen881c5142013-07-01 13:04:44 -07002112config TEST_KSTRTOX
2113 tristate "Test kstrto*() family of functions at runtime"
2114
Rasmus Villemoes707cc722015-11-06 16:30:29 -08002115config TEST_PRINTF
2116 tristate "Test printf() family of functions at runtime"
2117
David Decotigny5fd003f2016-02-19 09:24:00 -05002118config TEST_BITMAP
2119 tristate "Test bitmap_*() family of functions at runtime"
David Decotigny5fd003f2016-02-19 09:24:00 -05002120 help
2121 Enable this option to test the bitmap functions at boot.
2122
2123 If unsure, say N.
2124
Andy Shevchenkocfaff0e2016-05-30 17:40:41 +03002125config TEST_UUID
2126 tristate "Test functions located in the uuid module at runtime"
2127
Matthew Wilcoxad3d6c72017-11-07 14:57:46 -05002128config TEST_XARRAY
2129 tristate "Test the XArray code at runtime"
2130
Rasmus Villemoes455a35a2018-05-08 00:36:28 +02002131config TEST_OVERFLOW
2132 tristate "Test check_*_overflow() functions at runtime"
2133
Thomas Graf7e1e7762014-08-02 11:47:44 +02002134config TEST_RHASHTABLE
Geert Uytterhoeven9d6dbe12015-01-29 15:40:25 +01002135 tristate "Perform selftest on resizable hash table"
Thomas Graf7e1e7762014-08-02 11:47:44 +02002136 help
2137 Enable this option to test the rhashtable functions at boot.
2138
2139 If unsure, say N.
2140
George Spelvin468a9422016-05-26 22:11:51 -04002141config TEST_HASH
2142 tristate "Perform selftest on hash functions"
George Spelvin468a9422016-05-26 22:11:51 -04002143 help
Jason A. Donenfeld2c956a62017-01-08 13:54:00 +01002144 Enable this option to test the kernel's integer (<linux/hash.h>),
2145 string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
2146 hash functions on boot (or module load).
George Spelvin468a9422016-05-26 22:11:51 -04002147
2148 This is intended to help people writing architecture-specific
2149 optimized versions. If unsure, say N.
2150
Matthew Wilcox8ab8ba32018-06-18 16:59:29 -04002151config TEST_IDA
2152 tristate "Perform selftest on IDA functions"
2153
Jiri Pirko44091d22017-02-03 10:29:06 +01002154config TEST_PARMAN
2155 tristate "Perform selftest on priority array manager"
Jiri Pirko44091d22017-02-03 10:29:06 +01002156 depends on PARMAN
2157 help
2158 Enable this option to test priority array manager on boot
2159 (or module load).
2160
2161 If unsure, say N.
2162
Daniel Lezcano6aed82d2019-05-27 22:55:19 +02002163config TEST_IRQ_TIMINGS
2164 bool "IRQ timings selftest"
2165 depends on IRQ_TIMINGS
2166 help
2167 Enable this option to test the irq timings code on boot.
2168
2169 If unsure, say N.
2170
Valentin Rothberg8a6f0b42014-10-13 15:51:38 -07002171config TEST_LKM
Kees Cook93e9ef82014-01-23 15:54:37 -08002172 tristate "Test module loading with 'hello world' module"
Kees Cook93e9ef82014-01-23 15:54:37 -08002173 depends on m
2174 help
2175 This builds the "test_module" module that emits "Hello, world"
2176 on printk when loaded. It is designed to be used for basic
2177 evaluation of the module loading subsystem (for example when
2178 validating module verification). It lacks any extra dependencies,
2179 and will not normally be loaded by the system unless explicitly
2180 requested by name.
2181
2182 If unsure, say N.
2183
Jesse Brandeburgc348c162020-06-04 16:50:27 -07002184config TEST_BITOPS
Wei Yang6af132f2020-06-10 18:41:53 -07002185 tristate "Test module for compilation of bitops operations"
Jesse Brandeburgc348c162020-06-04 16:50:27 -07002186 depends on m
2187 help
2188 This builds the "test_bitops" module that is much like the
2189 TEST_LKM module except that it does a basic exercise of the
Wei Yang6af132f2020-06-10 18:41:53 -07002190 set/clear_bit macros and get_count_order/long to make sure there are
2191 no compiler warnings from C=1 sparse checker or -Wextra
2192 compilations. It has no dependencies and doesn't run or load unless
2193 explicitly requested by name. for example: modprobe test_bitops.
Jesse Brandeburgc348c162020-06-04 16:50:27 -07002194
2195 If unsure, say N.
2196
Uladzislau Rezki (Sony)3f21a6b2019-03-05 15:43:34 -08002197config TEST_VMALLOC
2198 tristate "Test module for stress/performance analysis of vmalloc allocator"
2199 default n
2200 depends on MMU
2201 depends on m
2202 help
2203 This builds the "test_vmalloc" module that should be used for
2204 stress and performance analysis. So, any new change for vmalloc
2205 subsystem can be evaluated from performance and stability point
2206 of view.
2207
2208 If unsure, say N.
2209
Kees Cook3e2a4c12014-01-23 15:54:38 -08002210config TEST_USER_COPY
2211 tristate "Test user/kernel boundary protections"
Kees Cook3e2a4c12014-01-23 15:54:38 -08002212 depends on m
2213 help
2214 This builds the "test_user_copy" module that runs sanity checks
2215 on the copy_to/from_user infrastructure, making sure basic
2216 user/kernel boundary testing is working. If it fails to load,
2217 a regression has been detected in the user/kernel memory boundary
2218 protections.
2219
2220 If unsure, say N.
2221
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002222config TEST_BPF
2223 tristate "Test BPF filter functionality"
Randy Dunlap98920ba2014-05-13 09:58:44 -07002224 depends on m && NET
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002225 help
2226 This builds the "test_bpf" module that runs various test vectors
2227 against the BPF interpreter or BPF JIT compiler depending on the
2228 current setting. This is in particular useful for BPF JIT compiler
2229 development, but also to run regression tests against changes in
Alexei Starovoitov3c731eb2014-09-26 00:17:07 -07002230 the interpreter code. It also enables test stubs for eBPF maps and
2231 verifier used by user space verifier testsuite.
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002232
2233 If unsure, say N.
2234
Mahesh Bandewar509e56b2019-07-01 14:39:01 -07002235config TEST_BLACKHOLE_DEV
2236 tristate "Test blackhole netdev functionality"
2237 depends on m && NET
2238 help
2239 This builds the "test_blackhole_dev" module that validates the
2240 data path through this blackhole netdev.
2241
2242 If unsure, say N.
2243
Yury Norovdceeb3e2018-02-06 15:38:27 -08002244config FIND_BIT_BENCHMARK
Yury Norov4441fca2017-11-17 15:28:31 -08002245 tristate "Test find_bit functions"
Yury Norov4441fca2017-11-17 15:28:31 -08002246 help
2247 This builds the "test_find_bit" module that measure find_*_bit()
2248 functions performance.
2249
2250 If unsure, say N.
2251
Kees Cook0a8adf52014-07-14 14:38:12 -07002252config TEST_FIRMWARE
2253 tristate "Test firmware loading via userspace interface"
Kees Cook0a8adf52014-07-14 14:38:12 -07002254 depends on FW_LOADER
2255 help
2256 This builds the "test_firmware" module that creates a userspace
2257 interface for testing firmware loading. This can be used to
2258 control the triggering of firmware loading without needing an
2259 actual firmware-using device. The contents can be rechecked by
2260 userspace.
2261
2262 If unsure, say N.
2263
Luis R. Rodriguez9308f2f2017-07-12 14:33:43 -07002264config TEST_SYSCTL
2265 tristate "sysctl test driver"
Luis R. Rodriguez9308f2f2017-07-12 14:33:43 -07002266 depends on PROC_SYSCTL
2267 help
2268 This builds the "test_sysctl" module. This driver enables to test the
2269 proc sysctl interfaces available to drivers safely without affecting
2270 production knobs which might alter system functionality.
2271
2272 If unsure, say N.
2273
Vitor Massaru Ihad2585f52020-07-29 14:58:49 -03002274config BITFIELD_KUNIT
2275 tristate "KUnit test bitfield functions at runtime"
2276 depends on KUNIT
2277 help
2278 Enable this option to test the bitfield functions at boot.
2279
2280 KUnit tests run during boot and output the results to the debug log
2281 in TAP format (http://testanything.org/). Only useful for kernel devs
2282 running the KUnit test harness, and not intended for inclusion into a
2283 production build.
2284
2285 For more information on KUnit and unit tests in general please refer
2286 to the KUnit documentation in Documentation/dev-tools/kunit/.
2287
2288 If unsure, say N.
2289
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002290config SYSCTL_KUNIT_TEST
Anders Roxell5f215aab2020-05-11 15:14:29 +02002291 tristate "KUnit test for sysctl" if !KUNIT_ALL_TESTS
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002292 depends on KUNIT
Anders Roxell5f215aab2020-05-11 15:14:29 +02002293 default KUNIT_ALL_TESTS
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002294 help
2295 This builds the proc sysctl unit test, which runs on boot.
2296 Tests the API contract and implementation correctness of sysctl.
2297 For more information on KUnit and unit tests in general please refer
2298 to the KUnit documentation in Documentation/dev-tools/kunit/.
2299
2300 If unsure, say N.
2301
David Gowea2dd7c2019-10-24 15:46:31 -07002302config LIST_KUNIT_TEST
Anders Roxell5f215aab2020-05-11 15:14:29 +02002303 tristate "KUnit Test for Kernel Linked-list structures" if !KUNIT_ALL_TESTS
David Gowea2dd7c2019-10-24 15:46:31 -07002304 depends on KUNIT
Anders Roxell5f215aab2020-05-11 15:14:29 +02002305 default KUNIT_ALL_TESTS
David Gowea2dd7c2019-10-24 15:46:31 -07002306 help
2307 This builds the linked list KUnit test suite.
2308 It tests that the API and basic functionality of the list_head type
2309 and associated macros.
2310
2311 KUnit tests run during boot and output the results to the debug log
Alexander A. Klimovd89775f2020-08-11 18:34:50 -07002312 in TAP format (https://testanything.org/). Only useful for kernel devs
David Gowea2dd7c2019-10-24 15:46:31 -07002313 running the KUnit test harness, and not intended for inclusion into a
2314 production build.
2315
2316 For more information on KUnit and unit tests in general please refer
2317 to the KUnit documentation in Documentation/dev-tools/kunit/.
2318
2319 If unsure, say N.
2320
Matti Vaittinen33d599f2020-05-08 18:40:43 +03002321config LINEAR_RANGES_TEST
2322 tristate "KUnit test for linear_ranges"
2323 depends on KUNIT
2324 select LINEAR_RANGES
2325 help
2326 This builds the linear_ranges unit test, which runs on boot.
2327 Tests the linear_ranges logic correctness.
2328 For more information on KUnit and unit tests in general please refer
2329 to the KUnit documentation in Documentation/dev-tools/kunit/.
2330
2331 If unsure, say N.
2332
Rikard Falkeborn6d511022020-08-11 18:35:03 -07002333config BITS_TEST
2334 tristate "KUnit test for bits.h"
2335 depends on KUNIT
2336 help
2337 This builds the bits unit test.
2338 Tests the logic of macros defined in bits.h.
2339 For more information on KUnit and unit tests in general please refer
2340 to the KUnit documentation in Documentation/dev-tools/kunit/.
2341
2342 If unsure, say N.
2343
David Rileye704f932014-06-16 14:58:32 -07002344config TEST_UDELAY
2345 tristate "udelay test driver"
David Rileye704f932014-06-16 14:58:32 -07002346 help
2347 This builds the "udelay_test" module that helps to make sure
2348 that udelay() is working properly.
2349
2350 If unsure, say N.
2351
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002352config TEST_STATIC_KEYS
2353 tristate "Test static keys"
Jason Baron579e1ac2015-07-30 03:59:44 +00002354 depends on m
2355 help
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002356 Test the static key interfaces.
Jason Baron579e1ac2015-07-30 03:59:44 +00002357
2358 If unsure, say N.
2359
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002360config TEST_KMOD
2361 tristate "kmod stress tester"
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002362 depends on m
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002363 depends on NETDEVICES && NET_CORE && INET # for TUN
YueHaibingae3d6a32019-04-25 22:23:44 -07002364 depends on BLOCK
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002365 select TEST_LKM
2366 select XFS_FS
2367 select TUN
2368 select BTRFS_FS
2369 help
2370 Test the kernel's module loading mechanism: kmod. kmod implements
2371 support to load modules using the Linux kernel's usermode helper.
2372 This test provides a series of tests against kmod.
2373
2374 Although technically you can either build test_kmod as a module or
2375 into the kernel we disallow building it into the kernel since
2376 it stress tests request_module() and this will very likely cause
2377 some issues by taking over precious threads available from other
2378 module load requests, ultimately this could be fatal.
2379
2380 To run tests run:
2381
2382 tools/testing/selftests/kmod/kmod.sh --help
2383
2384 If unsure, say N.
2385
Florian Fainellie4dace32017-09-08 16:15:31 -07002386config TEST_DEBUG_VIRTUAL
2387 tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2388 depends on DEBUG_VIRTUAL
2389 help
2390 Test the kernel's ability to detect incorrect calls to
2391 virt_to_phys() done against the non-linear part of the
2392 kernel's virtual address map.
2393
2394 If unsure, say N.
2395
Alexander Shishkince76d932018-10-05 15:43:05 +03002396config TEST_MEMCAT_P
2397 tristate "Test memcat_p() helper function"
2398 help
2399 Test the memcat_p() helper for correctly merging two
2400 pointer arrays together.
2401
2402 If unsure, say N.
2403
Joe Lawrencea2818ee2019-01-09 13:43:29 +01002404config TEST_LIVEPATCH
2405 tristate "Test livepatching"
2406 default n
Joe Lawrencebae05432019-01-31 11:41:24 -05002407 depends on DYNAMIC_DEBUG
Joe Lawrencea2818ee2019-01-09 13:43:29 +01002408 depends on LIVEPATCH
2409 depends on m
2410 help
2411 Test kernel livepatching features for correctness. The tests will
2412 load test modules that will be livepatched in various scenarios.
2413
2414 To run all the livepatching tests:
2415
2416 make -C tools/testing/selftests TARGETS=livepatch run_tests
2417
2418 Alternatively, individual tests may be invoked:
2419
2420 tools/testing/selftests/livepatch/test-callbacks.sh
2421 tools/testing/selftests/livepatch/test-livepatch.sh
2422 tools/testing/selftests/livepatch/test-shadow-vars.sh
2423
2424 If unsure, say N.
2425
Jiri Pirko0a020d42018-11-14 08:22:28 +00002426config TEST_OBJAGG
2427 tristate "Perform selftest on object aggreration manager"
2428 default n
2429 depends on OBJAGG
2430 help
2431 Enable this option to test object aggregation manager on boot
2432 (or module load).
2433
Jiri Pirko0a020d42018-11-14 08:22:28 +00002434
Kees Cook50ceaa95e2019-01-23 12:24:32 -07002435config TEST_STACKINIT
2436 tristate "Test level of stack variable initialization"
2437 help
2438 Test if the kernel is zero-initializing stack variables and
2439 padding. Coverage is controlled by compiler flags,
2440 CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2441 or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2442
2443 If unsure, say N.
2444
Alexander Potapenko5015a302019-07-16 16:27:27 -07002445config TEST_MEMINIT
2446 tristate "Test heap/page initialization"
2447 help
2448 Test if the kernel is zero-initializing heap and page allocations.
2449 This can be useful to test init_on_alloc and init_on_free features.
2450
2451 If unsure, say N.
2452
Ralph Campbellb2ef9f52020-04-22 12:50:26 -07002453config TEST_HMM
2454 tristate "Test HMM (Heterogeneous Memory Management)"
2455 depends on TRANSPARENT_HUGEPAGE
2456 depends on DEVICE_PRIVATE
2457 select HMM_MIRROR
2458 select MMU_NOTIFIER
2459 help
2460 This is a pseudo device driver solely for testing HMM.
2461 Say M here if you want to build the HMM test module.
2462 Doing so will allow you to run tools/testing/selftest/vm/hmm-tests.
2463
2464 If unsure, say N.
2465
Matthew Wilcox (Oracle)e320d302020-10-13 16:56:04 -07002466config TEST_FREE_PAGES
2467 tristate "Test freeing pages"
2468 help
2469 Test that a memory leak does not occur due to a race between
2470 freeing a block of pages and a speculative page reference.
2471 Loading this module is safe if your kernel has the bug fixed.
2472 If the bug is not fixed, it will leak gigabytes of memory and
2473 probably OOM your system.
2474
Petteri Aimonen4185b3b2020-06-18 16:37:37 +02002475config TEST_FPU
2476 tristate "Test floating point operations in kernel space"
2477 depends on X86 && !KCOV_INSTRUMENT_ALL
2478 help
2479 Enable this option to add /sys/kernel/debug/selftest_helpers/test_fpu
2480 which will trigger a sequence of floating point operations. This is used
2481 for self-testing floating point control register setting in
2482 kernel_fpu_begin().
2483
2484 If unsure, say N.
2485
Vincent Legolld3deafa2018-02-06 15:38:38 -08002486endif # RUNTIME_TESTING_MENU
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002487
2488config MEMTEST
2489 bool "Memtest"
Masahiro Yamadaa7f7f622020-06-14 01:50:22 +09002490 help
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002491 This option adds a kernel parameter 'memtest', which allows memtest
2492 to be set.
2493 memtest=0, mean disabled; -- default
2494 memtest=1, mean do 1 test pattern;
2495 ...
2496 memtest=17, mean do 17 test patterns.
2497 If you are unsure how to answer this question, answer N.
2498
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002499
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002500
Branden Bonabyaf9ca6f2019-10-03 17:01:49 -04002501config HYPERV_TESTING
2502 bool "Microsoft Hyper-V driver testing"
2503 default n
2504 depends on HYPERV && DEBUG_FS
2505 help
2506 Select this option to enable Hyper-V vmbus testing.
2507
Changbin Du045f6d72019-12-17 20:51:56 -08002508endmenu # "Kernel Testing and Coverage"
2509
Mauro Carvalho Chehab75442fb2020-10-30 08:40:45 +01002510source "Documentation/Kconfig"
2511
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002512endmenu # Kernel hacking