blob: 826a205ffd1c56dc33c8299c20186a5829cd473a [file] [log] [blame]
Thomas Gleixnerec8f24b2019-05-19 13:07:45 +01001# SPDX-License-Identifier: GPL-2.0-only
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002menu "Kernel hacking"
3
Dave Hansen604ff0d2013-07-01 13:04:49 -07004menu "printk and dmesg options"
Linus Torvalds1da177e2005-04-16 15:20:36 -07005
6config PRINTK_TIME
7 bool "Show timing information on printks"
Randy Dunlapd3b8b6e2006-12-06 20:36:38 -08008 depends on PRINTK
Linus Torvalds1da177e2005-04-16 15:20:36 -07009 help
Kay Sievers649e6ee2012-05-10 04:30:45 +020010 Selecting this option causes time stamps of the printk()
11 messages to be added to the output of the syslog() system
12 call and at the console.
13
14 The timestamp is always recorded internally, and exported
15 to /dev/kmsg. This flag just specifies if the timestamp should
16 be included, not that the timestamp is recorded.
17
18 The behavior is also controlled by the kernel command line
Mauro Carvalho Chehab8c27ceff32016-10-18 10:12:27 -020019 parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst
Linus Torvalds1da177e2005-04-16 15:20:36 -070020
Tetsuo Handa15ff2062018-12-18 06:05:04 +090021config PRINTK_CALLER
22 bool "Show caller information on printks"
23 depends on PRINTK
24 help
25 Selecting this option causes printk() to add a caller "thread id" (if
26 in task context) or a caller "processor id" (if not in task context)
27 to every message.
28
29 This option is intended for environments where multiple threads
30 concurrently call printk() for many times, for it is difficult to
31 interpret without knowing where these lines (or sometimes individual
32 line which was divided into multiple lines due to race) came from.
33
34 Since toggling after boot makes the code racy, currently there is
35 no option to enable/disable at the kernel command line parameter or
36 sysfs interface.
37
Olof Johanssona8cfdc62016-12-12 16:45:56 -080038config CONSOLE_LOGLEVEL_DEFAULT
39 int "Default console loglevel (1-15)"
40 range 1 15
41 default "7"
42 help
43 Default loglevel to determine what will be printed on the console.
44
45 Setting a default here is equivalent to passing in loglevel=<x> in
46 the kernel bootargs. loglevel=<x> continues to override whatever
47 value is specified here as well.
48
Borislav Petkov50f4d9b2016-12-19 16:23:15 -080049 Note: This does not affect the log level of un-prefixed printk()
Olof Johanssona8cfdc62016-12-12 16:45:56 -080050 usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
51 option.
52
Hans de Goede22eceb82018-06-19 13:57:26 +020053config CONSOLE_LOGLEVEL_QUIET
54 int "quiet console loglevel (1-15)"
55 range 1 15
56 default "4"
57 help
58 loglevel to use when "quiet" is passed on the kernel commandline.
59
60 When "quiet" is passed on the kernel commandline this loglevel
61 will be used as the loglevel. IOW passing "quiet" will be the
62 equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
63
Alex Elder42a9dc02014-08-06 16:09:01 -070064config MESSAGE_LOGLEVEL_DEFAULT
Mandeep Singh Baines5af5bcb2011-03-22 16:34:23 -070065 int "Default message log level (1-7)"
66 range 1 7
67 default "4"
68 help
69 Default log level for printk statements with no specified priority.
70
71 This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
72 that are auditing their logs closely may want to set it to a lower
73 priority.
74
Olof Johanssona8cfdc62016-12-12 16:45:56 -080075 Note: This does not affect what message level gets printed on the console
76 by default. To change that, use loglevel=<x> in the kernel bootargs,
77 or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.
78
Dave Hansen604ff0d2013-07-01 13:04:49 -070079config BOOT_PRINTK_DELAY
80 bool "Delay each boot printk message by N milliseconds"
81 depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
82 help
83 This build option allows you to read kernel boot messages
84 by inserting a short delay after each one. The delay is
85 specified in milliseconds on the kernel command line,
86 using "boot_delay=N".
87
88 It is likely that you would also need to use "lpj=M" to preset
89 the "loops per jiffie" value.
90 See a previous boot log for the "lpj" value to use for your
91 system, and then set "lpj=M" before setting "boot_delay=N".
92 NOTE: Using this option may adversely affect SMP systems.
93 I.e., processors other than the first one may not boot up.
94 BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
95 what it believes to be lockup conditions.
96
97config DYNAMIC_DEBUG
98 bool "Enable dynamic printk() support"
99 default n
100 depends on PRINTK
Greg Kroah-Hartman239a5792020-02-10 13:11:42 -0800101 depends on (DEBUG_FS || PROC_FS)
Orson Zhaiceabef72020-06-07 21:40:14 -0700102 select DYNAMIC_DEBUG_CORE
Dave Hansen604ff0d2013-07-01 13:04:49 -0700103 help
104
105 Compiles debug level messages into the kernel, which would not
106 otherwise be available at runtime. These messages can then be
107 enabled/disabled based on various levels of scope - per source file,
108 function, module, format string, and line number. This mechanism
109 implicitly compiles in all pr_debug() and dev_dbg() calls, which
110 enlarges the kernel text size by about 2%.
111
112 If a source file is compiled with DEBUG flag set, any
113 pr_debug() calls in it are enabled by default, but can be
114 disabled at runtime as below. Note that DEBUG flag is
115 turned on by many CONFIG_*DEBUG* options.
116
117 Usage:
118
119 Dynamic debugging is controlled via the 'dynamic_debug/control' file,
Greg Kroah-Hartman239a5792020-02-10 13:11:42 -0800120 which is contained in the 'debugfs' filesystem or procfs.
121 Thus, the debugfs or procfs filesystem must first be mounted before
122 making use of this feature.
Dave Hansen604ff0d2013-07-01 13:04:49 -0700123 We refer the control file as: <debugfs>/dynamic_debug/control. This
124 file contains a list of the debug statements that can be enabled. The
125 format for each line of the file is:
126
127 filename:lineno [module]function flags format
128
129 filename : source file of the debug statement
130 lineno : line number of the debug statement
131 module : module that contains the debug statement
132 function : function that contains the debug statement
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800133 flags : '=p' means the line is turned 'on' for printing
134 format : the format used for the debug statement
Dave Hansen604ff0d2013-07-01 13:04:49 -0700135
136 From a live system:
137
138 nullarbor:~ # cat <debugfs>/dynamic_debug/control
139 # filename:lineno [module]function flags format
140 fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
141 fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
142 fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
143
144 Example usage:
145
146 // enable the message at line 1603 of file svcsock.c
147 nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
148 <debugfs>/dynamic_debug/control
149
150 // enable all the messages in file svcsock.c
151 nullarbor:~ # echo -n 'file svcsock.c +p' >
152 <debugfs>/dynamic_debug/control
153
154 // enable all the messages in the NFS server module
155 nullarbor:~ # echo -n 'module nfsd +p' >
156 <debugfs>/dynamic_debug/control
157
158 // enable all 12 messages in the function svc_process()
159 nullarbor:~ # echo -n 'func svc_process +p' >
160 <debugfs>/dynamic_debug/control
161
162 // disable all 12 messages in the function svc_process()
163 nullarbor:~ # echo -n 'func svc_process -p' >
164 <debugfs>/dynamic_debug/control
165
Hans Holmbergf8998c22017-03-16 09:37:32 +0100166 See Documentation/admin-guide/dynamic-debug-howto.rst for additional
167 information.
Dave Hansen604ff0d2013-07-01 13:04:49 -0700168
Orson Zhaiceabef72020-06-07 21:40:14 -0700169config DYNAMIC_DEBUG_CORE
170 bool "Enable core function of dynamic debug support"
171 depends on PRINTK
172 depends on (DEBUG_FS || PROC_FS)
173 help
174 Enable core functional support of dynamic debug. It is useful
175 when you want to tie dynamic debug to your kernel modules with
176 DYNAMIC_DEBUG_MODULE defined for each of them, especially for
177 the case of embedded system where the kernel image size is
178 sensitive for people.
179
Rasmus Villemoes57f56772019-10-15 21:07:05 +0200180config SYMBOLIC_ERRNAME
181 bool "Support symbolic error names in printf"
182 default y if PRINTK
183 help
184 If you say Y here, the kernel's printf implementation will
185 be able to print symbolic error names such as ENOSPC instead
186 of the number 28. It makes the kernel image slightly larger
187 (about 3KB), but can make the kernel logs easier to read.
188
Changbin Du2b05bb72019-12-06 17:04:03 -0800189config DEBUG_BUGVERBOSE
190 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
191 depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
192 default y
193 help
194 Say Y here to make BUG() panics output the file name and line number
195 of the BUG call as well as the EIP and oops trace. This aids
196 debugging but costs about 70-100K of memory.
197
Dave Hansen604ff0d2013-07-01 13:04:49 -0700198endmenu # "printk and dmesg options"
199
Dave Hansen6dfc0662013-07-01 13:04:46 -0700200menu "Compile-time checks and compiler options"
201
202config DEBUG_INFO
203 bool "Compile the kernel with debug info"
Linus Torvalds12b13832014-02-04 12:20:01 -0800204 depends on DEBUG_KERNEL && !COMPILE_TEST
Dave Hansen6dfc0662013-07-01 13:04:46 -0700205 help
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800206 If you say Y here the resulting kernel image will include
Dave Hansen6dfc0662013-07-01 13:04:46 -0700207 debugging info resulting in a larger kernel image.
208 This adds debug symbols to the kernel and modules (gcc -g), and
209 is needed if you intend to use kernel crashdump or binary object
210 tools like crash, kgdb, LKCD, gdb, etc on the kernel.
211 Say Y here only if you plan to debug the kernel.
212
213 If unsure, say N.
214
Sedat Dilek695afd32020-08-16 14:32:44 +0200215if DEBUG_INFO
216
Dave Hansen6dfc0662013-07-01 13:04:46 -0700217config DEBUG_INFO_REDUCED
218 bool "Reduce debugging information"
Dave Hansen6dfc0662013-07-01 13:04:46 -0700219 help
220 If you say Y here gcc is instructed to generate less debugging
221 information for structure types. This means that tools that
222 need full debugging information (like kgdb or systemtap) won't
223 be happy. But if you merely need debugging information to
224 resolve line numbers there is no loss. Advantage is that
225 build directory object sizes shrink dramatically over a full
226 DEBUG_INFO build and compile times are reduced too.
227 Only works with newer gcc versions.
228
Nick Desaulniers10e68b022020-05-26 10:18:29 -0700229config DEBUG_INFO_COMPRESSED
230 bool "Compressed debugging information"
Nick Desaulniers10e68b022020-05-26 10:18:29 -0700231 depends on $(cc-option,-gz=zlib)
Nick Desaulniers10e68b022020-05-26 10:18:29 -0700232 depends on $(ld-option,--compress-debug-sections=zlib)
233 help
234 Compress the debug information using zlib. Requires GCC 5.0+ or Clang
235 5.0+, binutils 2.26+, and zlib.
236
237 Users of dpkg-deb via scripts/package/builddeb may find an increase in
238 size of their debug .deb packages with this config set, due to the
239 debug info being compressed with zlib, then the object files being
240 recompressed with a different compression scheme. But this is still
241 preferable to setting $KDEB_COMPRESS to "none" which would be even
242 larger.
243
Andi Kleen866ced92014-07-30 20:50:18 +0200244config DEBUG_INFO_SPLIT
245 bool "Produce split debuginfo in .dwo files"
Masahiro Yamada9d937442019-02-22 16:56:09 +0900246 depends on $(cc-option,-gsplit-dwarf)
Andi Kleen866ced92014-07-30 20:50:18 +0200247 help
248 Generate debug info into separate .dwo files. This significantly
249 reduces the build directory size for builds with DEBUG_INFO,
250 because it stores the information only once on disk in .dwo
251 files instead of multiple times in object files and executables.
252 In addition the debug information is also compressed.
253
254 Requires recent gcc (4.7+) and recent gdb/binutils.
255 Any tool that packages or reads debug information would need
256 to know about the .dwo files and include them.
257 Incompatible with older versions of ccache.
258
Andi Kleenbfaf2dd2014-07-30 20:50:19 +0200259config DEBUG_INFO_DWARF4
260 bool "Generate dwarf4 debuginfo"
Masahiro Yamada9d937442019-02-22 16:56:09 +0900261 depends on $(cc-option,-gdwarf-4)
Andi Kleenbfaf2dd2014-07-30 20:50:19 +0200262 help
263 Generate dwarf4 debug info. This requires recent versions
264 of gcc and gdb. It makes the debug information larger.
265 But it significantly improves the success of resolving
266 variables in gdb on optimized code.
267
Andrii Nakryikoe83b9f52019-04-02 09:49:50 -0700268config DEBUG_INFO_BTF
269 bool "Generate BTF typeinfo"
Slava Bacherikov7d32e692020-04-02 23:41:39 +0300270 depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
271 depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
Andrii Nakryikoe83b9f52019-04-02 09:49:50 -0700272 help
273 Generate deduplicated BTF type information from DWARF debug info.
274 Turning this on expects presence of pahole tool, which will convert
275 DWARF type info into equivalent deduplicated BTF type info.
276
Andrii Nakryiko5f9ae912020-11-09 17:19:30 -0800277config PAHOLE_HAS_SPLIT_BTF
278 def_bool $(success, test `$(PAHOLE) --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/'` -ge "119")
279
280config DEBUG_INFO_BTF_MODULES
281 def_bool y
282 depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF
283 help
284 Generate compact split BTF type information for kernel modules.
285
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800286config GDB_SCRIPTS
287 bool "Provide GDB scripts for kernel debugging"
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800288 help
289 This creates the required links to GDB helper scripts in the
290 build directory. If you load vmlinux into gdb, the helper
291 scripts will be automatically imported by gdb as well, and
292 additional functions are available to analyze a Linux kernel
Andreas Platschek700199b02016-12-14 15:05:40 -0800293 instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
294 for further details.
Jan Kiszka3ee7b3f2015-02-17 13:46:36 -0800295
Sedat Dilek695afd32020-08-16 14:32:44 +0200296endif # DEBUG_INFO
297
Andrew Mortoncebc04b2006-08-14 22:43:18 -0700298config ENABLE_MUST_CHECK
299 bool "Enable __must_check logic"
300 default y
301 help
302 Enable the __must_check logic in the kernel build. Disable this to
303 suppress the "warning: ignoring return value of 'foo', declared with
304 attribute warn_unused_result" messages.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700305
Andi Kleen35bb5b12008-02-22 15:15:03 +0100306config FRAME_WARN
Masahiro Yamadaa83e4ca2020-02-17 00:19:36 +0900307 int "Warn for stack frames larger than"
Andi Kleen35bb5b12008-02-22 15:15:03 +0100308 range 0 8192
Kees Cook0e07f662016-10-27 17:46:41 -0700309 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
Helge Deller432654d2017-09-11 21:41:43 +0200310 default 1280 if (!64BIT && PARISC)
311 default 1024 if (!64BIT && !PARISC)
Andi Kleen35bb5b12008-02-22 15:15:03 +0100312 default 2048 if 64BIT
313 help
314 Tell gcc to warn at build time for stack frames larger than this.
315 Setting this too low will cause a lot of warnings.
316 Setting it to 0 disables the warning.
Andi Kleen35bb5b12008-02-22 15:15:03 +0100317
Randy Dunlap99657c72009-09-18 12:49:22 -0700318config STRIP_ASM_SYMS
319 bool "Strip assembler-generated symbols during link"
320 default n
321 help
322 Strip internal assembler-generated symbols during a link (symbols
323 that look like '.Lxxx') so they don't pollute the output of
324 get_wchan() and suchlike.
325
Andi Kleen1873e872012-03-28 11:51:18 -0700326config READABLE_ASM
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800327 bool "Generate readable assembler code"
328 depends on DEBUG_KERNEL
Don Mullisbf4735a2006-12-10 02:18:37 -0800329 help
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800330 Disable some compiler optimizations that tend to generate human unreadable
331 assembler output. This may make the kernel slightly slower, but it helps
332 to keep kernel developers who have to stare a lot at assembler listings
333 sane.
Don Mullisbf4735a2006-12-10 02:18:37 -0800334
Masahiro Yamadae949f4c2019-06-04 19:13:59 +0900335config HEADERS_INSTALL
336 bool "Install uapi headers to usr/include"
Don Mullisbf4735a2006-12-10 02:18:37 -0800337 depends on !UML
338 help
Masahiro Yamadae949f4c2019-06-04 19:13:59 +0900339 This option will install uapi headers (headers exported to user-space)
340 into the usr/include directory for use during the kernel build.
341 This is unneeded for building the kernel itself, but needed for some
342 user-space program samples. It is also needed by some features such
343 as uapi header sanity checks.
344
Sam Ravnborg91341d42008-01-21 21:31:44 +0100345config DEBUG_SECTION_MISMATCH
346 bool "Enable full Section mismatch analysis"
Sam Ravnborg91341d42008-01-21 21:31:44 +0100347 help
348 The section mismatch analysis checks if there are illegal
349 references from one section to another section.
Michael Wittene809ab02011-04-17 04:08:48 +0000350 During linktime or runtime, some sections are dropped;
351 any use of code/data previously in these sections would
Sam Ravnborg91341d42008-01-21 21:31:44 +0100352 most likely result in an oops.
Michael Wittene809ab02011-04-17 04:08:48 +0000353 In the code, functions and variables are annotated with
Paul Gortmaker0db06282013-06-19 14:53:51 -0400354 __init,, etc. (see the full list in include/linux/init.h),
Geert Uytterhoevend6fbfa42008-01-30 11:13:23 +0100355 which results in the code/data being placed in specific sections.
Michael Wittene809ab02011-04-17 04:08:48 +0000356 The section mismatch analysis is always performed after a full
357 kernel build, and enabling this option causes the following
Masahiro Yamadab7dca6d2019-07-17 15:17:57 +0900358 additional step to occur:
Michael Wittene809ab02011-04-17 04:08:48 +0000359 - Add the option -fno-inline-functions-called-once to gcc commands.
360 When inlining a function annotated with __init in a non-init
361 function, we would lose the section information and thus
Sam Ravnborg91341d42008-01-21 21:31:44 +0100362 the analysis would not catch the illegal reference.
Michael Wittene809ab02011-04-17 04:08:48 +0000363 This option tells gcc to inline less (but it does result in
364 a larger kernel).
Sam Ravnborg91341d42008-01-21 21:31:44 +0100365
Nicolas Boichat47490ec2015-10-06 09:44:42 +1030366config SECTION_MISMATCH_WARN_ONLY
367 bool "Make section mismatch errors non-fatal"
368 default y
369 help
370 If you say N here, the build process will fail if there are any
371 section mismatch, instead of just throwing warnings.
372
373 If unsure, say Y.
374
Feng Tang09c60542020-08-11 18:34:13 -0700375config DEBUG_FORCE_FUNCTION_ALIGN_32B
376 bool "Force all function address 32B aligned" if EXPERT
377 help
378 There are cases that a commit from one domain changes the function
379 address alignment of other domains, and cause magic performance
380 bump (regression or improvement). Enable this option will help to
381 verify if the bump is caused by function alignment changes, while
382 it will slightly increase the kernel size and affect icache usage.
383
384 It is mainly for debug and performance tuning use.
385
Dave Hansen6dfc0662013-07-01 13:04:46 -0700386#
387# Select this config option from the architecture Kconfig, if it
388# is preferred to always offer frame pointers as a config
389# option on the architecture (regardless of KERNEL_DEBUG):
390#
391config ARCH_WANT_FRAME_POINTERS
392 bool
Dave Hansen6dfc0662013-07-01 13:04:46 -0700393
394config FRAME_POINTER
395 bool "Compile the kernel with frame pointers"
Arnd Bergmanna687a532018-03-07 23:30:54 +0100396 depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
Dave Hansen6dfc0662013-07-01 13:04:46 -0700397 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
398 help
399 If you say Y here the resulting kernel image will be slightly
400 larger and slower, but it gives very useful debugging information
401 in case of kernel bugs. (precise oopses/stacktraces/warnings)
402
Josh Poimboeufb9ab5eb2016-02-28 22:22:42 -0600403config STACK_VALIDATION
404 bool "Compile-time stack metadata validation"
405 depends on HAVE_STACK_VALIDATION
406 default n
407 help
408 Add compile-time checks to validate stack metadata, including frame
409 pointers (if CONFIG_FRAME_POINTER is enabled). This helps ensure
410 that runtime stack traces are more reliable.
411
Josh Poimboeufee9f8fc2017-07-24 18:36:57 -0500412 This is also a prerequisite for generation of ORC unwind data, which
Josh Poimboeuf11af8472017-10-13 15:02:00 -0500413 is needed for CONFIG_UNWINDER_ORC.
Josh Poimboeufee9f8fc2017-07-24 18:36:57 -0500414
Josh Poimboeufb9ab5eb2016-02-28 22:22:42 -0600415 For more information, see
416 tools/objtool/Documentation/stack-validation.txt.
417
Peter Zijlstra6804c1a2020-03-18 13:33:54 +0100418config VMLINUX_VALIDATION
419 bool
420 depends on STACK_VALIDATION && DEBUG_ENTRY && !PARAVIRT
421 default y
422
Dave Hansen6dfc0662013-07-01 13:04:46 -0700423config DEBUG_FORCE_WEAK_PER_CPU
424 bool "Force weak per-cpu definitions"
425 depends on DEBUG_KERNEL
426 help
427 s390 and alpha require percpu variables in modules to be
428 defined weak to work around addressing range issue which
429 puts the following two restrictions on percpu variable
430 definitions.
431
432 1. percpu symbols must be unique whether static or not
433 2. percpu variables can't be defined inside a function
434
435 To ensure that generic code follows the above rules, this
436 option forces all percpu variables to be defined as weak.
437
438endmenu # "Compiler options"
439
Changbin Du6210b642019-12-06 17:03:42 -0800440menu "Generic Kernel Debugging Instruments"
441
Dave Hansen6dfc0662013-07-01 13:04:46 -0700442config MAGIC_SYSRQ
443 bool "Magic SysRq key"
444 depends on !UML
445 help
446 If you say Y here, you will have some control over the system even
447 if the system crashes for example during kernel debugging (e.g., you
448 will be able to flush the buffer cache to disk, reboot the system
449 immediately or dump some status information). This is accomplished
450 by pressing various keys while holding SysRq (Alt+PrintScreen). It
451 also works on a serial console (on PC hardware at least), if you
452 send a BREAK and then within 5 seconds a command keypress. The
Hans Holmbergf8998c22017-03-16 09:37:32 +0100453 keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
454 Don't say Y unless you really know what this hack does.
Dave Hansen6dfc0662013-07-01 13:04:46 -0700455
Ben Hutchings8eaede42013-10-07 01:05:46 +0100456config MAGIC_SYSRQ_DEFAULT_ENABLE
457 hex "Enable magic SysRq key functions by default"
458 depends on MAGIC_SYSRQ
459 default 0x1
460 help
461 Specifies which SysRq key functions are enabled by default.
462 This may be set to 1 or 0 to enable or disable them all, or
Hans Holmbergf8998c22017-03-16 09:37:32 +0100463 to a bitmask as described in Documentation/admin-guide/sysrq.rst.
Ben Hutchings8eaede42013-10-07 01:05:46 +0100464
Felix Fietkau732dbf32016-12-22 08:31:34 +0100465config MAGIC_SYSRQ_SERIAL
466 bool "Enable magic SysRq key over serial"
467 depends on MAGIC_SYSRQ
468 default y
469 help
470 Many embedded boards have a disconnected TTL level serial which can
471 generate some garbage that can lead to spurious false sysrq detects.
472 This option allows you to decide whether you want to enable the
473 magic SysRq key.
474
Dmitry Safonov68af4312020-03-02 17:51:35 +0000475config MAGIC_SYSRQ_SERIAL_SEQUENCE
476 string "Char sequence that enables magic SysRq over serial"
477 depends on MAGIC_SYSRQ_SERIAL
478 default ""
479 help
480 Specifies a sequence of characters that can follow BREAK to enable
481 SysRq on a serial console.
482
Dmitry Safonovd3394b32020-03-06 15:31:56 +0000483 If unsure, leave an empty string and the option will not be enabled.
484
Changbin Duec29a5c2019-12-06 17:04:06 -0800485config DEBUG_FS
486 bool "Debug Filesystem"
487 help
488 debugfs is a virtual file system that kernel developers use to put
489 debugging files into. Enable this option to be able to read and
490 write to these files.
491
492 For detailed documentation on the debugfs API, see
493 Documentation/filesystems/.
494
495 If unsure, say N.
496
Peter Enderborga24c6f72020-07-16 09:15:11 +0200497choice
498 prompt "Debugfs default access"
499 depends on DEBUG_FS
500 default DEBUG_FS_ALLOW_ALL
501 help
502 This selects the default access restrictions for debugfs.
503 It can be overridden with kernel command line option
504 debugfs=[on,no-mount,off]. The restrictions apply for API access
505 and filesystem registration.
506
507config DEBUG_FS_ALLOW_ALL
508 bool "Access normal"
509 help
510 No restrictions apply. Both API and filesystem registration
511 is on. This is the normal default operation.
512
513config DEBUG_FS_DISALLOW_MOUNT
514 bool "Do not register debugfs as filesystem"
515 help
516 The API is open but filesystem is not loaded. Clients can still do
517 their work and read with debug tools that do not need
518 debugfs filesystem.
519
520config DEBUG_FS_ALLOW_NONE
521 bool "No access"
522 help
523 Access is off. Clients get -PERM when trying to create nodes in
524 debugfs tree and debugfs is not registered as a filesystem.
525 Client can then back-off or continue without debugfs access.
526
527endchoice
528
Changbin Du6210b642019-12-06 17:03:42 -0800529source "lib/Kconfig.kgdb"
Changbin Du6210b642019-12-06 17:03:42 -0800530source "lib/Kconfig.ubsan"
Changbin Du2645d432020-09-18 21:20:42 -0700531source "lib/Kconfig.kcsan"
Changbin Du6210b642019-12-06 17:03:42 -0800532
533endmenu
534
Adrian Bunkf346f4b2006-01-09 20:54:51 -0800535config DEBUG_KERNEL
536 bool "Kernel debugging"
537 help
538 Say Y here if you are developing drivers or trying to debug and
539 identify kernel problems.
540
Sinan Kayac66d7a22019-05-14 15:44:00 -0700541config DEBUG_MISC
542 bool "Miscellaneous debug code"
543 default DEBUG_KERNEL
544 depends on DEBUG_KERNEL
545 help
546 Say Y here if you need to enable miscellaneous debug code that should
547 be under a more specific debug option but isn't.
548
549
Dave Hansen0610c8a2013-07-01 13:04:43 -0700550menu "Memory Debugging"
David Woodhousea304e1b2007-02-12 00:52:00 -0800551
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900552source "mm/Kconfig.debug"
Ingo Molnar82f67cd2007-02-16 01:28:13 -0800553
Thomas Gleixner3ac7fe52008-04-30 00:55:01 -0700554config DEBUG_OBJECTS
555 bool "Debug object operations"
556 depends on DEBUG_KERNEL
557 help
558 If you say Y here, additional code will be inserted into the
559 kernel to track the life time of various objects and validate
560 the operations on those objects.
561
562config DEBUG_OBJECTS_SELFTEST
563 bool "Debug objects selftest"
564 depends on DEBUG_OBJECTS
565 help
566 This enables the selftest of the object debug code.
567
568config DEBUG_OBJECTS_FREE
569 bool "Debug objects in freed memory"
570 depends on DEBUG_OBJECTS
571 help
572 This enables checks whether a k/v free operation frees an area
573 which contains an object which has not been deactivated
574 properly. This can make kmalloc/kfree-intensive workloads
575 much slower.
576
Thomas Gleixnerc6f3a972008-04-30 00:55:03 -0700577config DEBUG_OBJECTS_TIMERS
578 bool "Debug timer objects"
579 depends on DEBUG_OBJECTS
580 help
581 If you say Y here, additional code will be inserted into the
582 timer routines to track the life time of timer objects and
583 validate the timer operations.
584
Thomas Gleixnerdc186ad2009-11-16 01:09:48 +0900585config DEBUG_OBJECTS_WORK
586 bool "Debug work objects"
587 depends on DEBUG_OBJECTS
588 help
589 If you say Y here, additional code will be inserted into the
590 work queue routines to track the life time of work objects and
591 validate the work operations.
592
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400593config DEBUG_OBJECTS_RCU_HEAD
594 bool "Debug RCU callbacks objects"
Mathieu Desnoyersfc2ecf72011-02-23 09:42:14 -0800595 depends on DEBUG_OBJECTS
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400596 help
597 Enable this to turn on debugging of RCU list heads (call_rcu() usage).
598
Tejun Heoe2852ae2010-10-26 14:23:05 -0700599config DEBUG_OBJECTS_PERCPU_COUNTER
600 bool "Debug percpu counter objects"
601 depends on DEBUG_OBJECTS
602 help
603 If you say Y here, additional code will be inserted into the
604 percpu counter routines to track the life time of percpu counter
605 objects and validate the percpu counter operations.
606
Ingo Molnar3ae70202008-11-26 10:02:00 +0100607config DEBUG_OBJECTS_ENABLE_DEFAULT
608 int "debug_objects bootup default value (0-1)"
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800609 range 0 1
610 default "1"
611 depends on DEBUG_OBJECTS
612 help
613 Debug objects boot parameter default value
Ingo Molnar3ae70202008-11-26 10:02:00 +0100614
Linus Torvalds1da177e2005-04-16 15:20:36 -0700615config DEBUG_SLAB
Andrew Morton4a2f0ac2006-03-25 03:07:22 -0800616 bool "Debug slab memory allocations"
Levin, Alexander (Sasha Levin)4675ff02017-11-15 17:36:02 -0800617 depends on DEBUG_KERNEL && SLAB
Linus Torvalds1da177e2005-04-16 15:20:36 -0700618 help
619 Say Y here to have the kernel do limited verification on memory
620 allocation as well as poisoning memory on free to catch use of freed
621 memory. This can make kmalloc/kfree-intensive workloads much slower.
622
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700623config SLUB_DEBUG_ON
624 bool "SLUB debugging on by default"
Levin, Alexander (Sasha Levin)4675ff02017-11-15 17:36:02 -0800625 depends on SLUB && SLUB_DEBUG
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700626 default n
627 help
628 Boot with debugging on by default. SLUB boots by default with
629 the runtime debug capabilities switched off. Enabling this is
630 equivalent to specifying the "slub_debug" parameter on boot.
631 There is no support for more fine grained debug control like
632 possible with slub_debug=xxx. SLUB debugging may be switched
633 off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
634 "slub_debug=-".
635
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800636config SLUB_STATS
637 default n
638 bool "Enable SLUB performance statistics"
Christoph Lameterab4d5ed2010-10-05 13:57:26 -0500639 depends on SLUB && SYSFS
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800640 help
641 SLUB statistics are useful to debug SLUBs allocation behavior in
642 order find ways to optimize the allocator. This should never be
643 enabled for production use since keeping statistics slows down
644 the allocator by a few percentage points. The slabinfo command
645 supports the determination of the most active slabs to figure
646 out which slabs are relevant to a particular load.
647 Try running: slabinfo -DA
648
Catalin Marinasb69ec422012-10-08 16:28:11 -0700649config HAVE_DEBUG_KMEMLEAK
650 bool
651
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100652config DEBUG_KMEMLEAK
653 bool "Kernel memory leak detector"
Kees Cook525c1f92013-01-16 18:54:16 -0800654 depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
Catalin Marinas79e0d9b2011-04-27 17:06:19 +0100655 select DEBUG_FS
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100656 select STACKTRACE if STACKTRACE_SUPPORT
657 select KALLSYMS
Randy Dunlapb60e26a2009-11-06 15:33:45 -0800658 select CRC32
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100659 help
660 Say Y here if you want to enable the memory leak
661 detector. The memory allocation/freeing is traced in a way
662 similar to the Boehm's conservative garbage collector, the
663 difference being that the orphan objects are not freed but
664 only shown in /sys/kernel/debug/kmemleak. Enabling this
665 feature will introduce an overhead to memory
Andreas Platschek700199b02016-12-14 15:05:40 -0800666 allocations. See Documentation/dev-tools/kmemleak.rst for more
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100667 details.
668
Catalin Marinasbf96d1e2009-06-23 14:40:27 +0100669 Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
670 of finding leaks due to the slab objects poisoning.
671
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100672 In order to access the kmemleak file, debugfs needs to be
673 mounted (usually at /sys/kernel/debug).
674
Catalin Marinasc5665862019-09-23 15:34:05 -0700675config DEBUG_KMEMLEAK_MEM_POOL_SIZE
676 int "Kmemleak memory pool size"
Catalin Marinasa9d90582009-06-25 10:16:11 +0100677 depends on DEBUG_KMEMLEAK
Qian Caic59180a2019-09-23 15:34:10 -0700678 range 200 1000000
Nicolas Boichatb751c522019-09-23 15:33:55 -0700679 default 16000
Catalin Marinasa9d90582009-06-25 10:16:11 +0100680 help
681 Kmemleak must track all the memory allocations to avoid
682 reporting false positives. Since memory may be allocated or
Catalin Marinasc5665862019-09-23 15:34:05 -0700683 freed before kmemleak is fully initialised, use a static pool
684 of metadata objects to track such callbacks. After kmemleak is
685 fully initialised, this memory pool acts as an emergency one
686 if slab allocations fail.
Catalin Marinasa9d90582009-06-25 10:16:11 +0100687
Catalin Marinas0822ee42009-06-11 13:24:14 +0100688config DEBUG_KMEMLEAK_TEST
689 tristate "Simple test for the kernel memory leak detector"
Daniel Baluta97182692011-04-04 15:06:44 -0700690 depends on DEBUG_KMEMLEAK && m
Catalin Marinas0822ee42009-06-11 13:24:14 +0100691 help
Daniel Baluta97182692011-04-04 15:06:44 -0700692 This option enables a module that explicitly leaks memory.
Catalin Marinas0822ee42009-06-11 13:24:14 +0100693
694 If unsure, say N.
695
Jason Baronab0155a2010-07-19 11:54:17 +0100696config DEBUG_KMEMLEAK_DEFAULT_OFF
697 bool "Default kmemleak to off"
698 depends on DEBUG_KMEMLEAK
699 help
700 Say Y here to disable kmemleak by default. It can then be enabled
701 on the command line via kmemleak=on.
702
Sri Krishna chowdaryd53ce042018-12-28 00:38:54 -0800703config DEBUG_KMEMLEAK_AUTO_SCAN
704 bool "Enable kmemleak auto scan thread on boot up"
705 default y
706 depends on DEBUG_KMEMLEAK
707 help
708 Depending on the cpu, kmemleak scan may be cpu intensive and can
709 stall user tasks at times. This option enables/disables automatic
710 kmemleak scan at boot up.
711
712 Say N here to disable kmemleak auto scan thread to stop automatic
713 scanning. Disabling this option disables automatic reporting of
714 memory leaks.
715
716 If unsure, say Y.
717
Dave Hansen0610c8a2013-07-01 13:04:43 -0700718config DEBUG_STACK_USAGE
719 bool "Stack utilization instrumentation"
Helge Deller6c31da32016-03-19 17:54:10 +0100720 depends on DEBUG_KERNEL && !IA64
Dave Hansen0610c8a2013-07-01 13:04:43 -0700721 help
722 Enables the display of the minimum amount of free stack which each
723 task has ever had available in the sysrq-T and sysrq-P debug output.
724
725 This option will slow down process creation somewhat.
726
Changbin Dudc9b9632019-12-06 17:03:57 -0800727config SCHED_STACK_END_CHECK
728 bool "Detect stack corruption on calls to schedule()"
729 depends on DEBUG_KERNEL
730 default n
731 help
732 This option checks for a stack overrun on calls to schedule().
733 If the stack end location is found to be over written always panic as
734 the content of the corrupted region can no longer be trusted.
735 This is to ensure no erroneous behaviour occurs which could result in
736 data corruption or a sporadic crash at a later stage once the region
737 is examined. The runtime overhead introduced is minimal.
738
Anshuman Khandual399145f2020-06-04 16:47:15 -0700739config ARCH_HAS_DEBUG_VM_PGTABLE
740 bool
741 help
742 An architecture should select this when it can successfully
743 build and run DEBUG_VM_PGTABLE.
744
Dave Hansen0610c8a2013-07-01 13:04:43 -0700745config DEBUG_VM
746 bool "Debug VM"
747 depends on DEBUG_KERNEL
748 help
749 Enable this to turn on extended checks in the virtual-memory system
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -0800750 that may impact performance.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700751
752 If unsure, say N.
753
Davidlohr Bueso4f115142014-06-04 16:06:46 -0700754config DEBUG_VM_VMACACHE
755 bool "Debug VMA caching"
756 depends on DEBUG_VM
757 help
758 Enable this to turn on VMA caching debug information. Doing so
759 can cause significant overhead, so only enable it in non-production
760 environments.
761
762 If unsure, say N.
763
Dave Hansen0610c8a2013-07-01 13:04:43 -0700764config DEBUG_VM_RB
765 bool "Debug VM red-black trees"
766 depends on DEBUG_VM
767 help
Davidlohr Buesoa663dad2014-04-18 15:07:22 -0700768 Enable VM red-black tree debugging information and extra validations.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700769
770 If unsure, say N.
771
Kirill A. Shutemov95ad9752016-01-15 16:51:21 -0800772config DEBUG_VM_PGFLAGS
773 bool "Debug page-flags operations"
774 depends on DEBUG_VM
775 help
776 Enables extra validation on page flags operations.
777
778 If unsure, say N.
779
Anshuman Khandual399145f2020-06-04 16:47:15 -0700780config DEBUG_VM_PGTABLE
781 bool "Debug arch page table for semantics compliance"
782 depends on MMU
783 depends on ARCH_HAS_DEBUG_VM_PGTABLE
784 default y if DEBUG_VM
785 help
786 This option provides a debug method which can be used to test
787 architecture page table helper functions on various platforms in
788 verifying if they comply with expected generic MM semantics. This
789 will help architecture code in making sure that any changes or
790 new additions of these helpers still conform to expected
791 semantics of the generic MM. Platforms will have to opt in for
792 this through ARCH_HAS_DEBUG_VM_PGTABLE.
793
794 If unsure, say N.
795
Laura Abbottfa5b6ec2017-01-10 13:35:40 -0800796config ARCH_HAS_DEBUG_VIRTUAL
797 bool
798
Dave Hansen0610c8a2013-07-01 13:04:43 -0700799config DEBUG_VIRTUAL
800 bool "Debug VM translations"
Laura Abbottfa5b6ec2017-01-10 13:35:40 -0800801 depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL
Dave Hansen0610c8a2013-07-01 13:04:43 -0700802 help
803 Enable some costly sanity checks in virtual to page code. This can
804 catch mistakes with virt_to_page() and friends.
805
806 If unsure, say N.
807
808config DEBUG_NOMMU_REGIONS
809 bool "Debug the global anon/private NOMMU mapping region tree"
810 depends on DEBUG_KERNEL && !MMU
811 help
812 This option causes the global tree of anonymous and private mapping
813 regions to be regularly checked for invalid topology.
814
815config DEBUG_MEMORY_INIT
816 bool "Debug memory initialisation" if EXPERT
817 default !EXPERT
818 help
819 Enable this for additional checks during memory initialisation.
820 The sanity checks verify aspects of the VM such as the memory model
821 and other information provided by the architecture. Verbose
822 information will be printed at KERN_DEBUG loglevel depending
823 on the mminit_loglevel= command-line option.
824
825 If unsure, say Y
826
827config MEMORY_NOTIFIER_ERROR_INJECT
828 tristate "Memory hotplug notifier error injection module"
829 depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
830 help
831 This option provides the ability to inject artificial errors to
832 memory hotplug notifier chain callbacks. It is controlled through
833 debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
834
835 If the notifier call chain should be failed with some events
836 notified, write the error code to "actions/<notifier event>/error".
837
838 Example: Inject memory hotplug offline error (-12 == -ENOMEM)
839
840 # cd /sys/kernel/debug/notifier-error-inject/memory
841 # echo -12 > actions/MEM_GOING_OFFLINE/error
842 # echo offline > /sys/devices/system/memory/memoryXXX/state
843 bash: echo: write error: Cannot allocate memory
844
845 To compile this code as a module, choose M here: the module will
846 be called memory-notifier-error-inject.
847
848 If unsure, say N.
849
850config DEBUG_PER_CPU_MAPS
851 bool "Debug access to per_cpu maps"
852 depends on DEBUG_KERNEL
853 depends on SMP
854 help
855 Say Y to verify that the per_cpu map being accessed has
856 been set up. This adds a fair amount of code to kernel memory
857 and decreases performance.
858
859 Say N if unsure.
860
861config DEBUG_HIGHMEM
862 bool "Highmem debugging"
863 depends on DEBUG_KERNEL && HIGHMEM
864 help
Geert Uytterhoevenb1357c92014-04-14 18:55:50 +0200865 This option enables additional error checking for high memory
866 systems. Disable for production systems.
Dave Hansen0610c8a2013-07-01 13:04:43 -0700867
868config HAVE_DEBUG_STACKOVERFLOW
869 bool
870
871config DEBUG_STACKOVERFLOW
872 bool "Check for stack overflows"
873 depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
Masahiro Yamadaa7f7f622020-06-14 01:50:22 +0900874 help
Dave Hansen0610c8a2013-07-01 13:04:43 -0700875 Say Y here if you want to check for overflows of kernel, IRQ
Borislav Petkovedb0ec02015-01-25 19:50:34 +0100876 and exception stacks (if your architecture uses them). This
Dave Hansen0610c8a2013-07-01 13:04:43 -0700877 option will show detailed messages if free stack space drops
878 below a certain limit.
879
880 These kinds of bugs usually occur when call-chains in the
881 kernel get too deep, especially when interrupts are
882 involved.
883
884 Use this in cases where you see apparently random memory
885 corruption, especially if it appears in 'struct thread_info'
886
887 If in doubt, say "N".
888
Andrey Ryabinin0b24bec2015-02-13 14:39:17 -0800889source "lib/Kconfig.kasan"
890
Dave Hansen0610c8a2013-07-01 13:04:43 -0700891endmenu # "Memory Debugging"
892
Linus Torvalds1da177e2005-04-16 15:20:36 -0700893config DEBUG_SHIRQ
894 bool "Debug shared IRQ handlers"
Martin Schwidefsky0244ad02013-08-30 09:39:53 +0200895 depends on DEBUG_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700896 help
Wolfram Sang0a2fae22020-07-03 00:20:24 +0200897 Enable this to generate a spurious interrupt just before a shared
898 interrupt handler is deregistered (generating one when registering
899 is currently disabled). Drivers need to handle this correctly. Some
900 don't and need to be caught.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700901
Changbin Duf43a2892019-12-06 17:03:54 -0800902menu "Debug Oops, Lockups and Hangs"
903
904config PANIC_ON_OOPS
905 bool "Panic on Oops"
906 help
907 Say Y here to enable the kernel to panic when it oopses. This
908 has the same effect as setting oops=panic on the kernel command
909 line.
910
911 This feature is useful to ensure that the kernel does not do
912 anything erroneous after an oops which could result in data
913 corruption or other issues.
914
915 Say N if unsure.
916
917config PANIC_ON_OOPS_VALUE
918 int
919 range 0 1
920 default 0 if !PANIC_ON_OOPS
921 default 1 if PANIC_ON_OOPS
922
923config PANIC_TIMEOUT
924 int "panic timeout"
925 default 0
926 help
Tiezhu Yang9d5b1342020-08-11 18:36:49 -0700927 Set the timeout value (in seconds) until a reboot occurs when
Changbin Duf43a2892019-12-06 17:03:54 -0800928 the kernel panics. If n = 0, then we wait forever. A timeout
929 value n > 0 will wait n seconds before rebooting, while a timeout
930 value n < 0 will reboot immediately.
Dave Hansen92aef8fb2013-07-01 13:04:50 -0700931
Linus Torvalds1da177e2005-04-16 15:20:36 -0700932config LOCKUP_DETECTOR
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700933 bool
934
935config SOFTLOCKUP_DETECTOR
936 bool "Detect Soft Lockups"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700937 depends on DEBUG_KERNEL && !S390
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700938 select LOCKUP_DETECTOR
Linus Torvalds1da177e2005-04-16 15:20:36 -0700939 help
940 Say Y here to enable the kernel to act as a watchdog to detect
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700941 soft lockups.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700942
943 Softlockups are bugs that cause the kernel to loop in kernel
944 mode for more than 20 seconds, without giving other tasks a
945 chance to run. The current stack trace is displayed upon
946 detection and the system will stay locked up.
947
Randy Dunlap5f00ae02018-04-10 16:32:51 -0700948config BOOTPARAM_SOFTLOCKUP_PANIC
949 bool "Panic (Reboot) On Soft Lockups"
950 depends on SOFTLOCKUP_DETECTOR
951 help
952 Say Y here to enable the kernel to panic on "soft lockups",
953 which are bugs that cause the kernel to loop in kernel
954 mode for more than 20 seconds (configurable using the watchdog_thresh
955 sysctl), without giving other tasks a chance to run.
956
957 The panic can be used in combination with panic_timeout,
958 to cause the system to reboot automatically after a
959 lockup has been detected. This feature is useful for
960 high-availability systems that have uptime guarantees and
961 where a lockup must be resolved ASAP.
962
963 Say N if unsure.
964
965config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
966 int
967 depends on SOFTLOCKUP_DETECTOR
968 range 0 1
969 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
970 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
971
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700972config HARDLOCKUP_DETECTOR_PERF
973 bool
974 select SOFTLOCKUP_DETECTOR
975
976#
Thomas Gleixner7edaeb62017-08-15 09:50:13 +0200977# Enables a timestamp based low pass filter to compensate for perf based
978# hard lockup detection which runs too fast due to turbo modes.
979#
980config HARDLOCKUP_CHECK_TIMESTAMP
981 bool
982
983#
Nicholas Piggin05a4a952017-07-12 14:35:46 -0700984# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
985# lockup detector rather than the perf based detector.
986#
987config HARDLOCKUP_DETECTOR
988 bool "Detect Hard Lockups"
989 depends on DEBUG_KERNEL && !S390
990 depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH
991 select LOCKUP_DETECTOR
992 select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
993 select HARDLOCKUP_DETECTOR_ARCH if HAVE_HARDLOCKUP_DETECTOR_ARCH
994 help
995 Say Y here to enable the kernel to act as a watchdog to detect
996 hard lockups.
997
Linus Torvalds1da177e2005-04-16 15:20:36 -0700998 Hardlockups are bugs that cause the CPU to loop in kernel mode
999 for more than 10 seconds, without letting other interrupts have a
1000 chance to run. The current stack trace is displayed upon detection
1001 and the system will stay locked up.
1002
Linus Torvalds1da177e2005-04-16 15:20:36 -07001003config BOOTPARAM_HARDLOCKUP_PANIC
1004 bool "Panic (Reboot) On Hard Lockups"
1005 depends on HARDLOCKUP_DETECTOR
1006 help
1007 Say Y here to enable the kernel to panic on "hard lockups",
1008 which are bugs that cause the kernel to loop in kernel
1009 mode with interrupts disabled for more than 10 seconds (configurable
1010 using the watchdog_thresh sysctl).
1011
1012 Say N if unsure.
1013
1014config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
1015 int
1016 depends on HARDLOCKUP_DETECTOR
1017 range 0 1
1018 default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
1019 default 1 if BOOTPARAM_HARDLOCKUP_PANIC
1020
Linus Torvalds1da177e2005-04-16 15:20:36 -07001021config DETECT_HUNG_TASK
1022 bool "Detect Hung Tasks"
1023 depends on DEBUG_KERNEL
Nicholas Piggin05a4a952017-07-12 14:35:46 -07001024 default SOFTLOCKUP_DETECTOR
Linus Torvalds1da177e2005-04-16 15:20:36 -07001025 help
1026 Say Y here to enable the kernel to detect "hung tasks",
1027 which are bugs that cause the task to be stuck in
Vivien Didelot96b03ab2016-09-22 16:55:13 -04001028 uninterruptible "D" state indefinitely.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001029
1030 When a hung task is detected, the kernel will print the
1031 current stack trace (which you should report), but the
1032 task will stay in uninterruptible state. If lockdep is
1033 enabled then all held locks will also be reported. This
1034 feature has negligible overhead.
Al Viro871751e2006-03-25 03:06:39 -08001035
1036config DEFAULT_HUNG_TASK_TIMEOUT
1037 int "Default timeout for hung task detection (in seconds)"
1038 depends on DETECT_HUNG_TASK
Linus Torvalds1da177e2005-04-16 15:20:36 -07001039 default 120
1040 help
Ingo Molnar8637c092006-07-03 00:24:38 -07001041 This option controls the default timeout (in seconds) used
Linus Torvalds1da177e2005-04-16 15:20:36 -07001042 to determine when a task has become non-responsive and should
1043 be considered hung.
1044
1045 It can be adjusted at runtime via the kernel.hung_task_timeout_secs
1046 sysctl or by writing a value to
1047 /proc/sys/kernel/hung_task_timeout_secs.
1048
Ingo Molnare7eebaf2006-06-27 02:54:55 -07001049 A timeout of 0 disables the check. The default is two minutes.
1050 Keeping the default should be fine in most cases.
Ingo Molnare7eebaf2006-06-27 02:54:55 -07001051
1052config BOOTPARAM_HUNG_TASK_PANIC
1053 bool "Panic (Reboot) On Hung Tasks"
1054 depends on DETECT_HUNG_TASK
1055 help
1056 Say Y here to enable the kernel to panic on "hung tasks",
1057 which are bugs that cause the kernel to leave a task stuck
1058 in uninterruptible "D" state.
1059
1060 The panic can be used in combination with panic_timeout,
Thomas Gleixner61a87122006-06-27 02:54:56 -07001061 to cause the system to reboot automatically after a
1062 hung task has been detected. This feature is useful for
Roman Zippela1583d32006-06-27 02:55:00 -07001063 high-availability systems that have uptime guarantees and
Thomas Gleixner61a87122006-06-27 02:54:56 -07001064 where a hung tasks must be resolved ASAP.
1065
1066 Say N if unsure.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001067
Hugh Dickins048c8bc2006-11-01 05:44:54 +11001068config BOOTPARAM_HUNG_TASK_PANIC_VALUE
Linus Torvalds1da177e2005-04-16 15:20:36 -07001069 int
1070 depends on DETECT_HUNG_TASK
1071 range 0 1
1072 default 0 if !BOOTPARAM_HUNG_TASK_PANIC
1073 default 1 if BOOTPARAM_HUNG_TASK_PANIC
1074
Tejun Heo82607adc2015-12-08 11:28:04 -05001075config WQ_WATCHDOG
1076 bool "Detect Workqueue Stalls"
1077 depends on DEBUG_KERNEL
1078 help
1079 Say Y here to enable stall detection on workqueues. If a
1080 worker pool doesn't make forward progress on a pending work
1081 item for over a given amount of time, 30s by default, a
1082 warning message is printed along with dump of workqueue
1083 state. This can be configured through kernel parameter
1084 "workqueue.watchdog_thresh" and its sysfs counterpart.
1085
Konstantin Khlebnikov30428ef2020-04-06 20:09:47 -07001086config TEST_LOCKUP
1087 tristate "Test module to generate lockups"
Tiezhu Yang63646bc2020-08-11 18:34:44 -07001088 depends on m
Konstantin Khlebnikov30428ef2020-04-06 20:09:47 -07001089 help
1090 This builds the "test_lockup" module that helps to make sure
1091 that watchdogs and lockup detectors are working properly.
1092
1093 Depending on module parameters it could emulate soft or hard
1094 lockup, "hung task", or locking arbitrary lock for a long time.
1095 Also it could generate series of lockups with cooling-down periods.
1096
1097 If unsure, say N.
1098
Dave Hansen92aef8fb2013-07-01 13:04:50 -07001099endmenu # "Debug lockups and hangs"
1100
Changbin Duebebdd02019-12-06 17:04:00 -08001101menu "Scheduler Debugging"
Jason Baron5800dc32013-11-25 23:23:04 +00001102
Linus Torvalds1da177e2005-04-16 15:20:36 -07001103config SCHED_DEBUG
1104 bool "Collect scheduler debugging info"
1105 depends on DEBUG_KERNEL && PROC_FS
1106 default y
1107 help
1108 If you say Y here, the /proc/sched_debug file will be provided
1109 that can help debug the scheduler. The runtime overhead of this
1110 option is minimal.
1111
Naveen N. Raof6db8342015-06-25 23:53:37 +05301112config SCHED_INFO
1113 bool
1114 default n
1115
Linus Torvalds1da177e2005-04-16 15:20:36 -07001116config SCHEDSTATS
1117 bool "Collect scheduler statistics"
1118 depends on DEBUG_KERNEL && PROC_FS
Naveen N. Raof6db8342015-06-25 23:53:37 +05301119 select SCHED_INFO
Linus Torvalds1da177e2005-04-16 15:20:36 -07001120 help
1121 If you say Y here, additional code will be inserted into the
1122 scheduler and related routines to collect statistics about
1123 scheduler behavior and provide them in /proc/schedstat. These
1124 stats may be useful for both tuning and debugging the scheduler
1125 If you aren't debugging the scheduler or trying to tune a specific
1126 application, you can say N to avoid the very slight overhead
1127 this adds.
1128
Changbin Duebebdd02019-12-06 17:04:00 -08001129endmenu
Aaron Tomlin0d9e2632014-09-12 14:16:19 +01001130
John Stultz3c17ad12015-03-11 21:16:32 -07001131config DEBUG_TIMEKEEPING
1132 bool "Enable extra timekeeping sanity checking"
1133 help
1134 This option will enable additional timekeeping sanity checks
1135 which may be helpful when diagnosing issues where timekeeping
1136 problems are suspected.
1137
1138 This may include checks in the timekeeping hotpaths, so this
1139 option may have a (very small) performance impact to some
1140 workloads.
1141
1142 If unsure, say N.
1143
Linus Torvalds1da177e2005-04-16 15:20:36 -07001144config DEBUG_PREEMPT
1145 bool "Debug preemptible kernel"
Sebastian Andrzej Siewior9f472862019-10-15 21:18:19 +02001146 depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001147 default y
1148 help
1149 If you say Y here then the kernel will use a debug variant of the
1150 commonly used smp_processor_id() function and will print warnings
1151 if kernel code uses it in a preemption-unsafe way. Also, the kernel
1152 will detect preemption count underflows.
1153
Dave Hansen9eade162013-07-01 13:04:47 -07001154menu "Lock Debugging (spinlocks, mutexes, etc...)"
1155
Waiman Longf07cbeb2018-03-30 17:27:59 -04001156config LOCK_DEBUGGING_SUPPORT
1157 bool
1158 depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1159 default y
1160
Waiman Long19193bc2018-03-30 17:28:00 -04001161config PROVE_LOCKING
1162 bool "Lock debugging: prove locking correctness"
1163 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1164 select LOCKDEP
1165 select DEBUG_SPINLOCK
1166 select DEBUG_MUTEXES
1167 select DEBUG_RT_MUTEXES if RT_MUTEXES
Waiman Longc71fd892019-05-20 16:59:00 -04001168 select DEBUG_RWSEMS
Waiman Long19193bc2018-03-30 17:28:00 -04001169 select DEBUG_WW_MUTEX_SLOWPATH
1170 select DEBUG_LOCK_ALLOC
Ahmed S. Darwish8fd8ad52020-07-20 17:55:13 +02001171 select PREEMPT_COUNT if !ARCH_NO_PREEMPT
Waiman Long19193bc2018-03-30 17:28:00 -04001172 select TRACE_IRQFLAGS
1173 default n
1174 help
1175 This feature enables the kernel to prove that all locking
1176 that occurs in the kernel runtime is mathematically
1177 correct: that under no circumstance could an arbitrary (and
1178 not yet triggered) combination of observed locking
1179 sequences (on an arbitrary number of CPUs, running an
1180 arbitrary number of tasks and interrupt contexts) cause a
1181 deadlock.
1182
1183 In short, this feature enables the kernel to report locking
1184 related deadlocks before they actually occur.
1185
1186 The proof does not depend on how hard and complex a
1187 deadlock scenario would be to trigger: how many
1188 participant CPUs, tasks and irq-contexts would be needed
1189 for it to trigger. The proof also does not depend on
1190 timing: if a race and a resulting deadlock is possible
1191 theoretically (no matter how unlikely the race scenario
1192 is), it will be proven so and will immediately be
1193 reported by the kernel (once the event is observed that
1194 makes the deadlock theoretically possible).
1195
1196 If a deadlock is impossible (i.e. the locking rules, as
1197 observed by the kernel, are mathematically correct), the
1198 kernel reports nothing.
1199
1200 NOTE: this feature can also be enabled for rwlocks, mutexes
1201 and rwsems - in which case all dependencies between these
1202 different locking variants are observed and mapped too, and
1203 the proof of observed correctness is also maintained for an
1204 arbitrary combination of these separate locking variants.
1205
Mauro Carvalho Chehab387b1462019-04-10 08:32:41 -03001206 For more details, see Documentation/locking/lockdep-design.rst.
Waiman Long19193bc2018-03-30 17:28:00 -04001207
Peter Zijlstrade8f5e42020-03-21 12:26:01 +01001208config PROVE_RAW_LOCK_NESTING
1209 bool "Enable raw_spinlock - spinlock nesting checks"
1210 depends on PROVE_LOCKING
1211 default n
1212 help
1213 Enable the raw_spinlock vs. spinlock nesting checks which ensure
1214 that the lock nesting rules for PREEMPT_RT enabled kernels are
1215 not violated.
1216
1217 NOTE: There are known nesting problems. So if you enable this
1218 option expect lockdep splats until these problems have been fully
1219 addressed which is work in progress. This config switch allows to
1220 identify and analyze these problems. It will be removed and the
1221 check permanentely enabled once the main issues have been fixed.
1222
1223 If unsure, select N.
1224
Waiman Long19193bc2018-03-30 17:28:00 -04001225config LOCK_STAT
1226 bool "Lock usage statistics"
1227 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1228 select LOCKDEP
1229 select DEBUG_SPINLOCK
1230 select DEBUG_MUTEXES
1231 select DEBUG_RT_MUTEXES if RT_MUTEXES
1232 select DEBUG_LOCK_ALLOC
1233 default n
1234 help
1235 This feature enables tracking lock contention points
1236
Mauro Carvalho Chehab387b1462019-04-10 08:32:41 -03001237 For more details, see Documentation/locking/lockstat.rst
Waiman Long19193bc2018-03-30 17:28:00 -04001238
1239 This also enables lock events required by "perf lock",
1240 subcommand of perf.
1241 If you want to use "perf lock", you also need to turn on
1242 CONFIG_EVENT_TRACING.
1243
1244 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
1245 (CONFIG_LOCKDEP defines "acquire" and "release" events.)
1246
Linus Torvalds1da177e2005-04-16 15:20:36 -07001247config DEBUG_RT_MUTEXES
1248 bool "RT Mutex debugging, deadlock detection"
1249 depends on DEBUG_KERNEL && RT_MUTEXES
1250 help
1251 This allows rt mutex semantics violations and rt mutex related
1252 deadlocks (lockups) to be detected and reported automatically.
1253
Linus Torvalds1da177e2005-04-16 15:20:36 -07001254config DEBUG_SPINLOCK
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001255 bool "Spinlock and rw-lock debugging: basic checks"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001256 depends on DEBUG_KERNEL
Raghavendra K Te335e3e2012-03-22 15:25:08 +05301257 select UNINLINE_SPIN_UNLOCK
Linus Torvalds1da177e2005-04-16 15:20:36 -07001258 help
1259 Say Y here and build SMP to catch missing spinlock initialization
1260 and certain other kinds of spinlock errors commonly made. This is
1261 best used in conjunction with the NMI watchdog so that spinlock
1262 deadlocks are also debuggable.
1263
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001264config DEBUG_MUTEXES
1265 bool "Mutex debugging: basic checks"
1266 depends on DEBUG_KERNEL
1267 help
1268 This feature allows mutex semantics violations to be detected and
1269 reported.
1270
Daniel Vetter23010022013-06-20 13:31:17 +02001271config DEBUG_WW_MUTEX_SLOWPATH
1272 bool "Wait/wound mutex debugging: Slowpath testing"
Waiman Longf07cbeb2018-03-30 17:27:59 -04001273 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Daniel Vetter23010022013-06-20 13:31:17 +02001274 select DEBUG_LOCK_ALLOC
1275 select DEBUG_SPINLOCK
1276 select DEBUG_MUTEXES
1277 help
1278 This feature enables slowpath testing for w/w mutex users by
1279 injecting additional -EDEADLK wound/backoff cases. Together with
1280 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
1281 will test all possible w/w mutex interface abuse with the
1282 exception of simply not acquiring all the required locks.
Rob Clark4d692372014-08-27 11:19:26 -04001283 Note that this feature can introduce significant overhead, so
1284 it really should not be enabled in a production or distro kernel,
1285 even a debug kernel. If you are a driver writer, enable it. If
1286 you are a distro, do not.
Daniel Vetter23010022013-06-20 13:31:17 +02001287
Waiman Long5149cba2018-03-30 17:27:58 -04001288config DEBUG_RWSEMS
1289 bool "RW Semaphore debugging: basic checks"
Waiman Longc71fd892019-05-20 16:59:00 -04001290 depends on DEBUG_KERNEL
Waiman Long5149cba2018-03-30 17:27:58 -04001291 help
Waiman Longc71fd892019-05-20 16:59:00 -04001292 This debugging feature allows mismatched rw semaphore locks
1293 and unlocks to be detected and reported.
Waiman Long5149cba2018-03-30 17:27:58 -04001294
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001295config DEBUG_LOCK_ALLOC
1296 bool "Lock debugging: detect incorrect freeing of live locks"
Waiman Longf07cbeb2018-03-30 17:27:59 -04001297 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001298 select DEBUG_SPINLOCK
1299 select DEBUG_MUTEXES
Peter Zijlstraf5694782016-09-19 12:15:37 +02001300 select DEBUG_RT_MUTEXES if RT_MUTEXES
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001301 select LOCKDEP
1302 help
1303 This feature will check whether any held lock (spinlock, rwlock,
1304 mutex or rwsem) is incorrectly freed by the kernel, via any of the
1305 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
1306 vfree(), etc.), whether a live lock is incorrectly reinitialized via
1307 spin_lock_init()/mutex_init()/etc., or whether there is any lock
1308 held during task exit.
1309
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001310config LOCKDEP
1311 bool
Waiman Longf07cbeb2018-03-30 17:27:59 -04001312 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001313 select STACKTRACE
Stefan Agnerf9b58e82018-09-30 23:02:33 +01001314 select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001315 select KALLSYMS
1316 select KALLSYMS_ALL
1317
Daniel Jordan395102d2017-04-10 11:50:52 -04001318config LOCKDEP_SMALL
1319 bool
1320
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001321config DEBUG_LOCKDEP
1322 bool "Lock dependency engine debugging"
Adrian Bunk517e7aa2006-07-14 00:24:32 -07001323 depends on DEBUG_KERNEL && LOCKDEP
Ingo Molnar4d9f34a2006-07-03 00:24:55 -07001324 help
1325 If you say Y here, the lock dependency engine will do
1326 additional runtime checks to debug itself, at the price
1327 of more runtime overhead.
1328
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001329config DEBUG_ATOMIC_SLEEP
1330 bool "Sleep inside atomic section checking"
Frederic Weisbeckere8f7c702011-06-08 01:51:02 +02001331 select PREEMPT_COUNT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001332 depends on DEBUG_KERNEL
Christoph Hellwig87a4c372018-07-31 13:39:32 +02001333 depends on !ARCH_NO_PREEMPT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001334 help
1335 If you say Y here, various routines which may sleep will become very
Frederic Weisbeckerd902db12011-06-08 19:31:56 +02001336 noisy if they are called inside atomic sections: when a spinlock is
1337 held, inside an rcu read side critical section, inside preempt disabled
1338 sections, inside an interrupt, etc...
Linus Torvalds1da177e2005-04-16 15:20:36 -07001339
Ingo Molnarcae2ed92006-07-03 00:24:48 -07001340config DEBUG_LOCKING_API_SELFTESTS
1341 bool "Locking API boot-time self-tests"
1342 depends on DEBUG_KERNEL
1343 help
1344 Say Y here if you want the kernel to run a short self-test during
1345 bootup. The self-test checks whether common types of locking bugs
1346 are detected by debugging mechanisms or not. (if you disable
1347 lock debugging then those bugs wont be detected of course.)
1348 The following locking APIs are covered: spinlocks, rwlocks,
1349 mutexes and rwsems.
1350
Paul E. McKenney0af3fe12014-02-04 15:51:41 -08001351config LOCK_TORTURE_TEST
1352 tristate "torture tests for locking"
1353 depends on DEBUG_KERNEL
1354 select TORTURE_TEST
Paul E. McKenney0af3fe12014-02-04 15:51:41 -08001355 help
1356 This option provides a kernel module that runs torture tests
1357 on kernel locking primitives. The kernel module may be built
1358 after the fact on the running kernel to be tested, if desired.
1359
1360 Say Y here if you want kernel locking-primitive torture tests
1361 to be built into the kernel.
1362 Say M if you want these torture tests to build as a module.
1363 Say N if you are unsure.
1364
Chris Wilsonf2a5fec2016-12-01 11:47:06 +00001365config WW_MUTEX_SELFTEST
1366 tristate "Wait/wound mutex selftests"
1367 help
1368 This option provides a kernel module that runs tests on the
1369 on the struct ww_mutex locking API.
1370
1371 It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction
1372 with this test harness.
1373
1374 Say M if you want these self tests to build as a module.
1375 Say N if you are unsure.
1376
Paul E. McKenneye9d338a2020-06-24 15:59:59 -07001377config SCF_TORTURE_TEST
1378 tristate "torture tests for smp_call_function*()"
1379 depends on DEBUG_KERNEL
1380 select TORTURE_TEST
1381 help
1382 This option provides a kernel module that runs torture tests
1383 on the smp_call_function() family of primitives. The kernel
1384 module may be built after the fact on the running kernel to
1385 be tested, if desired.
1386
Paul E. McKenney35feb602020-06-30 13:22:54 -07001387config CSD_LOCK_WAIT_DEBUG
1388 bool "Debugging for csd_lock_wait(), called from smp_call_function*()"
1389 depends on DEBUG_KERNEL
1390 depends on 64BIT
1391 default n
1392 help
1393 This option enables debug prints when CPUs are slow to respond
1394 to the smp_call_function*() IPI wrappers. These debug prints
1395 include the IPI handler function currently executing (if any)
1396 and relevant stack traces.
1397
Dave Hansen9eade162013-07-01 13:04:47 -07001398endmenu # lock debugging
1399
1400config TRACE_IRQFLAGS
peterz@infradead.orged004952020-07-27 14:48:52 +02001401 depends on TRACE_IRQFLAGS_SUPPORT
Dave Hansen9eade162013-07-01 13:04:47 -07001402 bool
1403 help
1404 Enables hooks to interrupt enabling and disabling for
1405 either tracing or lock debugging.
1406
peterz@infradead.orged004952020-07-27 14:48:52 +02001407config TRACE_IRQFLAGS_NMI
1408 def_bool y
1409 depends on TRACE_IRQFLAGS
1410 depends on TRACE_IRQFLAGS_NMI_SUPPORT
1411
Ingo Molnar8637c092006-07-03 00:24:38 -07001412config STACKTRACE
Dave Jones0c38e1f2014-08-29 15:18:35 -07001413 bool "Stack backtrace support"
Ingo Molnar8637c092006-07-03 00:24:38 -07001414 depends on STACKTRACE_SUPPORT
Dave Jones0c38e1f2014-08-29 15:18:35 -07001415 help
1416 This option causes the kernel to create a /proc/pid/stack for
1417 every process, showing its current stack trace.
1418 It is also used by various kernel debugging features that require
1419 stack trace generation.
Ingo Molnar8637c092006-07-03 00:24:38 -07001420
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001421config WARN_ALL_UNSEEDED_RANDOM
1422 bool "Warn for all uses of unseeded randomness"
1423 default n
Jason A. Donenfeldd06bfd12017-06-07 23:06:55 -04001424 help
1425 Some parts of the kernel contain bugs relating to their use of
1426 cryptographically secure random numbers before it's actually possible
1427 to generate those numbers securely. This setting ensures that these
1428 flaws don't go unnoticed, by enabling a message, should this ever
1429 occur. This will allow people with obscure setups to know when things
1430 are going wrong, so that they might contact developers about fixing
1431 it.
1432
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001433 Unfortunately, on some models of some architectures getting
1434 a fully seeded CRNG is extremely difficult, and so this can
1435 result in dmesg getting spammed for a surprisingly long
1436 time. This is really bad from a security perspective, and
1437 so architecture maintainers really need to do what they can
1438 to get the CRNG seeded sooner after the system is booted.
Thibaut Sautereau4c5d1142018-09-04 15:46:23 -07001439 However, since users cannot do anything actionable to
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001440 address this, by default the kernel will issue only a single
1441 warning for the first use of unseeded randomness.
1442
1443 Say Y here if you want to receive warnings for all uses of
1444 unseeded randomness. This will be of use primarily for
Thibaut Sautereau4c5d1142018-09-04 15:46:23 -07001445 those developers interested in improving the security of
Theodore Ts'oeecabf52017-06-08 04:16:59 -04001446 Linux kernels running on their architecture (or
1447 subarchitecture).
Jason A. Donenfeldd06bfd12017-06-07 23:06:55 -04001448
Linus Torvalds1da177e2005-04-16 15:20:36 -07001449config DEBUG_KOBJECT
1450 bool "kobject debugging"
1451 depends on DEBUG_KERNEL
1452 help
1453 If you say Y here, some extra kobject debugging messages will be sent
Mike Rapoportaca52c32018-10-30 15:07:44 -07001454 to the syslog.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001455
Russell Kingc817a672013-06-27 15:06:14 +01001456config DEBUG_KOBJECT_RELEASE
1457 bool "kobject release debugging"
Linus Torvalds2a999aa2013-10-29 08:33:36 -07001458 depends on DEBUG_OBJECTS_TIMERS
Russell Kingc817a672013-06-27 15:06:14 +01001459 help
1460 kobjects are reference counted objects. This means that their
1461 last reference count put is not predictable, and the kobject can
1462 live on past the point at which a driver decides to drop it's
1463 initial reference to the kobject gained on allocation. An
1464 example of this would be a struct device which has just been
1465 unregistered.
1466
1467 However, some buggy drivers assume that after such an operation,
1468 the memory backing the kobject can be immediately freed. This
1469 goes completely against the principles of a refcounted object.
1470
1471 If you say Y here, the kernel will delay the release of kobjects
1472 on the last reference count to improve the visibility of this
1473 kind of kobject release bug.
1474
Catalin Marinas9b2a60c2012-10-08 16:28:13 -07001475config HAVE_DEBUG_BUGVERBOSE
1476 bool
1477
Changbin Du3be5cbc2019-12-06 17:03:48 -08001478menu "Debug kernel data structures"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001479
Dave Jones199a9af2006-09-29 01:59:00 -07001480config DEBUG_LIST
1481 bool "Debug linked list manipulation"
Arnd Bergmann4520bcb2016-08-26 17:42:00 +02001482 depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
Dave Jones199a9af2006-09-29 01:59:00 -07001483 help
1484 Enable this to turn on extended checks in the linked-list
1485 walking routines.
1486
1487 If unsure, say N.
1488
Davidlohr Bueso8e18fae2019-05-14 15:42:46 -07001489config DEBUG_PLIST
Dan Streetmanb8cfff62014-06-04 16:11:54 -07001490 bool "Debug priority linked list manipulation"
1491 depends on DEBUG_KERNEL
1492 help
1493 Enable this to turn on extended checks in the priority-ordered
1494 linked-list (plist) walking routines. This checks the entire
1495 list multiple times during each manipulation.
1496
1497 If unsure, say N.
1498
Jens Axboed6ec0842007-10-22 20:01:06 +02001499config DEBUG_SG
1500 bool "Debug SG table operations"
1501 depends on DEBUG_KERNEL
1502 help
1503 Enable this to turn on checks on scatter-gather tables. This can
1504 help find problems with drivers that do not properly initialize
1505 their sg tables.
1506
1507 If unsure, say N.
1508
Arjan van de Ven1b2439d2008-08-15 15:29:38 -07001509config DEBUG_NOTIFIERS
1510 bool "Debug notifier call chains"
1511 depends on DEBUG_KERNEL
1512 help
1513 Enable this to turn on sanity checking for notifier call chains.
1514 This is most useful for kernel developers to make sure that
1515 modules properly unregister themselves from notifier chains.
1516 This is a relatively cheap check but if you care about maximum
1517 performance, say N.
1518
Changbin Du3be5cbc2019-12-06 17:03:48 -08001519config BUG_ON_DATA_CORRUPTION
1520 bool "Trigger a BUG when data corruption is detected"
1521 select DEBUG_LIST
1522 help
1523 Select this option if the kernel should BUG when it encounters
1524 data corruption in kernel memory structures when they get checked
1525 for validity.
1526
1527 If unsure, say N.
1528
1529endmenu
1530
David Howellse0e81732009-09-02 09:13:40 +01001531config DEBUG_CREDENTIALS
1532 bool "Debug credential management"
1533 depends on DEBUG_KERNEL
1534 help
1535 Enable this to turn on some debug checking for credential
1536 management. The additional code keeps track of the number of
1537 pointers from task_structs to any given cred struct, and checks to
1538 see that this number never exceeds the usage count of the cred
1539 struct.
1540
1541 Furthermore, if SELinux is enabled, this also checks that the
1542 security pointer in the cred struct is never seen to be invalid.
1543
1544 If unsure, say N.
1545
Paul E. McKenney43a0a2a2017-05-17 09:19:44 -07001546source "kernel/rcu/Kconfig.debug"
Dave Hansen2f03e3c2013-01-07 08:19:23 -08001547
Tejun Heof303fccb2016-02-09 17:59:38 -05001548config DEBUG_WQ_FORCE_RR_CPU
1549 bool "Force round-robin CPU selection for unbound work items"
1550 depends on DEBUG_KERNEL
1551 default n
1552 help
1553 Workqueue used to implicitly guarantee that work items queued
1554 without explicit CPU specified are put on the local CPU. This
1555 guarantee is no longer true and while local CPU is still
1556 preferred work items may be put on foreign CPUs. Kernel
1557 parameter "workqueue.debug_force_rr_cpu" is added to force
1558 round-robin CPU selection to flush out usages which depend on the
1559 now broken guarantee. This config option enables the debug
1560 feature by default. When enabled, memory and cache locality will
1561 be impacted.
1562
Tejun Heo870d6652008-08-25 19:47:25 +09001563config DEBUG_BLOCK_EXT_DEVT
Krzysztof Kozlowski68d4b3d2019-12-06 17:04:08 -08001564 bool "Force extended block device numbers and spread them"
Tejun Heo870d6652008-08-25 19:47:25 +09001565 depends on DEBUG_KERNEL
1566 depends on BLOCK
Jens Axboe759f8ca2008-08-29 09:06:29 +02001567 default n
Tejun Heo870d6652008-08-25 19:47:25 +09001568 help
Tejun Heo0e11e342008-10-13 10:46:01 +02001569 BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1570 SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1571 YOU ARE DOING. Distros, please enable this and fix whatever
1572 is broken.
1573
Tejun Heo870d6652008-08-25 19:47:25 +09001574 Conventionally, block device numbers are allocated from
1575 predetermined contiguous area. However, extended block area
1576 may introduce non-contiguous block device numbers. This
1577 option forces most block device numbers to be allocated from
1578 the extended space and spreads them to discover kernel or
1579 userland code paths which assume predetermined contiguous
1580 device number allocation.
1581
Tejun Heo55dc7db2008-09-01 13:44:35 +02001582 Note that turning on this debug option shuffles all the
1583 device numbers for all IDE and SCSI devices including libata
1584 ones, so root partition specified using device number
1585 directly (via rdev or root=MAJ:MIN) won't work anymore.
1586 Textual device names (root=/dev/sdXn) will continue to work.
1587
Tejun Heo870d6652008-08-25 19:47:25 +09001588 Say N if you are unsure.
1589
Thomas Gleixner757c9892016-02-26 18:43:32 +00001590config CPU_HOTPLUG_STATE_CONTROL
1591 bool "Enable CPU hotplug state control"
1592 depends on DEBUG_KERNEL
1593 depends on HOTPLUG_CPU
1594 default n
1595 help
1596 Allows to write steps between "offline" and "online" to the CPUs
1597 sysfs target file so states can be stepped granular. This is a debug
1598 option for now as the hotplug machinery cannot be stopped and
1599 restarted at arbitrary points yet.
1600
1601 Say N if your are unsure.
1602
Changbin Du09a74952019-12-06 17:03:51 -08001603config LATENCYTOP
1604 bool "Latency measuring infrastructure"
1605 depends on DEBUG_KERNEL
1606 depends on STACKTRACE_SUPPORT
1607 depends on PROC_FS
1608 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1609 select KALLSYMS
1610 select KALLSYMS_ALL
1611 select STACKTRACE
1612 select SCHEDSTATS
1613 select SCHED_DEBUG
1614 help
1615 Enable this option if you want to use the LatencyTOP tool
1616 to find out which userspace is blocking on what kernel operations.
1617
1618source "kernel/trace/Kconfig"
1619
1620config PROVIDE_OHCI1394_DMA_INIT
1621 bool "Remote debugging over FireWire early on boot"
1622 depends on PCI && X86
1623 help
1624 If you want to debug problems which hang or crash the kernel early
1625 on boot and the crashing machine has a FireWire port, you can use
1626 this feature to remotely access the memory of the crashed machine
1627 over FireWire. This employs remote DMA as part of the OHCI1394
1628 specification which is now the standard for FireWire controllers.
1629
1630 With remote DMA, you can monitor the printk buffer remotely using
1631 firescope and access all memory below 4GB using fireproxy from gdb.
1632 Even controlling a kernel debugger is possible using remote DMA.
1633
1634 Usage:
1635
1636 If ohci1394_dma=early is used as boot parameter, it will initialize
1637 all OHCI1394 controllers which are found in the PCI config space.
1638
1639 As all changes to the FireWire bus such as enabling and disabling
1640 devices cause a bus reset and thereby disable remote DMA for all
1641 devices, be sure to have the cable plugged and FireWire enabled on
1642 the debugging host before booting the debug target for debugging.
1643
1644 This code (~1k) is freed after boot. By then, the firewire stack
1645 in charge of the OHCI-1394 controllers should be used instead.
1646
Mauro Carvalho Chehaba74e2a22020-05-01 17:37:50 +02001647 See Documentation/core-api/debugging-via-ohci1394.rst for more information.
Changbin Du09a74952019-12-06 17:03:51 -08001648
Changbin Du045f6d72019-12-17 20:51:56 -08001649source "samples/Kconfig"
1650
1651config ARCH_HAS_DEVMEM_IS_ALLOWED
1652 bool
1653
1654config STRICT_DEVMEM
1655 bool "Filter access to /dev/mem"
1656 depends on MMU && DEVMEM
1657 depends on ARCH_HAS_DEVMEM_IS_ALLOWED
1658 default y if PPC || X86 || ARM64
1659 help
1660 If this option is disabled, you allow userspace (root) access to all
1661 of memory, including kernel and userspace memory. Accidental
1662 access to this is obviously disastrous, but specific access can
1663 be used by people debugging the kernel. Note that with PAT support
1664 enabled, even in this case there are restrictions on /dev/mem
1665 use due to the cache aliasing requirements.
1666
1667 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
1668 file only allows userspace access to PCI space and the BIOS code and
1669 data regions. This is sufficient for dosemu and X and all common
1670 users of /dev/mem.
1671
1672 If in doubt, say Y.
1673
1674config IO_STRICT_DEVMEM
1675 bool "Filter I/O access to /dev/mem"
1676 depends on STRICT_DEVMEM
1677 help
1678 If this option is disabled, you allow userspace (root) access to all
1679 io-memory regardless of whether a driver is actively using that
1680 range. Accidental access to this is obviously disastrous, but
1681 specific access can be used by people debugging kernel drivers.
1682
1683 If this option is switched on, the /dev/mem file only allows
1684 userspace access to *idle* io-memory ranges (see /proc/iomem) This
1685 may break traditional users of /dev/mem (dosemu, legacy X, etc...)
1686 if the driver using a given range cannot be disabled.
1687
1688 If in doubt, say Y.
1689
1690menu "$(SRCARCH) Debugging"
1691
1692source "arch/$(SRCARCH)/Kconfig.debug"
1693
1694endmenu
1695
1696menu "Kernel Testing and Coverage"
1697
Changbin Du09a74952019-12-06 17:03:51 -08001698source "lib/kunit/Kconfig"
1699
Akinobu Mita8d438282012-07-30 14:43:02 -07001700config NOTIFIER_ERROR_INJECTION
1701 tristate "Notifier error injection"
1702 depends on DEBUG_KERNEL
1703 select DEBUG_FS
1704 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001705 This option provides the ability to inject artificial errors to
Akinobu Mita8d438282012-07-30 14:43:02 -07001706 specified notifier chain callbacks. It is useful to test the error
1707 handling of notifier call chain failures.
1708
1709 Say N if unsure.
1710
Akinobu Mita048b9c32012-07-30 14:43:07 -07001711config PM_NOTIFIER_ERROR_INJECT
1712 tristate "PM notifier error injection module"
1713 depends on PM && NOTIFIER_ERROR_INJECTION
1714 default m if PM_DEBUG
1715 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001716 This option provides the ability to inject artificial errors to
Akinobu Mita048b9c32012-07-30 14:43:07 -07001717 PM notifier chain callbacks. It is controlled through debugfs
1718 interface /sys/kernel/debug/notifier-error-inject/pm
1719
1720 If the notifier call chain should be failed with some events
1721 notified, write the error code to "actions/<notifier event>/error".
1722
1723 Example: Inject PM suspend error (-12 = -ENOMEM)
1724
1725 # cd /sys/kernel/debug/notifier-error-inject/pm/
1726 # echo -12 > actions/PM_SUSPEND_PREPARE/error
1727 # echo mem > /sys/power/state
1728 bash: echo: write error: Cannot allocate memory
1729
1730 To compile this code as a module, choose M here: the module will
1731 be called pm-notifier-error-inject.
1732
1733 If unsure, say N.
1734
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001735config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1736 tristate "OF reconfig notifier error injection module"
1737 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001738 help
Masanari Iidae41e85c2012-11-30 16:44:39 +09001739 This option provides the ability to inject artificial errors to
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001740 OF reconfig notifier chain callbacks. It is controlled
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001741 through debugfs interface under
Benjamin Herrenschmidtd526e852012-12-14 10:32:52 +11001742 /sys/kernel/debug/notifier-error-inject/OF-reconfig/
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001743
1744 If the notifier call chain should be failed with some events
1745 notified, write the error code to "actions/<notifier event>/error".
1746
1747 To compile this code as a module, choose M here: the module will
Akinobu Mitae12a95f2013-04-30 15:28:49 -07001748 be called of-reconfig-notifier-error-inject.
Akinobu Mita08dfb4d2012-07-30 14:43:13 -07001749
1750 If unsure, say N.
1751
Nikolay Aleksandrov02fff962015-11-28 13:45:28 +01001752config NETDEV_NOTIFIER_ERROR_INJECT
1753 tristate "Netdev notifier error injection module"
1754 depends on NET && NOTIFIER_ERROR_INJECTION
1755 help
1756 This option provides the ability to inject artificial errors to
1757 netdevice notifier chain callbacks. It is controlled through debugfs
1758 interface /sys/kernel/debug/notifier-error-inject/netdev
1759
1760 If the notifier call chain should be failed with some events
1761 notified, write the error code to "actions/<notifier event>/error".
1762
1763 Example: Inject netdevice mtu change error (-22 = -EINVAL)
1764
1765 # cd /sys/kernel/debug/notifier-error-inject/netdev
1766 # echo -22 > actions/NETDEV_CHANGEMTU/error
1767 # ip link set eth0 mtu 1024
1768 RTNETLINK answers: Invalid argument
1769
1770 To compile this code as a module, choose M here: the module will
1771 be called netdev-notifier-error-inject.
1772
1773 If unsure, say N.
1774
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001775config FUNCTION_ERROR_INJECTION
1776 def_bool y
1777 depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1778
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001779config FAULT_INJECTION
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001780 bool "Fault-injection framework"
1781 depends on DEBUG_KERNEL
Akinobu Mita329409a2006-12-08 02:39:48 -08001782 help
1783 Provide fault-injection framework.
1784 For more details, see Documentation/fault-injection/.
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001785
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001786config FAILSLAB
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001787 bool "Fault-injection capability for kmalloc"
1788 depends on FAULT_INJECTION
Akinobu Mita773ff602008-12-23 19:37:01 +09001789 depends on SLAB || SLUB
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001790 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001791 Provide fault-injection capability for kmalloc.
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001792
Akinobu Mita933e3122006-12-08 02:39:45 -08001793config FAIL_PAGE_ALLOC
Qiujun Huang29b46fa2020-04-06 20:12:49 -07001794 bool "Fault-injection capability for alloc_pages()"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001795 depends on FAULT_INJECTION
Akinobu Mita933e3122006-12-08 02:39:45 -08001796 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001797 Provide fault-injection capability for alloc_pages().
Akinobu Mita933e3122006-12-08 02:39:45 -08001798
Albert van der Linde2c739ce2020-10-15 20:13:46 -07001799config FAULT_INJECTION_USERCOPY
1800 bool "Fault injection capability for usercopy functions"
1801 depends on FAULT_INJECTION
1802 help
1803 Provides fault-injection capability to inject failures
1804 in usercopy functions (copy_from_user(), get_user(), ...).
1805
Akinobu Mitac17bb492006-12-08 02:39:46 -08001806config FAIL_MAKE_REQUEST
Dave Jones86327d12006-12-12 20:16:36 +01001807 bool "Fault-injection capability for disk IO"
Jens Axboe581d4e22008-09-14 05:56:33 -07001808 depends on FAULT_INJECTION && BLOCK
Akinobu Mitac17bb492006-12-08 02:39:46 -08001809 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001810 Provide fault-injection capability for disk IO.
Akinobu Mitac17bb492006-12-08 02:39:46 -08001811
Jens Axboe581d4e22008-09-14 05:56:33 -07001812config FAIL_IO_TIMEOUT
Takuya Yoshikawaf4d01432010-07-21 16:05:53 +09001813 bool "Fault-injection capability for faking disk interrupts"
Jens Axboe581d4e22008-09-14 05:56:33 -07001814 depends on FAULT_INJECTION && BLOCK
1815 help
1816 Provide fault-injection capability on end IO handling. This
1817 will make the block layer "forget" an interrupt as configured,
1818 thus exercising the error handling.
1819
1820 Only works with drivers that use the generic timeout handling,
1821 for others it wont do anything.
1822
Davidlohr Buesoab51fba2015-06-29 23:26:02 -07001823config FAIL_FUTEX
1824 bool "Fault-injection capability for futexes"
1825 select DEBUG_FS
1826 depends on FAULT_INJECTION && FUTEX
1827 help
1828 Provide fault-injection capability for futexes.
1829
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001830config FAULT_INJECTION_DEBUG_FS
1831 bool "Debugfs entries for fault-injection capabilities"
1832 depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1833 help
1834 Enable configuration of fault-injection capabilities via debugfs.
1835
Masami Hiramatsu4b1a29a2018-01-13 02:56:03 +09001836config FAIL_FUNCTION
1837 bool "Fault-injection capability for functions"
1838 depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1839 help
1840 Provide function-based fault-injection capability.
1841 This will allow you to override a specific function with a return
1842 with given return value. As a result, function caller will see
1843 an error value and have to handle it. This is useful to test the
1844 error handling in various subsystems.
1845
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001846config FAIL_MMC_REQUEST
1847 bool "Fault-injection capability for MMC IO"
1848 depends on FAULT_INJECTION_DEBUG_FS && MMC
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001849 help
Mikulas Patockaf1b4bd02018-06-14 15:27:48 -07001850 Provide fault-injection capability for MMC IO.
1851 This will make the mmc core return data errors. This is
1852 useful to test the error handling in the mmc block device
1853 and to test how the mmc host driver handles retries from
1854 the block device.
Akinobu Mita1df49002007-02-20 13:57:56 -08001855
1856config FAULT_INJECTION_STACKTRACE_FILTER
1857 bool "stacktrace filter for fault-injection capabilities"
1858 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
Akinobu Mita6d690dc2007-05-12 10:36:53 -07001859 depends on !X86_64
Akinobu Mita1df49002007-02-20 13:57:56 -08001860 select STACKTRACE
Stefan Agnerf9b58e82018-09-30 23:02:33 +01001861 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
Akinobu Mita1df49002007-02-20 13:57:56 -08001862 help
1863 Provide stacktrace filter for fault-injection capabilities
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07001864
Changbin Du09a74952019-12-06 17:03:51 -08001865config ARCH_HAS_KCOV
1866 bool
Arjan van de Ven97455122008-01-25 21:08:34 +01001867 help
Changbin Du09a74952019-12-06 17:03:51 -08001868 An architecture should select this when it can successfully
1869 build and run with CONFIG_KCOV. This typically requires
1870 disabling instrumentation for some early boot code.
Arjan van de Ven97455122008-01-25 21:08:34 +01001871
Changbin Du09a74952019-12-06 17:03:51 -08001872config CC_HAS_SANCOV_TRACE_PC
1873 def_bool $(cc-option,-fsanitize-coverage=trace-pc)
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001874
Changbin Du09a74952019-12-06 17:03:51 -08001875
1876config KCOV
1877 bool "Code coverage for fuzzing"
1878 depends on ARCH_HAS_KCOV
1879 depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
1880 select DEBUG_FS
1881 select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
Randy Dunlap85ce50d32020-11-10 09:57:46 -08001882 select SKB_EXTENSIONS if NET
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001883 help
Changbin Du09a74952019-12-06 17:03:51 -08001884 KCOV exposes kernel code coverage information in a form suitable
1885 for coverage-guided fuzzing (randomized testing).
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001886
Changbin Du09a74952019-12-06 17:03:51 -08001887 If RANDOMIZE_BASE is enabled, PC values will not be stable across
1888 different machines and across reboots. If you need stable PC values,
1889 disable RANDOMIZE_BASE.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001890
Changbin Du09a74952019-12-06 17:03:51 -08001891 For more details, see Documentation/dev-tools/kcov.rst.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001892
Changbin Du09a74952019-12-06 17:03:51 -08001893config KCOV_ENABLE_COMPARISONS
1894 bool "Enable comparison operands collection by KCOV"
1895 depends on KCOV
1896 depends on $(cc-option,-fsanitize-coverage=trace-cmp)
1897 help
1898 KCOV also exposes operands of every comparison in the instrumented
1899 code along with operand sizes and PCs of the comparison instructions.
1900 These operands can be used by fuzzing engines to improve the quality
1901 of fuzzing coverage.
Randy Dunlapcc3fa842017-10-13 15:57:33 -07001902
Changbin Du09a74952019-12-06 17:03:51 -08001903config KCOV_INSTRUMENT_ALL
1904 bool "Instrument all code by default"
1905 depends on KCOV
1906 default y
1907 help
1908 If you are doing generic system call fuzzing (like e.g. syzkaller),
1909 then you will want to instrument the whole kernel and you should
1910 say y here. If you are doing more targeted fuzzing (like e.g.
1911 filesystem fuzzing with AFL) then you will want to enable coverage
1912 for more specific subsets of files, and should say n here.
Brendan Higgins84bc8092019-09-23 02:02:36 -07001913
Andrey Konovalov5ff3b302020-06-04 16:46:04 -07001914config KCOV_IRQ_AREA_SIZE
1915 hex "Size of interrupt coverage collection area in words"
1916 depends on KCOV
1917 default 0x40000
1918 help
1919 KCOV uses preallocated per-cpu areas to collect coverage from
1920 soft interrupts. This specifies the size of those areas in the
1921 number of unsigned long words.
1922
Vincent Legolld3deafa2018-02-06 15:38:38 -08001923menuconfig RUNTIME_TESTING_MENU
1924 bool "Runtime Testing"
Anders Roxell908009e82018-02-21 14:46:05 -08001925 def_bool y
Vincent Legolld3deafa2018-02-06 15:38:38 -08001926
1927if RUNTIME_TESTING_MENU
Dave Hansen881c5142013-07-01 13:04:44 -07001928
1929config LKDTM
1930 tristate "Linux Kernel Dump Test Tool Module"
1931 depends on DEBUG_FS
Dave Hansen881c5142013-07-01 13:04:44 -07001932 help
1933 This module enables testing of the different dumping mechanisms by
1934 inducing system failures at predefined crash points.
1935 If you don't need it: say N
1936 Choose M here to compile this code as a module. The module will be
1937 called lkdtm.
1938
1939 Documentation on how to use the module can be found in
Mauro Carvalho Chehab10ffebb2019-06-12 14:52:44 -03001940 Documentation/fault-injection/provoke-crashes.rst
Dave Hansen881c5142013-07-01 13:04:44 -07001941
1942config TEST_LIST_SORT
Geert Uytterhoevene327fd72017-05-08 15:55:26 -07001943 tristate "Linked list sorting test"
1944 depends on DEBUG_KERNEL || m
Dave Hansen881c5142013-07-01 13:04:44 -07001945 help
1946 Enable this to turn on 'list_sort()' function test. This test is
Geert Uytterhoevene327fd72017-05-08 15:55:26 -07001947 executed only once during system boot (so affects only boot time),
1948 or at module load time.
Dave Hansen881c5142013-07-01 13:04:44 -07001949
1950 If unsure, say N.
1951
Ian Rogers6e246282020-02-13 23:51:29 -08001952config TEST_MIN_HEAP
1953 tristate "Min heap test"
1954 depends on DEBUG_KERNEL || m
1955 help
1956 Enable this to turn on min heap function tests. This test is
1957 executed only once during system boot (so affects only boot time),
1958 or at module load time.
1959
1960 If unsure, say N.
1961
Kostenzer Felixc5adae92017-02-24 15:01:07 -08001962config TEST_SORT
Geert Uytterhoeven5c4e6792017-05-08 15:55:23 -07001963 tristate "Array-based sort test"
1964 depends on DEBUG_KERNEL || m
Kostenzer Felixc5adae92017-02-24 15:01:07 -08001965 help
Geert Uytterhoeven5c4e6792017-05-08 15:55:23 -07001966 This option enables the self-test function of 'sort()' at boot,
1967 or at module load time.
Kostenzer Felixc5adae92017-02-24 15:01:07 -08001968
1969 If unsure, say N.
1970
Dave Hansen881c5142013-07-01 13:04:44 -07001971config KPROBES_SANITY_TEST
1972 bool "Kprobes sanity tests"
1973 depends on DEBUG_KERNEL
1974 depends on KPROBES
Dave Hansen881c5142013-07-01 13:04:44 -07001975 help
1976 This option provides for testing basic kprobes functionality on
Masami Hiramatsu5a6cf772018-06-20 01:05:07 +09001977 boot. Samples of kprobe and kretprobe are inserted and
Dave Hansen881c5142013-07-01 13:04:44 -07001978 verified for functionality.
1979
1980 Say N if you are unsure.
1981
1982config BACKTRACE_SELF_TEST
1983 tristate "Self test for the backtrace code"
1984 depends on DEBUG_KERNEL
Dave Hansen881c5142013-07-01 13:04:44 -07001985 help
1986 This option provides a kernel module that can be used to test
1987 the kernel stack backtrace code. This option is not useful
1988 for distributions or general kernels, but only for kernel
1989 developers working on architecture code.
1990
1991 Note that if you want to also test saved backtraces, you will
1992 have to enable STACKTRACE as well.
1993
1994 Say N if you are unsure.
1995
Michel Lespinasse910a7422012-10-08 16:30:39 -07001996config RBTREE_TEST
1997 tristate "Red-Black tree test"
Cody P Schafer7c993e12013-09-11 14:25:19 -07001998 depends on DEBUG_KERNEL
Michel Lespinasse910a7422012-10-08 16:30:39 -07001999 help
2000 A benchmark measuring the performance of the rbtree library.
2001 Also includes rbtree invariant checks.
2002
Ferdinand Blomqvist4b4f3ac2019-06-20 17:10:33 +03002003config REED_SOLOMON_TEST
2004 tristate "Reed-Solomon library test"
2005 depends on DEBUG_KERNEL || m
2006 select REED_SOLOMON
2007 select REED_SOLOMON_ENC16
2008 select REED_SOLOMON_DEC16
2009 help
2010 This option enables the self-test function of rslib at boot,
2011 or at module load time.
2012
2013 If unsure, say N.
2014
Michel Lespinassefff3fd82012-10-08 16:31:23 -07002015config INTERVAL_TREE_TEST
2016 tristate "Interval tree test"
Davidlohr Bueso0f789b62017-07-10 15:51:43 -07002017 depends on DEBUG_KERNEL
Chris Wilsona88cc102014-03-17 12:21:54 +00002018 select INTERVAL_TREE
Michel Lespinassefff3fd82012-10-08 16:31:23 -07002019 help
2020 A benchmark measuring the performance of the interval tree library
2021
Greg Thelen623fd802013-11-12 15:08:34 -08002022config PERCPU_TEST
2023 tristate "Per cpu operations test"
2024 depends on m && DEBUG_KERNEL
2025 help
2026 Enable this option to build test module which validates per-cpu
2027 operations.
2028
2029 If unsure, say N.
2030
Dave Hansen881c5142013-07-01 13:04:44 -07002031config ATOMIC64_SELFTEST
Geert Uytterhoeven55ded952017-02-24 15:00:55 -08002032 tristate "Perform an atomic64_t self-test"
Dave Hansen881c5142013-07-01 13:04:44 -07002033 help
Geert Uytterhoeven55ded952017-02-24 15:00:55 -08002034 Enable this option to test the atomic64_t functions at boot or
2035 at module load time.
Dave Hansen881c5142013-07-01 13:04:44 -07002036
2037 If unsure, say N.
2038
2039config ASYNC_RAID6_TEST
2040 tristate "Self test for hardware accelerated raid6 recovery"
2041 depends on ASYNC_RAID6_RECOV
2042 select ASYNC_MEMCPY
Masahiro Yamadaa7f7f622020-06-14 01:50:22 +09002043 help
Dave Hansen881c5142013-07-01 13:04:44 -07002044 This is a one-shot self test that permutes through the
2045 recovery of all the possible two disk failure scenarios for a
2046 N-disk array. Recovery is performed with the asynchronous
2047 raid6 recovery routines, and will optionally use an offload
2048 engine if one is available.
2049
2050 If unsure, say N.
2051
Andy Shevchenko64d1d772015-02-12 15:02:21 -08002052config TEST_HEXDUMP
2053 tristate "Test functions located in the hexdump module at runtime"
2054
Dave Hansen881c5142013-07-01 13:04:44 -07002055config TEST_STRING_HELPERS
2056 tristate "Test functions located in the string_helpers module at runtime"
2057
Tobin C. Harding0b0600c82019-04-05 12:58:59 +11002058config TEST_STRSCPY
2059 tristate "Test strscpy*() family of functions at runtime"
2060
Dave Hansen881c5142013-07-01 13:04:44 -07002061config TEST_KSTRTOX
2062 tristate "Test kstrto*() family of functions at runtime"
2063
Rasmus Villemoes707cc722015-11-06 16:30:29 -08002064config TEST_PRINTF
2065 tristate "Test printf() family of functions at runtime"
2066
David Decotigny5fd003f2016-02-19 09:24:00 -05002067config TEST_BITMAP
2068 tristate "Test bitmap_*() family of functions at runtime"
David Decotigny5fd003f2016-02-19 09:24:00 -05002069 help
2070 Enable this option to test the bitmap functions at boot.
2071
2072 If unsure, say N.
2073
Andy Shevchenkocfaff0e2016-05-30 17:40:41 +03002074config TEST_UUID
2075 tristate "Test functions located in the uuid module at runtime"
2076
Matthew Wilcoxad3d6c72017-11-07 14:57:46 -05002077config TEST_XARRAY
2078 tristate "Test the XArray code at runtime"
2079
Rasmus Villemoes455a35a2018-05-08 00:36:28 +02002080config TEST_OVERFLOW
2081 tristate "Test check_*_overflow() functions at runtime"
2082
Thomas Graf7e1e7762014-08-02 11:47:44 +02002083config TEST_RHASHTABLE
Geert Uytterhoeven9d6dbe12015-01-29 15:40:25 +01002084 tristate "Perform selftest on resizable hash table"
Thomas Graf7e1e7762014-08-02 11:47:44 +02002085 help
2086 Enable this option to test the rhashtable functions at boot.
2087
2088 If unsure, say N.
2089
George Spelvin468a9422016-05-26 22:11:51 -04002090config TEST_HASH
2091 tristate "Perform selftest on hash functions"
George Spelvin468a9422016-05-26 22:11:51 -04002092 help
Jason A. Donenfeld2c956a62017-01-08 13:54:00 +01002093 Enable this option to test the kernel's integer (<linux/hash.h>),
2094 string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
2095 hash functions on boot (or module load).
George Spelvin468a9422016-05-26 22:11:51 -04002096
2097 This is intended to help people writing architecture-specific
2098 optimized versions. If unsure, say N.
2099
Matthew Wilcox8ab8ba32018-06-18 16:59:29 -04002100config TEST_IDA
2101 tristate "Perform selftest on IDA functions"
2102
Jiri Pirko44091d22017-02-03 10:29:06 +01002103config TEST_PARMAN
2104 tristate "Perform selftest on priority array manager"
Jiri Pirko44091d22017-02-03 10:29:06 +01002105 depends on PARMAN
2106 help
2107 Enable this option to test priority array manager on boot
2108 (or module load).
2109
2110 If unsure, say N.
2111
Daniel Lezcano6aed82d2019-05-27 22:55:19 +02002112config TEST_IRQ_TIMINGS
2113 bool "IRQ timings selftest"
2114 depends on IRQ_TIMINGS
2115 help
2116 Enable this option to test the irq timings code on boot.
2117
2118 If unsure, say N.
2119
Valentin Rothberg8a6f0b42014-10-13 15:51:38 -07002120config TEST_LKM
Kees Cook93e9ef82014-01-23 15:54:37 -08002121 tristate "Test module loading with 'hello world' module"
Kees Cook93e9ef82014-01-23 15:54:37 -08002122 depends on m
2123 help
2124 This builds the "test_module" module that emits "Hello, world"
2125 on printk when loaded. It is designed to be used for basic
2126 evaluation of the module loading subsystem (for example when
2127 validating module verification). It lacks any extra dependencies,
2128 and will not normally be loaded by the system unless explicitly
2129 requested by name.
2130
2131 If unsure, say N.
2132
Jesse Brandeburgc348c162020-06-04 16:50:27 -07002133config TEST_BITOPS
Wei Yang6af132f2020-06-10 18:41:53 -07002134 tristate "Test module for compilation of bitops operations"
Jesse Brandeburgc348c162020-06-04 16:50:27 -07002135 depends on m
2136 help
2137 This builds the "test_bitops" module that is much like the
2138 TEST_LKM module except that it does a basic exercise of the
Wei Yang6af132f2020-06-10 18:41:53 -07002139 set/clear_bit macros and get_count_order/long to make sure there are
2140 no compiler warnings from C=1 sparse checker or -Wextra
2141 compilations. It has no dependencies and doesn't run or load unless
2142 explicitly requested by name. for example: modprobe test_bitops.
Jesse Brandeburgc348c162020-06-04 16:50:27 -07002143
2144 If unsure, say N.
2145
Uladzislau Rezki (Sony)3f21a6b2019-03-05 15:43:34 -08002146config TEST_VMALLOC
2147 tristate "Test module for stress/performance analysis of vmalloc allocator"
2148 default n
2149 depends on MMU
2150 depends on m
2151 help
2152 This builds the "test_vmalloc" module that should be used for
2153 stress and performance analysis. So, any new change for vmalloc
2154 subsystem can be evaluated from performance and stability point
2155 of view.
2156
2157 If unsure, say N.
2158
Kees Cook3e2a4c12014-01-23 15:54:38 -08002159config TEST_USER_COPY
2160 tristate "Test user/kernel boundary protections"
Kees Cook3e2a4c12014-01-23 15:54:38 -08002161 depends on m
2162 help
2163 This builds the "test_user_copy" module that runs sanity checks
2164 on the copy_to/from_user infrastructure, making sure basic
2165 user/kernel boundary testing is working. If it fails to load,
2166 a regression has been detected in the user/kernel memory boundary
2167 protections.
2168
2169 If unsure, say N.
2170
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002171config TEST_BPF
2172 tristate "Test BPF filter functionality"
Randy Dunlap98920ba2014-05-13 09:58:44 -07002173 depends on m && NET
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002174 help
2175 This builds the "test_bpf" module that runs various test vectors
2176 against the BPF interpreter or BPF JIT compiler depending on the
2177 current setting. This is in particular useful for BPF JIT compiler
2178 development, but also to run regression tests against changes in
Alexei Starovoitov3c731eb2014-09-26 00:17:07 -07002179 the interpreter code. It also enables test stubs for eBPF maps and
2180 verifier used by user space verifier testsuite.
Alexei Starovoitov64a89462014-05-08 14:10:52 -07002181
2182 If unsure, say N.
2183
Mahesh Bandewar509e56b2019-07-01 14:39:01 -07002184config TEST_BLACKHOLE_DEV
2185 tristate "Test blackhole netdev functionality"
2186 depends on m && NET
2187 help
2188 This builds the "test_blackhole_dev" module that validates the
2189 data path through this blackhole netdev.
2190
2191 If unsure, say N.
2192
Yury Norovdceeb3e2018-02-06 15:38:27 -08002193config FIND_BIT_BENCHMARK
Yury Norov4441fca2017-11-17 15:28:31 -08002194 tristate "Test find_bit functions"
Yury Norov4441fca2017-11-17 15:28:31 -08002195 help
2196 This builds the "test_find_bit" module that measure find_*_bit()
2197 functions performance.
2198
2199 If unsure, say N.
2200
Kees Cook0a8adf52014-07-14 14:38:12 -07002201config TEST_FIRMWARE
2202 tristate "Test firmware loading via userspace interface"
Kees Cook0a8adf52014-07-14 14:38:12 -07002203 depends on FW_LOADER
2204 help
2205 This builds the "test_firmware" module that creates a userspace
2206 interface for testing firmware loading. This can be used to
2207 control the triggering of firmware loading without needing an
2208 actual firmware-using device. The contents can be rechecked by
2209 userspace.
2210
2211 If unsure, say N.
2212
Luis R. Rodriguez9308f2f2017-07-12 14:33:43 -07002213config TEST_SYSCTL
2214 tristate "sysctl test driver"
Luis R. Rodriguez9308f2f2017-07-12 14:33:43 -07002215 depends on PROC_SYSCTL
2216 help
2217 This builds the "test_sysctl" module. This driver enables to test the
2218 proc sysctl interfaces available to drivers safely without affecting
2219 production knobs which might alter system functionality.
2220
2221 If unsure, say N.
2222
Vitor Massaru Ihad2585f52020-07-29 14:58:49 -03002223config BITFIELD_KUNIT
2224 tristate "KUnit test bitfield functions at runtime"
2225 depends on KUNIT
2226 help
2227 Enable this option to test the bitfield functions at boot.
2228
2229 KUnit tests run during boot and output the results to the debug log
2230 in TAP format (http://testanything.org/). Only useful for kernel devs
2231 running the KUnit test harness, and not intended for inclusion into a
2232 production build.
2233
2234 For more information on KUnit and unit tests in general please refer
2235 to the KUnit documentation in Documentation/dev-tools/kunit/.
2236
2237 If unsure, say N.
2238
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002239config SYSCTL_KUNIT_TEST
Anders Roxell5f215aab2020-05-11 15:14:29 +02002240 tristate "KUnit test for sysctl" if !KUNIT_ALL_TESTS
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002241 depends on KUNIT
Anders Roxell5f215aab2020-05-11 15:14:29 +02002242 default KUNIT_ALL_TESTS
Iurii Zaikin2cb80db2019-09-23 02:02:47 -07002243 help
2244 This builds the proc sysctl unit test, which runs on boot.
2245 Tests the API contract and implementation correctness of sysctl.
2246 For more information on KUnit and unit tests in general please refer
2247 to the KUnit documentation in Documentation/dev-tools/kunit/.
2248
2249 If unsure, say N.
2250
David Gowea2dd7c2019-10-24 15:46:31 -07002251config LIST_KUNIT_TEST
Anders Roxell5f215aab2020-05-11 15:14:29 +02002252 tristate "KUnit Test for Kernel Linked-list structures" if !KUNIT_ALL_TESTS
David Gowea2dd7c2019-10-24 15:46:31 -07002253 depends on KUNIT
Anders Roxell5f215aab2020-05-11 15:14:29 +02002254 default KUNIT_ALL_TESTS
David Gowea2dd7c2019-10-24 15:46:31 -07002255 help
2256 This builds the linked list KUnit test suite.
2257 It tests that the API and basic functionality of the list_head type
2258 and associated macros.
2259
2260 KUnit tests run during boot and output the results to the debug log
Alexander A. Klimovd89775f2020-08-11 18:34:50 -07002261 in TAP format (https://testanything.org/). Only useful for kernel devs
David Gowea2dd7c2019-10-24 15:46:31 -07002262 running the KUnit test harness, and not intended for inclusion into a
2263 production build.
2264
2265 For more information on KUnit and unit tests in general please refer
2266 to the KUnit documentation in Documentation/dev-tools/kunit/.
2267
2268 If unsure, say N.
2269
Matti Vaittinen33d599f2020-05-08 18:40:43 +03002270config LINEAR_RANGES_TEST
2271 tristate "KUnit test for linear_ranges"
2272 depends on KUNIT
2273 select LINEAR_RANGES
2274 help
2275 This builds the linear_ranges unit test, which runs on boot.
2276 Tests the linear_ranges logic correctness.
2277 For more information on KUnit and unit tests in general please refer
2278 to the KUnit documentation in Documentation/dev-tools/kunit/.
2279
2280 If unsure, say N.
2281
Rikard Falkeborn6d511022020-08-11 18:35:03 -07002282config BITS_TEST
2283 tristate "KUnit test for bits.h"
2284 depends on KUNIT
2285 help
2286 This builds the bits unit test.
2287 Tests the logic of macros defined in bits.h.
2288 For more information on KUnit and unit tests in general please refer
2289 to the KUnit documentation in Documentation/dev-tools/kunit/.
2290
2291 If unsure, say N.
2292
David Rileye704f932014-06-16 14:58:32 -07002293config TEST_UDELAY
2294 tristate "udelay test driver"
David Rileye704f932014-06-16 14:58:32 -07002295 help
2296 This builds the "udelay_test" module that helps to make sure
2297 that udelay() is working properly.
2298
2299 If unsure, say N.
2300
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002301config TEST_STATIC_KEYS
2302 tristate "Test static keys"
Jason Baron579e1ac2015-07-30 03:59:44 +00002303 depends on m
2304 help
Ingo Molnar2bf9e0a2015-08-03 11:42:57 +02002305 Test the static key interfaces.
Jason Baron579e1ac2015-07-30 03:59:44 +00002306
2307 If unsure, say N.
2308
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002309config TEST_KMOD
2310 tristate "kmod stress tester"
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002311 depends on m
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002312 depends on NETDEVICES && NET_CORE && INET # for TUN
YueHaibingae3d6a32019-04-25 22:23:44 -07002313 depends on BLOCK
Luis R. Rodriguezd9c6a722017-07-14 14:50:08 -07002314 select TEST_LKM
2315 select XFS_FS
2316 select TUN
2317 select BTRFS_FS
2318 help
2319 Test the kernel's module loading mechanism: kmod. kmod implements
2320 support to load modules using the Linux kernel's usermode helper.
2321 This test provides a series of tests against kmod.
2322
2323 Although technically you can either build test_kmod as a module or
2324 into the kernel we disallow building it into the kernel since
2325 it stress tests request_module() and this will very likely cause
2326 some issues by taking over precious threads available from other
2327 module load requests, ultimately this could be fatal.
2328
2329 To run tests run:
2330
2331 tools/testing/selftests/kmod/kmod.sh --help
2332
2333 If unsure, say N.
2334
Florian Fainellie4dace32017-09-08 16:15:31 -07002335config TEST_DEBUG_VIRTUAL
2336 tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2337 depends on DEBUG_VIRTUAL
2338 help
2339 Test the kernel's ability to detect incorrect calls to
2340 virt_to_phys() done against the non-linear part of the
2341 kernel's virtual address map.
2342
2343 If unsure, say N.
2344
Alexander Shishkince76d932018-10-05 15:43:05 +03002345config TEST_MEMCAT_P
2346 tristate "Test memcat_p() helper function"
2347 help
2348 Test the memcat_p() helper for correctly merging two
2349 pointer arrays together.
2350
2351 If unsure, say N.
2352
Joe Lawrencea2818ee2019-01-09 13:43:29 +01002353config TEST_LIVEPATCH
2354 tristate "Test livepatching"
2355 default n
Joe Lawrencebae05432019-01-31 11:41:24 -05002356 depends on DYNAMIC_DEBUG
Joe Lawrencea2818ee2019-01-09 13:43:29 +01002357 depends on LIVEPATCH
2358 depends on m
2359 help
2360 Test kernel livepatching features for correctness. The tests will
2361 load test modules that will be livepatched in various scenarios.
2362
2363 To run all the livepatching tests:
2364
2365 make -C tools/testing/selftests TARGETS=livepatch run_tests
2366
2367 Alternatively, individual tests may be invoked:
2368
2369 tools/testing/selftests/livepatch/test-callbacks.sh
2370 tools/testing/selftests/livepatch/test-livepatch.sh
2371 tools/testing/selftests/livepatch/test-shadow-vars.sh
2372
2373 If unsure, say N.
2374
Jiri Pirko0a020d42018-11-14 08:22:28 +00002375config TEST_OBJAGG
2376 tristate "Perform selftest on object aggreration manager"
2377 default n
2378 depends on OBJAGG
2379 help
2380 Enable this option to test object aggregation manager on boot
2381 (or module load).
2382
Jiri Pirko0a020d42018-11-14 08:22:28 +00002383
Kees Cook50ceaa95e2019-01-23 12:24:32 -07002384config TEST_STACKINIT
2385 tristate "Test level of stack variable initialization"
2386 help
2387 Test if the kernel is zero-initializing stack variables and
2388 padding. Coverage is controlled by compiler flags,
2389 CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2390 or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2391
2392 If unsure, say N.
2393
Alexander Potapenko5015a302019-07-16 16:27:27 -07002394config TEST_MEMINIT
2395 tristate "Test heap/page initialization"
2396 help
2397 Test if the kernel is zero-initializing heap and page allocations.
2398 This can be useful to test init_on_alloc and init_on_free features.
2399
2400 If unsure, say N.
2401
Ralph Campbellb2ef9f52020-04-22 12:50:26 -07002402config TEST_HMM
2403 tristate "Test HMM (Heterogeneous Memory Management)"
2404 depends on TRANSPARENT_HUGEPAGE
2405 depends on DEVICE_PRIVATE
2406 select HMM_MIRROR
2407 select MMU_NOTIFIER
2408 help
2409 This is a pseudo device driver solely for testing HMM.
2410 Say M here if you want to build the HMM test module.
2411 Doing so will allow you to run tools/testing/selftest/vm/hmm-tests.
2412
2413 If unsure, say N.
2414
Matthew Wilcox (Oracle)e320d302020-10-13 16:56:04 -07002415config TEST_FREE_PAGES
2416 tristate "Test freeing pages"
2417 help
2418 Test that a memory leak does not occur due to a race between
2419 freeing a block of pages and a speculative page reference.
2420 Loading this module is safe if your kernel has the bug fixed.
2421 If the bug is not fixed, it will leak gigabytes of memory and
2422 probably OOM your system.
2423
Petteri Aimonen4185b3b2020-06-18 16:37:37 +02002424config TEST_FPU
2425 tristate "Test floating point operations in kernel space"
2426 depends on X86 && !KCOV_INSTRUMENT_ALL
2427 help
2428 Enable this option to add /sys/kernel/debug/selftest_helpers/test_fpu
2429 which will trigger a sequence of floating point operations. This is used
2430 for self-testing floating point control register setting in
2431 kernel_fpu_begin().
2432
2433 If unsure, say N.
2434
Vincent Legolld3deafa2018-02-06 15:38:38 -08002435endif # RUNTIME_TESTING_MENU
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002436
2437config MEMTEST
2438 bool "Memtest"
Masahiro Yamadaa7f7f622020-06-14 01:50:22 +09002439 help
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002440 This option adds a kernel parameter 'memtest', which allows memtest
2441 to be set.
2442 memtest=0, mean disabled; -- default
2443 memtest=1, mean do 1 test pattern;
2444 ...
2445 memtest=17, mean do 17 test patterns.
2446 If you are unsure how to answer this question, answer N.
2447
Randy Dunlapcc3fa842017-10-13 15:57:33 -07002448
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002449
Branden Bonabyaf9ca6f2019-10-03 17:01:49 -04002450config HYPERV_TESTING
2451 bool "Microsoft Hyper-V driver testing"
2452 default n
2453 depends on HYPERV && DEBUG_FS
2454 help
2455 Select this option to enable Hyper-V vmbus testing.
2456
Changbin Du045f6d72019-12-17 20:51:56 -08002457endmenu # "Kernel Testing and Coverage"
2458
Mauro Carvalho Chehab75442fb2020-10-30 08:40:45 +01002459source "Documentation/Kconfig"
2460
Christoph Hellwig06ec64b2018-07-31 13:39:31 +02002461endmenu # Kernel hacking