xref: /linux/lib/Kconfig.debug (revision 4232da23d75d173195c6766729e51947b64f83cd)
1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "Kernel hacking"
3 
4 menu "printk and dmesg options"
5 
6 config PRINTK_TIME
7 	bool "Show timing information on printks"
8 	depends on PRINTK
9 	help
10 	  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
19 	  parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst
20 
21 config 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 
38 config STACKTRACE_BUILD_ID
39 	bool "Show build ID information in stacktraces"
40 	depends on PRINTK
41 	help
42 	  Selecting this option adds build ID information for symbols in
43 	  stacktraces printed with the printk format '%p[SR]b'.
44 
45 	  This option is intended for distros where debuginfo is not easily
46 	  accessible but can be downloaded given the build ID of the vmlinux or
47 	  kernel module where the function is located.
48 
49 config CONSOLE_LOGLEVEL_DEFAULT
50 	int "Default console loglevel (1-15)"
51 	range 1 15
52 	default "7"
53 	help
54 	  Default loglevel to determine what will be printed on the console.
55 
56 	  Setting a default here is equivalent to passing in loglevel=<x> in
57 	  the kernel bootargs. loglevel=<x> continues to override whatever
58 	  value is specified here as well.
59 
60 	  Note: This does not affect the log level of un-prefixed printk()
61 	  usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
62 	  option.
63 
64 config CONSOLE_LOGLEVEL_QUIET
65 	int "quiet console loglevel (1-15)"
66 	range 1 15
67 	default "4"
68 	help
69 	  loglevel to use when "quiet" is passed on the kernel commandline.
70 
71 	  When "quiet" is passed on the kernel commandline this loglevel
72 	  will be used as the loglevel. IOW passing "quiet" will be the
73 	  equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
74 
75 config MESSAGE_LOGLEVEL_DEFAULT
76 	int "Default message log level (1-7)"
77 	range 1 7
78 	default "4"
79 	help
80 	  Default log level for printk statements with no specified priority.
81 
82 	  This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
83 	  that are auditing their logs closely may want to set it to a lower
84 	  priority.
85 
86 	  Note: This does not affect what message level gets printed on the console
87 	  by default. To change that, use loglevel=<x> in the kernel bootargs,
88 	  or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.
89 
90 config BOOT_PRINTK_DELAY
91 	bool "Delay each boot printk message by N milliseconds"
92 	depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
93 	help
94 	  This build option allows you to read kernel boot messages
95 	  by inserting a short delay after each one.  The delay is
96 	  specified in milliseconds on the kernel command line,
97 	  using "boot_delay=N".
98 
99 	  It is likely that you would also need to use "lpj=M" to preset
100 	  the "loops per jiffie" value.
101 	  See a previous boot log for the "lpj" value to use for your
102 	  system, and then set "lpj=M" before setting "boot_delay=N".
103 	  NOTE:  Using this option may adversely affect SMP systems.
104 	  I.e., processors other than the first one may not boot up.
105 	  BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
106 	  what it believes to be lockup conditions.
107 
108 config DYNAMIC_DEBUG
109 	bool "Enable dynamic printk() support"
110 	default n
111 	depends on PRINTK
112 	depends on (DEBUG_FS || PROC_FS)
113 	select DYNAMIC_DEBUG_CORE
114 	help
115 
116 	  Compiles debug level messages into the kernel, which would not
117 	  otherwise be available at runtime. These messages can then be
118 	  enabled/disabled based on various levels of scope - per source file,
119 	  function, module, format string, and line number. This mechanism
120 	  implicitly compiles in all pr_debug() and dev_dbg() calls, which
121 	  enlarges the kernel text size by about 2%.
122 
123 	  If a source file is compiled with DEBUG flag set, any
124 	  pr_debug() calls in it are enabled by default, but can be
125 	  disabled at runtime as below.  Note that DEBUG flag is
126 	  turned on by many CONFIG_*DEBUG* options.
127 
128 	  Usage:
129 
130 	  Dynamic debugging is controlled via the 'dynamic_debug/control' file,
131 	  which is contained in the 'debugfs' filesystem or procfs.
132 	  Thus, the debugfs or procfs filesystem must first be mounted before
133 	  making use of this feature.
134 	  We refer the control file as: <debugfs>/dynamic_debug/control. This
135 	  file contains a list of the debug statements that can be enabled. The
136 	  format for each line of the file is:
137 
138 		filename:lineno [module]function flags format
139 
140 	  filename : source file of the debug statement
141 	  lineno : line number of the debug statement
142 	  module : module that contains the debug statement
143 	  function : function that contains the debug statement
144 	  flags : '=p' means the line is turned 'on' for printing
145 	  format : the format used for the debug statement
146 
147 	  From a live system:
148 
149 		nullarbor:~ # cat <debugfs>/dynamic_debug/control
150 		# filename:lineno [module]function flags format
151 		fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
152 		fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
153 		fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
154 
155 	  Example usage:
156 
157 		// enable the message at line 1603 of file svcsock.c
158 		nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
159 						<debugfs>/dynamic_debug/control
160 
161 		// enable all the messages in file svcsock.c
162 		nullarbor:~ # echo -n 'file svcsock.c +p' >
163 						<debugfs>/dynamic_debug/control
164 
165 		// enable all the messages in the NFS server module
166 		nullarbor:~ # echo -n 'module nfsd +p' >
167 						<debugfs>/dynamic_debug/control
168 
169 		// enable all 12 messages in the function svc_process()
170 		nullarbor:~ # echo -n 'func svc_process +p' >
171 						<debugfs>/dynamic_debug/control
172 
173 		// disable all 12 messages in the function svc_process()
174 		nullarbor:~ # echo -n 'func svc_process -p' >
175 						<debugfs>/dynamic_debug/control
176 
177 	  See Documentation/admin-guide/dynamic-debug-howto.rst for additional
178 	  information.
179 
180 config DYNAMIC_DEBUG_CORE
181 	bool "Enable core function of dynamic debug support"
182 	depends on PRINTK
183 	depends on (DEBUG_FS || PROC_FS)
184 	help
185 	  Enable core functional support of dynamic debug. It is useful
186 	  when you want to tie dynamic debug to your kernel modules with
187 	  DYNAMIC_DEBUG_MODULE defined for each of them, especially for
188 	  the case of embedded system where the kernel image size is
189 	  sensitive for people.
190 
191 config SYMBOLIC_ERRNAME
192 	bool "Support symbolic error names in printf"
193 	default y if PRINTK
194 	help
195 	  If you say Y here, the kernel's printf implementation will
196 	  be able to print symbolic error names such as ENOSPC instead
197 	  of the number 28. It makes the kernel image slightly larger
198 	  (about 3KB), but can make the kernel logs easier to read.
199 
200 config DEBUG_BUGVERBOSE
201 	bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
202 	depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
203 	default y
204 	help
205 	  Say Y here to make BUG() panics output the file name and line number
206 	  of the BUG call as well as the EIP and oops trace.  This aids
207 	  debugging but costs about 70-100K of memory.
208 
209 endmenu # "printk and dmesg options"
210 
211 config DEBUG_KERNEL
212 	bool "Kernel debugging"
213 	help
214 	  Say Y here if you are developing drivers or trying to debug and
215 	  identify kernel problems.
216 
217 config DEBUG_MISC
218 	bool "Miscellaneous debug code"
219 	default DEBUG_KERNEL
220 	depends on DEBUG_KERNEL
221 	help
222 	  Say Y here if you need to enable miscellaneous debug code that should
223 	  be under a more specific debug option but isn't.
224 
225 menu "Compile-time checks and compiler options"
226 
227 config DEBUG_INFO
228 	bool
229 	help
230 	  A kernel debug info option other than "None" has been selected
231 	  in the "Debug information" choice below, indicating that debug
232 	  information will be generated for build targets.
233 
234 # Clang generates .uleb128 with label differences for DWARF v5, a feature that
235 # older binutils ports do not support when utilizing RISC-V style linker
236 # relaxation: https://sourceware.org/bugzilla/show_bug.cgi?id=27215
237 config AS_HAS_NON_CONST_ULEB128
238 	def_bool $(as-instr,.uleb128 .Lexpr_end4 - .Lexpr_start3\n.Lexpr_start3:\n.Lexpr_end4:)
239 
240 choice
241 	prompt "Debug information"
242 	depends on DEBUG_KERNEL
243 	help
244 	  Selecting something other than "None" results in a kernel image
245 	  that will include debugging info resulting in a larger kernel image.
246 	  This adds debug symbols to the kernel and modules (gcc -g), and
247 	  is needed if you intend to use kernel crashdump or binary object
248 	  tools like crash, kgdb, LKCD, gdb, etc on the kernel.
249 
250 	  Choose which version of DWARF debug info to emit. If unsure,
251 	  select "Toolchain default".
252 
253 config DEBUG_INFO_NONE
254 	bool "Disable debug information"
255 	help
256 	  Do not build the kernel with debugging information, which will
257 	  result in a faster and smaller build.
258 
259 config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
260 	bool "Rely on the toolchain's implicit default DWARF version"
261 	select DEBUG_INFO
262 	depends on !CC_IS_CLANG || AS_IS_LLVM || CLANG_VERSION < 140000 || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_ULEB128)
263 	help
264 	  The implicit default version of DWARF debug info produced by a
265 	  toolchain changes over time.
266 
267 	  This can break consumers of the debug info that haven't upgraded to
268 	  support newer revisions, and prevent testing newer versions, but
269 	  those should be less common scenarios.
270 
271 config DEBUG_INFO_DWARF4
272 	bool "Generate DWARF Version 4 debuginfo"
273 	select DEBUG_INFO
274 	depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)
275 	help
276 	  Generate DWARF v4 debug info. This requires gcc 4.5+, binutils 2.35.2
277 	  if using clang without clang's integrated assembler, and gdb 7.0+.
278 
279 	  If you have consumers of DWARF debug info that are not ready for
280 	  newer revisions of DWARF, you may wish to choose this or have your
281 	  config select this.
282 
283 config DEBUG_INFO_DWARF5
284 	bool "Generate DWARF Version 5 debuginfo"
285 	select DEBUG_INFO
286 	depends on !ARCH_HAS_BROKEN_DWARF5
287 	depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_ULEB128)
288 	help
289 	  Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
290 	  5.0+ accepts the -gdwarf-5 flag but only had partial support for some
291 	  draft features until 7.0), and gdb 8.0+.
292 
293 	  Changes to the structure of debug info in Version 5 allow for around
294 	  15-18% savings in resulting image and debug info section sizes as
295 	  compared to DWARF Version 4. DWARF Version 5 standardizes previous
296 	  extensions such as accelerators for symbol indexing and the format
297 	  for fission (.dwo/.dwp) files. Users may not want to select this
298 	  config if they rely on tooling that has not yet been updated to
299 	  support DWARF Version 5.
300 
301 endchoice # "Debug information"
302 
303 if DEBUG_INFO
304 
305 config DEBUG_INFO_REDUCED
306 	bool "Reduce debugging information"
307 	help
308 	  If you say Y here gcc is instructed to generate less debugging
309 	  information for structure types. This means that tools that
310 	  need full debugging information (like kgdb or systemtap) won't
311 	  be happy. But if you merely need debugging information to
312 	  resolve line numbers there is no loss. Advantage is that
313 	  build directory object sizes shrink dramatically over a full
314 	  DEBUG_INFO build and compile times are reduced too.
315 	  Only works with newer gcc versions.
316 
317 choice
318 	prompt "Compressed Debug information"
319 	help
320 	  Compress the resulting debug info. Results in smaller debug info sections,
321 	  but requires that consumers are able to decompress the results.
322 
323 	  If unsure, choose DEBUG_INFO_COMPRESSED_NONE.
324 
325 config DEBUG_INFO_COMPRESSED_NONE
326 	bool "Don't compress debug information"
327 	help
328 	  Don't compress debug info sections.
329 
330 config DEBUG_INFO_COMPRESSED_ZLIB
331 	bool "Compress debugging information with zlib"
332 	depends on $(cc-option,-gz=zlib)
333 	depends on $(ld-option,--compress-debug-sections=zlib)
334 	help
335 	  Compress the debug information using zlib.  Requires GCC 5.0+ or Clang
336 	  5.0+, binutils 2.26+, and zlib.
337 
338 	  Users of dpkg-deb via scripts/package/builddeb may find an increase in
339 	  size of their debug .deb packages with this config set, due to the
340 	  debug info being compressed with zlib, then the object files being
341 	  recompressed with a different compression scheme. But this is still
342 	  preferable to setting $KDEB_COMPRESS to "none" which would be even
343 	  larger.
344 
345 config DEBUG_INFO_COMPRESSED_ZSTD
346 	bool "Compress debugging information with zstd"
347 	depends on $(cc-option,-gz=zstd)
348 	depends on $(ld-option,--compress-debug-sections=zstd)
349 	help
350 	  Compress the debug information using zstd.  This may provide better
351 	  compression than zlib, for about the same time costs, but requires newer
352 	  toolchain support.  Requires GCC 13.0+ or Clang 16.0+, binutils 2.40+, and
353 	  zstd.
354 
355 endchoice # "Compressed Debug information"
356 
357 config DEBUG_INFO_SPLIT
358 	bool "Produce split debuginfo in .dwo files"
359 	depends on $(cc-option,-gsplit-dwarf)
360 	# RISC-V linker relaxation + -gsplit-dwarf has issues with LLVM and GCC
361 	# prior to 12.x:
362 	# https://github.com/llvm/llvm-project/issues/56642
363 	# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99090
364 	depends on !RISCV || GCC_VERSION >= 120000
365 	help
366 	  Generate debug info into separate .dwo files. This significantly
367 	  reduces the build directory size for builds with DEBUG_INFO,
368 	  because it stores the information only once on disk in .dwo
369 	  files instead of multiple times in object files and executables.
370 	  In addition the debug information is also compressed.
371 
372 	  Requires recent gcc (4.7+) and recent gdb/binutils.
373 	  Any tool that packages or reads debug information would need
374 	  to know about the .dwo files and include them.
375 	  Incompatible with older versions of ccache.
376 
377 config DEBUG_INFO_BTF
378 	bool "Generate BTF type information"
379 	depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
380 	depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
381 	depends on BPF_SYSCALL
382 	depends on !DEBUG_INFO_DWARF5 || PAHOLE_VERSION >= 121
383 	# pahole uses elfutils, which does not have support for Hexagon relocations
384 	depends on !HEXAGON
385 	help
386 	  Generate deduplicated BTF type information from DWARF debug info.
387 	  Turning this on expects presence of pahole tool, which will convert
388 	  DWARF type info into equivalent deduplicated BTF type info.
389 
390 config PAHOLE_HAS_SPLIT_BTF
391 	def_bool PAHOLE_VERSION >= 119
392 
393 config PAHOLE_HAS_BTF_TAG
394 	def_bool PAHOLE_VERSION >= 123
395 	depends on CC_IS_CLANG
396 	help
397 	  Decide whether pahole emits btf_tag attributes (btf_type_tag and
398 	  btf_decl_tag) or not. Currently only clang compiler implements
399 	  these attributes, so make the config depend on CC_IS_CLANG.
400 
401 config PAHOLE_HAS_LANG_EXCLUDE
402 	def_bool PAHOLE_VERSION >= 124
403 	help
404 	  Support for the --lang_exclude flag which makes pahole exclude
405 	  compilation units from the supplied language. Used in Kbuild to
406 	  omit Rust CUs which are not supported in version 1.24 of pahole,
407 	  otherwise it would emit malformed kernel and module binaries when
408 	  using DEBUG_INFO_BTF_MODULES.
409 
410 config DEBUG_INFO_BTF_MODULES
411 	bool "Generate BTF type information for kernel modules"
412 	default y
413 	depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF
414 	help
415 	  Generate compact split BTF type information for kernel modules.
416 
417 config MODULE_ALLOW_BTF_MISMATCH
418 	bool "Allow loading modules with non-matching BTF type info"
419 	depends on DEBUG_INFO_BTF_MODULES
420 	help
421 	  For modules whose split BTF does not match vmlinux, load without
422 	  BTF rather than refusing to load. The default behavior with
423 	  module BTF enabled is to reject modules with such mismatches;
424 	  this option will still load module BTF where possible but ignore
425 	  it when a mismatch is found.
426 
427 config GDB_SCRIPTS
428 	bool "Provide GDB scripts for kernel debugging"
429 	help
430 	  This creates the required links to GDB helper scripts in the
431 	  build directory. If you load vmlinux into gdb, the helper
432 	  scripts will be automatically imported by gdb as well, and
433 	  additional functions are available to analyze a Linux kernel
434 	  instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
435 	  for further details.
436 
437 endif # DEBUG_INFO
438 
439 config FRAME_WARN
440 	int "Warn for stack frames larger than"
441 	range 0 8192
442 	default 0 if KMSAN
443 	default 2048 if GCC_PLUGIN_LATENT_ENTROPY
444 	default 2048 if PARISC
445 	default 1536 if (!64BIT && XTENSA)
446 	default 1280 if KASAN && !64BIT
447 	default 1024 if !64BIT
448 	default 2048 if 64BIT
449 	help
450 	  Tell the compiler to warn at build time for stack frames larger than this.
451 	  Setting this too low will cause a lot of warnings.
452 	  Setting it to 0 disables the warning.
453 
454 config STRIP_ASM_SYMS
455 	bool "Strip assembler-generated symbols during link"
456 	default n
457 	help
458 	  Strip internal assembler-generated symbols during a link (symbols
459 	  that look like '.Lxxx') so they don't pollute the output of
460 	  get_wchan() and suchlike.
461 
462 config READABLE_ASM
463 	bool "Generate readable assembler code"
464 	depends on DEBUG_KERNEL
465 	depends on CC_IS_GCC
466 	help
467 	  Disable some compiler optimizations that tend to generate human unreadable
468 	  assembler output. This may make the kernel slightly slower, but it helps
469 	  to keep kernel developers who have to stare a lot at assembler listings
470 	  sane.
471 
472 config HEADERS_INSTALL
473 	bool "Install uapi headers to usr/include"
474 	depends on !UML
475 	help
476 	  This option will install uapi headers (headers exported to user-space)
477 	  into the usr/include directory for use during the kernel build.
478 	  This is unneeded for building the kernel itself, but needed for some
479 	  user-space program samples. It is also needed by some features such
480 	  as uapi header sanity checks.
481 
482 config DEBUG_SECTION_MISMATCH
483 	bool "Enable full Section mismatch analysis"
484 	depends on CC_IS_GCC
485 	help
486 	  The section mismatch analysis checks if there are illegal
487 	  references from one section to another section.
488 	  During linktime or runtime, some sections are dropped;
489 	  any use of code/data previously in these sections would
490 	  most likely result in an oops.
491 	  In the code, functions and variables are annotated with
492 	  __init,, etc. (see the full list in include/linux/init.h),
493 	  which results in the code/data being placed in specific sections.
494 	  The section mismatch analysis is always performed after a full
495 	  kernel build, and enabling this option causes the following
496 	  additional step to occur:
497 	  - Add the option -fno-inline-functions-called-once to gcc commands.
498 	    When inlining a function annotated with __init in a non-init
499 	    function, we would lose the section information and thus
500 	    the analysis would not catch the illegal reference.
501 	    This option tells gcc to inline less (but it does result in
502 	    a larger kernel).
503 
504 config SECTION_MISMATCH_WARN_ONLY
505 	bool "Make section mismatch errors non-fatal"
506 	default y
507 	help
508 	  If you say N here, the build process will fail if there are any
509 	  section mismatch, instead of just throwing warnings.
510 
511 	  If unsure, say Y.
512 
513 config DEBUG_FORCE_FUNCTION_ALIGN_64B
514 	bool "Force all function address 64B aligned"
515 	depends on EXPERT && (X86_64 || ARM64 || PPC32 || PPC64 || ARC || RISCV || S390)
516 	select FUNCTION_ALIGNMENT_64B
517 	help
518 	  There are cases that a commit from one domain changes the function
519 	  address alignment of other domains, and cause magic performance
520 	  bump (regression or improvement). Enable this option will help to
521 	  verify if the bump is caused by function alignment changes, while
522 	  it will slightly increase the kernel size and affect icache usage.
523 
524 	  It is mainly for debug and performance tuning use.
525 
526 #
527 # Select this config option from the architecture Kconfig, if it
528 # is preferred to always offer frame pointers as a config
529 # option on the architecture (regardless of KERNEL_DEBUG):
530 #
531 config ARCH_WANT_FRAME_POINTERS
532 	bool
533 
534 config FRAME_POINTER
535 	bool "Compile the kernel with frame pointers"
536 	depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
537 	default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
538 	help
539 	  If you say Y here the resulting kernel image will be slightly
540 	  larger and slower, but it gives very useful debugging information
541 	  in case of kernel bugs. (precise oopses/stacktraces/warnings)
542 
543 config OBJTOOL
544 	bool
545 
546 config STACK_VALIDATION
547 	bool "Compile-time stack metadata validation"
548 	depends on HAVE_STACK_VALIDATION && UNWINDER_FRAME_POINTER
549 	select OBJTOOL
550 	default n
551 	help
552 	  Validate frame pointer rules at compile-time.  This helps ensure that
553 	  runtime stack traces are more reliable.
554 
555 	  For more information, see
556 	  tools/objtool/Documentation/objtool.txt.
557 
558 config NOINSTR_VALIDATION
559 	bool
560 	depends on HAVE_NOINSTR_VALIDATION && DEBUG_ENTRY
561 	select OBJTOOL
562 	default y
563 
564 config VMLINUX_MAP
565 	bool "Generate vmlinux.map file when linking"
566 	depends on EXPERT
567 	help
568 	  Selecting this option will pass "-Map=vmlinux.map" to ld
569 	  when linking vmlinux. That file can be useful for verifying
570 	  and debugging magic section games, and for seeing which
571 	  pieces of code get eliminated with
572 	  CONFIG_LD_DEAD_CODE_DATA_ELIMINATION.
573 
574 config DEBUG_FORCE_WEAK_PER_CPU
575 	bool "Force weak per-cpu definitions"
576 	depends on DEBUG_KERNEL
577 	help
578 	  s390 and alpha require percpu variables in modules to be
579 	  defined weak to work around addressing range issue which
580 	  puts the following two restrictions on percpu variable
581 	  definitions.
582 
583 	  1. percpu symbols must be unique whether static or not
584 	  2. percpu variables can't be defined inside a function
585 
586 	  To ensure that generic code follows the above rules, this
587 	  option forces all percpu variables to be defined as weak.
588 
589 endmenu # "Compiler options"
590 
591 menu "Generic Kernel Debugging Instruments"
592 
593 config MAGIC_SYSRQ
594 	bool "Magic SysRq key"
595 	depends on !UML
596 	help
597 	  If you say Y here, you will have some control over the system even
598 	  if the system crashes for example during kernel debugging (e.g., you
599 	  will be able to flush the buffer cache to disk, reboot the system
600 	  immediately or dump some status information). This is accomplished
601 	  by pressing various keys while holding SysRq (Alt+PrintScreen). It
602 	  also works on a serial console (on PC hardware at least), if you
603 	  send a BREAK and then within 5 seconds a command keypress. The
604 	  keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
605 	  Don't say Y unless you really know what this hack does.
606 
607 config MAGIC_SYSRQ_DEFAULT_ENABLE
608 	hex "Enable magic SysRq key functions by default"
609 	depends on MAGIC_SYSRQ
610 	default 0x1
611 	help
612 	  Specifies which SysRq key functions are enabled by default.
613 	  This may be set to 1 or 0 to enable or disable them all, or
614 	  to a bitmask as described in Documentation/admin-guide/sysrq.rst.
615 
616 config MAGIC_SYSRQ_SERIAL
617 	bool "Enable magic SysRq key over serial"
618 	depends on MAGIC_SYSRQ
619 	default y
620 	help
621 	  Many embedded boards have a disconnected TTL level serial which can
622 	  generate some garbage that can lead to spurious false sysrq detects.
623 	  This option allows you to decide whether you want to enable the
624 	  magic SysRq key.
625 
626 config MAGIC_SYSRQ_SERIAL_SEQUENCE
627 	string "Char sequence that enables magic SysRq over serial"
628 	depends on MAGIC_SYSRQ_SERIAL
629 	default ""
630 	help
631 	  Specifies a sequence of characters that can follow BREAK to enable
632 	  SysRq on a serial console.
633 
634 	  If unsure, leave an empty string and the option will not be enabled.
635 
636 config DEBUG_FS
637 	bool "Debug Filesystem"
638 	help
639 	  debugfs is a virtual file system that kernel developers use to put
640 	  debugging files into.  Enable this option to be able to read and
641 	  write to these files.
642 
643 	  For detailed documentation on the debugfs API, see
644 	  Documentation/filesystems/.
645 
646 	  If unsure, say N.
647 
648 choice
649 	prompt "Debugfs default access"
650 	depends on DEBUG_FS
651 	default DEBUG_FS_ALLOW_ALL
652 	help
653 	  This selects the default access restrictions for debugfs.
654 	  It can be overridden with kernel command line option
655 	  debugfs=[on,no-mount,off]. The restrictions apply for API access
656 	  and filesystem registration.
657 
658 config DEBUG_FS_ALLOW_ALL
659 	bool "Access normal"
660 	help
661 	  No restrictions apply. Both API and filesystem registration
662 	  is on. This is the normal default operation.
663 
664 config DEBUG_FS_DISALLOW_MOUNT
665 	bool "Do not register debugfs as filesystem"
666 	help
667 	  The API is open but filesystem is not loaded. Clients can still do
668 	  their work and read with debug tools that do not need
669 	  debugfs filesystem.
670 
671 config DEBUG_FS_ALLOW_NONE
672 	bool "No access"
673 	help
674 	  Access is off. Clients get -PERM when trying to create nodes in
675 	  debugfs tree and debugfs is not registered as a filesystem.
676 	  Client can then back-off or continue without debugfs access.
677 
678 endchoice
679 
680 source "lib/Kconfig.kgdb"
681 source "lib/Kconfig.ubsan"
682 source "lib/Kconfig.kcsan"
683 
684 endmenu
685 
686 menu "Networking Debugging"
687 
688 source "net/Kconfig.debug"
689 
690 endmenu # "Networking Debugging"
691 
692 menu "Memory Debugging"
693 
694 source "mm/Kconfig.debug"
695 
696 config DEBUG_OBJECTS
697 	bool "Debug object operations"
698 	depends on DEBUG_KERNEL
699 	help
700 	  If you say Y here, additional code will be inserted into the
701 	  kernel to track the life time of various objects and validate
702 	  the operations on those objects.
703 
704 config DEBUG_OBJECTS_SELFTEST
705 	bool "Debug objects selftest"
706 	depends on DEBUG_OBJECTS
707 	help
708 	  This enables the selftest of the object debug code.
709 
710 config DEBUG_OBJECTS_FREE
711 	bool "Debug objects in freed memory"
712 	depends on DEBUG_OBJECTS
713 	help
714 	  This enables checks whether a k/v free operation frees an area
715 	  which contains an object which has not been deactivated
716 	  properly. This can make kmalloc/kfree-intensive workloads
717 	  much slower.
718 
719 config DEBUG_OBJECTS_TIMERS
720 	bool "Debug timer objects"
721 	depends on DEBUG_OBJECTS
722 	help
723 	  If you say Y here, additional code will be inserted into the
724 	  timer routines to track the life time of timer objects and
725 	  validate the timer operations.
726 
727 config DEBUG_OBJECTS_WORK
728 	bool "Debug work objects"
729 	depends on DEBUG_OBJECTS
730 	help
731 	  If you say Y here, additional code will be inserted into the
732 	  work queue routines to track the life time of work objects and
733 	  validate the work operations.
734 
735 config DEBUG_OBJECTS_RCU_HEAD
736 	bool "Debug RCU callbacks objects"
737 	depends on DEBUG_OBJECTS
738 	help
739 	  Enable this to turn on debugging of RCU list heads (call_rcu() usage).
740 
741 config DEBUG_OBJECTS_PERCPU_COUNTER
742 	bool "Debug percpu counter objects"
743 	depends on DEBUG_OBJECTS
744 	help
745 	  If you say Y here, additional code will be inserted into the
746 	  percpu counter routines to track the life time of percpu counter
747 	  objects and validate the percpu counter operations.
748 
749 config DEBUG_OBJECTS_ENABLE_DEFAULT
750 	int "debug_objects bootup default value (0-1)"
751 	range 0 1
752 	default "1"
753 	depends on DEBUG_OBJECTS
754 	help
755 	  Debug objects boot parameter default value
756 
757 config SHRINKER_DEBUG
758 	bool "Enable shrinker debugging support"
759 	depends on DEBUG_FS
760 	help
761 	  Say Y to enable the shrinker debugfs interface which provides
762 	  visibility into the kernel memory shrinkers subsystem.
763 	  Disable it to avoid an extra memory footprint.
764 
765 config DEBUG_STACK_USAGE
766 	bool "Stack utilization instrumentation"
767 	depends on DEBUG_KERNEL
768 	help
769 	  Enables the display of the minimum amount of free stack which each
770 	  task has ever had available in the sysrq-T and sysrq-P debug output.
771 	  Also emits a message to dmesg when a process exits if that process
772 	  used more stack space than previously exiting processes.
773 
774 	  This option will slow down process creation somewhat.
775 
776 config SCHED_STACK_END_CHECK
777 	bool "Detect stack corruption on calls to schedule()"
778 	depends on DEBUG_KERNEL
779 	default n
780 	help
781 	  This option checks for a stack overrun on calls to schedule().
782 	  If the stack end location is found to be over written always panic as
783 	  the content of the corrupted region can no longer be trusted.
784 	  This is to ensure no erroneous behaviour occurs which could result in
785 	  data corruption or a sporadic crash at a later stage once the region
786 	  is examined. The runtime overhead introduced is minimal.
787 
788 config ARCH_HAS_DEBUG_VM_PGTABLE
789 	bool
790 	help
791 	  An architecture should select this when it can successfully
792 	  build and run DEBUG_VM_PGTABLE.
793 
794 config DEBUG_VM_IRQSOFF
795 	def_bool DEBUG_VM && !PREEMPT_RT
796 
797 config DEBUG_VM
798 	bool "Debug VM"
799 	depends on DEBUG_KERNEL
800 	help
801 	  Enable this to turn on extended checks in the virtual-memory system
802 	  that may impact performance.
803 
804 	  If unsure, say N.
805 
806 config DEBUG_VM_SHOOT_LAZIES
807 	bool "Debug MMU_LAZY_TLB_SHOOTDOWN implementation"
808 	depends on DEBUG_VM
809 	depends on MMU_LAZY_TLB_SHOOTDOWN
810 	help
811 	  Enable additional IPIs that ensure lazy tlb mm references are removed
812 	  before the mm is freed.
813 
814 	  If unsure, say N.
815 
816 config DEBUG_VM_MAPLE_TREE
817 	bool "Debug VM maple trees"
818 	depends on DEBUG_VM
819 	select DEBUG_MAPLE_TREE
820 	help
821 	  Enable VM maple tree debugging information and extra validations.
822 
823 	  If unsure, say N.
824 
825 config DEBUG_VM_RB
826 	bool "Debug VM red-black trees"
827 	depends on DEBUG_VM
828 	help
829 	  Enable VM red-black tree debugging information and extra validations.
830 
831 	  If unsure, say N.
832 
833 config DEBUG_VM_PGFLAGS
834 	bool "Debug page-flags operations"
835 	depends on DEBUG_VM
836 	help
837 	  Enables extra validation on page flags operations.
838 
839 	  If unsure, say N.
840 
841 config DEBUG_VM_PGTABLE
842 	bool "Debug arch page table for semantics compliance"
843 	depends on MMU
844 	depends on ARCH_HAS_DEBUG_VM_PGTABLE
845 	default y if DEBUG_VM
846 	help
847 	  This option provides a debug method which can be used to test
848 	  architecture page table helper functions on various platforms in
849 	  verifying if they comply with expected generic MM semantics. This
850 	  will help architecture code in making sure that any changes or
851 	  new additions of these helpers still conform to expected
852 	  semantics of the generic MM. Platforms will have to opt in for
853 	  this through ARCH_HAS_DEBUG_VM_PGTABLE.
854 
855 	  If unsure, say N.
856 
857 config ARCH_HAS_DEBUG_VIRTUAL
858 	bool
859 
860 config DEBUG_VIRTUAL
861 	bool "Debug VM translations"
862 	depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL
863 	help
864 	  Enable some costly sanity checks in virtual to page code. This can
865 	  catch mistakes with virt_to_page() and friends.
866 
867 	  If unsure, say N.
868 
869 config DEBUG_NOMMU_REGIONS
870 	bool "Debug the global anon/private NOMMU mapping region tree"
871 	depends on DEBUG_KERNEL && !MMU
872 	help
873 	  This option causes the global tree of anonymous and private mapping
874 	  regions to be regularly checked for invalid topology.
875 
876 config DEBUG_MEMORY_INIT
877 	bool "Debug memory initialisation" if EXPERT
878 	default !EXPERT
879 	help
880 	  Enable this for additional checks during memory initialisation.
881 	  The sanity checks verify aspects of the VM such as the memory model
882 	  and other information provided by the architecture. Verbose
883 	  information will be printed at KERN_DEBUG loglevel depending
884 	  on the mminit_loglevel= command-line option.
885 
886 	  If unsure, say Y
887 
888 config MEMORY_NOTIFIER_ERROR_INJECT
889 	tristate "Memory hotplug notifier error injection module"
890 	depends on MEMORY_HOTPLUG && NOTIFIER_ERROR_INJECTION
891 	help
892 	  This option provides the ability to inject artificial errors to
893 	  memory hotplug notifier chain callbacks.  It is controlled through
894 	  debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
895 
896 	  If the notifier call chain should be failed with some events
897 	  notified, write the error code to "actions/<notifier event>/error".
898 
899 	  Example: Inject memory hotplug offline error (-12 == -ENOMEM)
900 
901 	  # cd /sys/kernel/debug/notifier-error-inject/memory
902 	  # echo -12 > actions/MEM_GOING_OFFLINE/error
903 	  # echo offline > /sys/devices/system/memory/memoryXXX/state
904 	  bash: echo: write error: Cannot allocate memory
905 
906 	  To compile this code as a module, choose M here: the module will
907 	  be called memory-notifier-error-inject.
908 
909 	  If unsure, say N.
910 
911 config DEBUG_PER_CPU_MAPS
912 	bool "Debug access to per_cpu maps"
913 	depends on DEBUG_KERNEL
914 	depends on SMP
915 	help
916 	  Say Y to verify that the per_cpu map being accessed has
917 	  been set up. This adds a fair amount of code to kernel memory
918 	  and decreases performance.
919 
920 	  Say N if unsure.
921 
922 config DEBUG_KMAP_LOCAL
923 	bool "Debug kmap_local temporary mappings"
924 	depends on DEBUG_KERNEL && KMAP_LOCAL
925 	help
926 	  This option enables additional error checking for the kmap_local
927 	  infrastructure.  Disable for production use.
928 
929 config ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP
930 	bool
931 
932 config DEBUG_KMAP_LOCAL_FORCE_MAP
933 	bool "Enforce kmap_local temporary mappings"
934 	depends on DEBUG_KERNEL && ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP
935 	select KMAP_LOCAL
936 	select DEBUG_KMAP_LOCAL
937 	help
938 	  This option enforces temporary mappings through the kmap_local
939 	  mechanism for non-highmem pages and on non-highmem systems.
940 	  Disable this for production systems!
941 
942 config DEBUG_HIGHMEM
943 	bool "Highmem debugging"
944 	depends on DEBUG_KERNEL && HIGHMEM
945 	select DEBUG_KMAP_LOCAL_FORCE_MAP if ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP
946 	select DEBUG_KMAP_LOCAL
947 	help
948 	  This option enables additional error checking for high memory
949 	  systems.  Disable for production systems.
950 
951 config HAVE_DEBUG_STACKOVERFLOW
952 	bool
953 
954 config DEBUG_STACKOVERFLOW
955 	bool "Check for stack overflows"
956 	depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
957 	help
958 	  Say Y here if you want to check for overflows of kernel, IRQ
959 	  and exception stacks (if your architecture uses them). This
960 	  option will show detailed messages if free stack space drops
961 	  below a certain limit.
962 
963 	  These kinds of bugs usually occur when call-chains in the
964 	  kernel get too deep, especially when interrupts are
965 	  involved.
966 
967 	  Use this in cases where you see apparently random memory
968 	  corruption, especially if it appears in 'struct thread_info'
969 
970 	  If in doubt, say "N".
971 
972 source "lib/Kconfig.kasan"
973 source "lib/Kconfig.kfence"
974 source "lib/Kconfig.kmsan"
975 
976 endmenu # "Memory Debugging"
977 
978 config DEBUG_SHIRQ
979 	bool "Debug shared IRQ handlers"
980 	depends on DEBUG_KERNEL
981 	help
982 	  Enable this to generate a spurious interrupt just before a shared
983 	  interrupt handler is deregistered (generating one when registering
984 	  is currently disabled). Drivers need to handle this correctly. Some
985 	  don't and need to be caught.
986 
987 menu "Debug Oops, Lockups and Hangs"
988 
989 config PANIC_ON_OOPS
990 	bool "Panic on Oops"
991 	help
992 	  Say Y here to enable the kernel to panic when it oopses. This
993 	  has the same effect as setting oops=panic on the kernel command
994 	  line.
995 
996 	  This feature is useful to ensure that the kernel does not do
997 	  anything erroneous after an oops which could result in data
998 	  corruption or other issues.
999 
1000 	  Say N if unsure.
1001 
1002 config PANIC_ON_OOPS_VALUE
1003 	int
1004 	range 0 1
1005 	default 0 if !PANIC_ON_OOPS
1006 	default 1 if PANIC_ON_OOPS
1007 
1008 config PANIC_TIMEOUT
1009 	int "panic timeout"
1010 	default 0
1011 	help
1012 	  Set the timeout value (in seconds) until a reboot occurs when
1013 	  the kernel panics. If n = 0, then we wait forever. A timeout
1014 	  value n > 0 will wait n seconds before rebooting, while a timeout
1015 	  value n < 0 will reboot immediately.
1016 
1017 config LOCKUP_DETECTOR
1018 	bool
1019 
1020 config SOFTLOCKUP_DETECTOR
1021 	bool "Detect Soft Lockups"
1022 	depends on DEBUG_KERNEL && !S390
1023 	select LOCKUP_DETECTOR
1024 	help
1025 	  Say Y here to enable the kernel to act as a watchdog to detect
1026 	  soft lockups.
1027 
1028 	  Softlockups are bugs that cause the kernel to loop in kernel
1029 	  mode for more than 20 seconds, without giving other tasks a
1030 	  chance to run.  The current stack trace is displayed upon
1031 	  detection and the system will stay locked up.
1032 
1033 config BOOTPARAM_SOFTLOCKUP_PANIC
1034 	bool "Panic (Reboot) On Soft Lockups"
1035 	depends on SOFTLOCKUP_DETECTOR
1036 	help
1037 	  Say Y here to enable the kernel to panic on "soft lockups",
1038 	  which are bugs that cause the kernel to loop in kernel
1039 	  mode for more than 20 seconds (configurable using the watchdog_thresh
1040 	  sysctl), without giving other tasks a chance to run.
1041 
1042 	  The panic can be used in combination with panic_timeout,
1043 	  to cause the system to reboot automatically after a
1044 	  lockup has been detected. This feature is useful for
1045 	  high-availability systems that have uptime guarantees and
1046 	  where a lockup must be resolved ASAP.
1047 
1048 	  Say N if unsure.
1049 
1050 config HAVE_HARDLOCKUP_DETECTOR_BUDDY
1051 	bool
1052 	depends on SMP
1053 	default y
1054 
1055 #
1056 # Global switch whether to build a hardlockup detector at all. It is available
1057 # only when the architecture supports at least one implementation. There are
1058 # two exceptions. The hardlockup detector is never enabled on:
1059 #
1060 #	s390: it reported many false positives there
1061 #
1062 #	sparc64: has a custom implementation which is not using the common
1063 #		hardlockup command line options and sysctl interface.
1064 #
1065 config HARDLOCKUP_DETECTOR
1066 	bool "Detect Hard Lockups"
1067 	depends on DEBUG_KERNEL && !S390 && !HARDLOCKUP_DETECTOR_SPARC64
1068 	depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_BUDDY || HAVE_HARDLOCKUP_DETECTOR_ARCH
1069 	imply HARDLOCKUP_DETECTOR_PERF
1070 	imply HARDLOCKUP_DETECTOR_BUDDY
1071 	imply HARDLOCKUP_DETECTOR_ARCH
1072 	select LOCKUP_DETECTOR
1073 
1074 	help
1075 	  Say Y here to enable the kernel to act as a watchdog to detect
1076 	  hard lockups.
1077 
1078 	  Hardlockups are bugs that cause the CPU to loop in kernel mode
1079 	  for more than 10 seconds, without letting other interrupts have a
1080 	  chance to run.  The current stack trace is displayed upon detection
1081 	  and the system will stay locked up.
1082 
1083 #
1084 # Note that arch-specific variants are always preferred.
1085 #
1086 config HARDLOCKUP_DETECTOR_PREFER_BUDDY
1087 	bool "Prefer the buddy CPU hardlockup detector"
1088 	depends on HARDLOCKUP_DETECTOR
1089 	depends on HAVE_HARDLOCKUP_DETECTOR_PERF && HAVE_HARDLOCKUP_DETECTOR_BUDDY
1090 	depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH
1091 	help
1092 	  Say Y here to prefer the buddy hardlockup detector over the perf one.
1093 
1094 	  With the buddy detector, each CPU uses its softlockup hrtimer
1095 	  to check that the next CPU is processing hrtimer interrupts by
1096 	  verifying that a counter is increasing.
1097 
1098 	  This hardlockup detector is useful on systems that don't have
1099 	  an arch-specific hardlockup detector or if resources needed
1100 	  for the hardlockup detector are better used for other things.
1101 
1102 config HARDLOCKUP_DETECTOR_PERF
1103 	bool
1104 	depends on HARDLOCKUP_DETECTOR
1105 	depends on HAVE_HARDLOCKUP_DETECTOR_PERF && !HARDLOCKUP_DETECTOR_PREFER_BUDDY
1106 	depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH
1107 	select HARDLOCKUP_DETECTOR_COUNTS_HRTIMER
1108 
1109 config HARDLOCKUP_DETECTOR_BUDDY
1110 	bool
1111 	depends on HARDLOCKUP_DETECTOR
1112 	depends on HAVE_HARDLOCKUP_DETECTOR_BUDDY
1113 	depends on !HAVE_HARDLOCKUP_DETECTOR_PERF || HARDLOCKUP_DETECTOR_PREFER_BUDDY
1114 	depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH
1115 	select HARDLOCKUP_DETECTOR_COUNTS_HRTIMER
1116 
1117 config HARDLOCKUP_DETECTOR_ARCH
1118 	bool
1119 	depends on HARDLOCKUP_DETECTOR
1120 	depends on HAVE_HARDLOCKUP_DETECTOR_ARCH
1121 	help
1122 	  The arch-specific implementation of the hardlockup detector will
1123 	  be used.
1124 
1125 #
1126 # Both the "perf" and "buddy" hardlockup detectors count hrtimer
1127 # interrupts. This config enables functions managing this common code.
1128 #
1129 config HARDLOCKUP_DETECTOR_COUNTS_HRTIMER
1130 	bool
1131 	select SOFTLOCKUP_DETECTOR
1132 
1133 #
1134 # Enables a timestamp based low pass filter to compensate for perf based
1135 # hard lockup detection which runs too fast due to turbo modes.
1136 #
1137 config HARDLOCKUP_CHECK_TIMESTAMP
1138 	bool
1139 
1140 config BOOTPARAM_HARDLOCKUP_PANIC
1141 	bool "Panic (Reboot) On Hard Lockups"
1142 	depends on HARDLOCKUP_DETECTOR
1143 	help
1144 	  Say Y here to enable the kernel to panic on "hard lockups",
1145 	  which are bugs that cause the kernel to loop in kernel
1146 	  mode with interrupts disabled for more than 10 seconds (configurable
1147 	  using the watchdog_thresh sysctl).
1148 
1149 	  Say N if unsure.
1150 
1151 config DETECT_HUNG_TASK
1152 	bool "Detect Hung Tasks"
1153 	depends on DEBUG_KERNEL
1154 	default SOFTLOCKUP_DETECTOR
1155 	help
1156 	  Say Y here to enable the kernel to detect "hung tasks",
1157 	  which are bugs that cause the task to be stuck in
1158 	  uninterruptible "D" state indefinitely.
1159 
1160 	  When a hung task is detected, the kernel will print the
1161 	  current stack trace (which you should report), but the
1162 	  task will stay in uninterruptible state. If lockdep is
1163 	  enabled then all held locks will also be reported. This
1164 	  feature has negligible overhead.
1165 
1166 config DEFAULT_HUNG_TASK_TIMEOUT
1167 	int "Default timeout for hung task detection (in seconds)"
1168 	depends on DETECT_HUNG_TASK
1169 	default 120
1170 	help
1171 	  This option controls the default timeout (in seconds) used
1172 	  to determine when a task has become non-responsive and should
1173 	  be considered hung.
1174 
1175 	  It can be adjusted at runtime via the kernel.hung_task_timeout_secs
1176 	  sysctl or by writing a value to
1177 	  /proc/sys/kernel/hung_task_timeout_secs.
1178 
1179 	  A timeout of 0 disables the check.  The default is two minutes.
1180 	  Keeping the default should be fine in most cases.
1181 
1182 config BOOTPARAM_HUNG_TASK_PANIC
1183 	bool "Panic (Reboot) On Hung Tasks"
1184 	depends on DETECT_HUNG_TASK
1185 	help
1186 	  Say Y here to enable the kernel to panic on "hung tasks",
1187 	  which are bugs that cause the kernel to leave a task stuck
1188 	  in uninterruptible "D" state.
1189 
1190 	  The panic can be used in combination with panic_timeout,
1191 	  to cause the system to reboot automatically after a
1192 	  hung task has been detected. This feature is useful for
1193 	  high-availability systems that have uptime guarantees and
1194 	  where a hung tasks must be resolved ASAP.
1195 
1196 	  Say N if unsure.
1197 
1198 config WQ_WATCHDOG
1199 	bool "Detect Workqueue Stalls"
1200 	depends on DEBUG_KERNEL
1201 	help
1202 	  Say Y here to enable stall detection on workqueues.  If a
1203 	  worker pool doesn't make forward progress on a pending work
1204 	  item for over a given amount of time, 30s by default, a
1205 	  warning message is printed along with dump of workqueue
1206 	  state.  This can be configured through kernel parameter
1207 	  "workqueue.watchdog_thresh" and its sysfs counterpart.
1208 
1209 config WQ_CPU_INTENSIVE_REPORT
1210 	bool "Report per-cpu work items which hog CPU for too long"
1211 	depends on DEBUG_KERNEL
1212 	help
1213 	  Say Y here to enable reporting of concurrency-managed per-cpu work
1214 	  items that hog CPUs for longer than
1215 	  workqueue.cpu_intensive_thresh_us. Workqueue automatically
1216 	  detects and excludes them from concurrency management to prevent
1217 	  them from stalling other per-cpu work items. Occassional
1218 	  triggering may not necessarily indicate a problem. Repeated
1219 	  triggering likely indicates that the work item should be switched
1220 	  to use an unbound workqueue.
1221 
1222 config TEST_LOCKUP
1223 	tristate "Test module to generate lockups"
1224 	depends on m
1225 	help
1226 	  This builds the "test_lockup" module that helps to make sure
1227 	  that watchdogs and lockup detectors are working properly.
1228 
1229 	  Depending on module parameters it could emulate soft or hard
1230 	  lockup, "hung task", or locking arbitrary lock for a long time.
1231 	  Also it could generate series of lockups with cooling-down periods.
1232 
1233 	  If unsure, say N.
1234 
1235 endmenu # "Debug lockups and hangs"
1236 
1237 menu "Scheduler Debugging"
1238 
1239 config SCHED_DEBUG
1240 	bool "Collect scheduler debugging info"
1241 	depends on DEBUG_KERNEL && DEBUG_FS
1242 	default y
1243 	help
1244 	  If you say Y here, the /sys/kernel/debug/sched file will be provided
1245 	  that can help debug the scheduler. The runtime overhead of this
1246 	  option is minimal.
1247 
1248 config SCHED_INFO
1249 	bool
1250 	default n
1251 
1252 config SCHEDSTATS
1253 	bool "Collect scheduler statistics"
1254 	depends on DEBUG_KERNEL && PROC_FS
1255 	select SCHED_INFO
1256 	help
1257 	  If you say Y here, additional code will be inserted into the
1258 	  scheduler and related routines to collect statistics about
1259 	  scheduler behavior and provide them in /proc/schedstat.  These
1260 	  stats may be useful for both tuning and debugging the scheduler
1261 	  If you aren't debugging the scheduler or trying to tune a specific
1262 	  application, you can say N to avoid the very slight overhead
1263 	  this adds.
1264 
1265 endmenu
1266 
1267 config DEBUG_TIMEKEEPING
1268 	bool "Enable extra timekeeping sanity checking"
1269 	help
1270 	  This option will enable additional timekeeping sanity checks
1271 	  which may be helpful when diagnosing issues where timekeeping
1272 	  problems are suspected.
1273 
1274 	  This may include checks in the timekeeping hotpaths, so this
1275 	  option may have a (very small) performance impact to some
1276 	  workloads.
1277 
1278 	  If unsure, say N.
1279 
1280 config DEBUG_PREEMPT
1281 	bool "Debug preemptible kernel"
1282 	depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
1283 	help
1284 	  If you say Y here then the kernel will use a debug variant of the
1285 	  commonly used smp_processor_id() function and will print warnings
1286 	  if kernel code uses it in a preemption-unsafe way. Also, the kernel
1287 	  will detect preemption count underflows.
1288 
1289 	  This option has potential to introduce high runtime overhead,
1290 	  depending on workload as it triggers debugging routines for each
1291 	  this_cpu operation. It should only be used for debugging purposes.
1292 
1293 menu "Lock Debugging (spinlocks, mutexes, etc...)"
1294 
1295 config LOCK_DEBUGGING_SUPPORT
1296 	bool
1297 	depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1298 	default y
1299 
1300 config PROVE_LOCKING
1301 	bool "Lock debugging: prove locking correctness"
1302 	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1303 	select LOCKDEP
1304 	select DEBUG_SPINLOCK
1305 	select DEBUG_MUTEXES if !PREEMPT_RT
1306 	select DEBUG_RT_MUTEXES if RT_MUTEXES
1307 	select DEBUG_RWSEMS if !PREEMPT_RT
1308 	select DEBUG_WW_MUTEX_SLOWPATH
1309 	select DEBUG_LOCK_ALLOC
1310 	select PREEMPT_COUNT if !ARCH_NO_PREEMPT
1311 	select TRACE_IRQFLAGS
1312 	default n
1313 	help
1314 	 This feature enables the kernel to prove that all locking
1315 	 that occurs in the kernel runtime is mathematically
1316 	 correct: that under no circumstance could an arbitrary (and
1317 	 not yet triggered) combination of observed locking
1318 	 sequences (on an arbitrary number of CPUs, running an
1319 	 arbitrary number of tasks and interrupt contexts) cause a
1320 	 deadlock.
1321 
1322 	 In short, this feature enables the kernel to report locking
1323 	 related deadlocks before they actually occur.
1324 
1325 	 The proof does not depend on how hard and complex a
1326 	 deadlock scenario would be to trigger: how many
1327 	 participant CPUs, tasks and irq-contexts would be needed
1328 	 for it to trigger. The proof also does not depend on
1329 	 timing: if a race and a resulting deadlock is possible
1330 	 theoretically (no matter how unlikely the race scenario
1331 	 is), it will be proven so and will immediately be
1332 	 reported by the kernel (once the event is observed that
1333 	 makes the deadlock theoretically possible).
1334 
1335 	 If a deadlock is impossible (i.e. the locking rules, as
1336 	 observed by the kernel, are mathematically correct), the
1337 	 kernel reports nothing.
1338 
1339 	 NOTE: this feature can also be enabled for rwlocks, mutexes
1340 	 and rwsems - in which case all dependencies between these
1341 	 different locking variants are observed and mapped too, and
1342 	 the proof of observed correctness is also maintained for an
1343 	 arbitrary combination of these separate locking variants.
1344 
1345 	 For more details, see Documentation/locking/lockdep-design.rst.
1346 
1347 config PROVE_RAW_LOCK_NESTING
1348 	bool "Enable raw_spinlock - spinlock nesting checks"
1349 	depends on PROVE_LOCKING
1350 	default n
1351 	help
1352 	 Enable the raw_spinlock vs. spinlock nesting checks which ensure
1353 	 that the lock nesting rules for PREEMPT_RT enabled kernels are
1354 	 not violated.
1355 
1356 	 NOTE: There are known nesting problems. So if you enable this
1357 	 option expect lockdep splats until these problems have been fully
1358 	 addressed which is work in progress. This config switch allows to
1359 	 identify and analyze these problems. It will be removed and the
1360 	 check permanently enabled once the main issues have been fixed.
1361 
1362 	 If unsure, select N.
1363 
1364 config LOCK_STAT
1365 	bool "Lock usage statistics"
1366 	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1367 	select LOCKDEP
1368 	select DEBUG_SPINLOCK
1369 	select DEBUG_MUTEXES if !PREEMPT_RT
1370 	select DEBUG_RT_MUTEXES if RT_MUTEXES
1371 	select DEBUG_LOCK_ALLOC
1372 	default n
1373 	help
1374 	 This feature enables tracking lock contention points
1375 
1376 	 For more details, see Documentation/locking/lockstat.rst
1377 
1378 	 This also enables lock events required by "perf lock",
1379 	 subcommand of perf.
1380 	 If you want to use "perf lock", you also need to turn on
1381 	 CONFIG_EVENT_TRACING.
1382 
1383 	 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
1384 	 (CONFIG_LOCKDEP defines "acquire" and "release" events.)
1385 
1386 config DEBUG_RT_MUTEXES
1387 	bool "RT Mutex debugging, deadlock detection"
1388 	depends on DEBUG_KERNEL && RT_MUTEXES
1389 	help
1390 	 This allows rt mutex semantics violations and rt mutex related
1391 	 deadlocks (lockups) to be detected and reported automatically.
1392 
1393 config DEBUG_SPINLOCK
1394 	bool "Spinlock and rw-lock debugging: basic checks"
1395 	depends on DEBUG_KERNEL
1396 	select UNINLINE_SPIN_UNLOCK
1397 	help
1398 	  Say Y here and build SMP to catch missing spinlock initialization
1399 	  and certain other kinds of spinlock errors commonly made.  This is
1400 	  best used in conjunction with the NMI watchdog so that spinlock
1401 	  deadlocks are also debuggable.
1402 
1403 config DEBUG_MUTEXES
1404 	bool "Mutex debugging: basic checks"
1405 	depends on DEBUG_KERNEL && !PREEMPT_RT
1406 	help
1407 	 This feature allows mutex semantics violations to be detected and
1408 	 reported.
1409 
1410 config DEBUG_WW_MUTEX_SLOWPATH
1411 	bool "Wait/wound mutex debugging: Slowpath testing"
1412 	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1413 	select DEBUG_LOCK_ALLOC
1414 	select DEBUG_SPINLOCK
1415 	select DEBUG_MUTEXES if !PREEMPT_RT
1416 	select DEBUG_RT_MUTEXES if PREEMPT_RT
1417 	help
1418 	 This feature enables slowpath testing for w/w mutex users by
1419 	 injecting additional -EDEADLK wound/backoff cases. Together with
1420 	 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
1421 	 will test all possible w/w mutex interface abuse with the
1422 	 exception of simply not acquiring all the required locks.
1423 	 Note that this feature can introduce significant overhead, so
1424 	 it really should not be enabled in a production or distro kernel,
1425 	 even a debug kernel.  If you are a driver writer, enable it.  If
1426 	 you are a distro, do not.
1427 
1428 config DEBUG_RWSEMS
1429 	bool "RW Semaphore debugging: basic checks"
1430 	depends on DEBUG_KERNEL && !PREEMPT_RT
1431 	help
1432 	  This debugging feature allows mismatched rw semaphore locks
1433 	  and unlocks to be detected and reported.
1434 
1435 config DEBUG_LOCK_ALLOC
1436 	bool "Lock debugging: detect incorrect freeing of live locks"
1437 	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1438 	select DEBUG_SPINLOCK
1439 	select DEBUG_MUTEXES if !PREEMPT_RT
1440 	select DEBUG_RT_MUTEXES if RT_MUTEXES
1441 	select LOCKDEP
1442 	help
1443 	 This feature will check whether any held lock (spinlock, rwlock,
1444 	 mutex or rwsem) is incorrectly freed by the kernel, via any of the
1445 	 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
1446 	 vfree(), etc.), whether a live lock is incorrectly reinitialized via
1447 	 spin_lock_init()/mutex_init()/etc., or whether there is any lock
1448 	 held during task exit.
1449 
1450 config LOCKDEP
1451 	bool
1452 	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1453 	select STACKTRACE
1454 	select KALLSYMS
1455 	select KALLSYMS_ALL
1456 
1457 config LOCKDEP_SMALL
1458 	bool
1459 
1460 config LOCKDEP_BITS
1461 	int "Bitsize for MAX_LOCKDEP_ENTRIES"
1462 	depends on LOCKDEP && !LOCKDEP_SMALL
1463 	range 10 30
1464 	default 15
1465 	help
1466 	  Try increasing this value if you hit "BUG: MAX_LOCKDEP_ENTRIES too low!" message.
1467 
1468 config LOCKDEP_CHAINS_BITS
1469 	int "Bitsize for MAX_LOCKDEP_CHAINS"
1470 	depends on LOCKDEP && !LOCKDEP_SMALL
1471 	range 10 30
1472 	default 16
1473 	help
1474 	  Try increasing this value if you hit "BUG: MAX_LOCKDEP_CHAINS too low!" message.
1475 
1476 config LOCKDEP_STACK_TRACE_BITS
1477 	int "Bitsize for MAX_STACK_TRACE_ENTRIES"
1478 	depends on LOCKDEP && !LOCKDEP_SMALL
1479 	range 10 30
1480 	default 19
1481 	help
1482 	  Try increasing this value if you hit "BUG: MAX_STACK_TRACE_ENTRIES too low!" message.
1483 
1484 config LOCKDEP_STACK_TRACE_HASH_BITS
1485 	int "Bitsize for STACK_TRACE_HASH_SIZE"
1486 	depends on LOCKDEP && !LOCKDEP_SMALL
1487 	range 10 30
1488 	default 14
1489 	help
1490 	  Try increasing this value if you need large STACK_TRACE_HASH_SIZE.
1491 
1492 config LOCKDEP_CIRCULAR_QUEUE_BITS
1493 	int "Bitsize for elements in circular_queue struct"
1494 	depends on LOCKDEP
1495 	range 10 30
1496 	default 12
1497 	help
1498 	  Try increasing this value if you hit "lockdep bfs error:-1" warning due to __cq_enqueue() failure.
1499 
1500 config DEBUG_LOCKDEP
1501 	bool "Lock dependency engine debugging"
1502 	depends on DEBUG_KERNEL && LOCKDEP
1503 	select DEBUG_IRQFLAGS
1504 	help
1505 	  If you say Y here, the lock dependency engine will do
1506 	  additional runtime checks to debug itself, at the price
1507 	  of more runtime overhead.
1508 
1509 config DEBUG_ATOMIC_SLEEP
1510 	bool "Sleep inside atomic section checking"
1511 	select PREEMPT_COUNT
1512 	depends on DEBUG_KERNEL
1513 	depends on !ARCH_NO_PREEMPT
1514 	help
1515 	  If you say Y here, various routines which may sleep will become very
1516 	  noisy if they are called inside atomic sections: when a spinlock is
1517 	  held, inside an rcu read side critical section, inside preempt disabled
1518 	  sections, inside an interrupt, etc...
1519 
1520 config DEBUG_LOCKING_API_SELFTESTS
1521 	bool "Locking API boot-time self-tests"
1522 	depends on DEBUG_KERNEL
1523 	help
1524 	  Say Y here if you want the kernel to run a short self-test during
1525 	  bootup. The self-test checks whether common types of locking bugs
1526 	  are detected by debugging mechanisms or not. (if you disable
1527 	  lock debugging then those bugs won't be detected of course.)
1528 	  The following locking APIs are covered: spinlocks, rwlocks,
1529 	  mutexes and rwsems.
1530 
1531 config LOCK_TORTURE_TEST
1532 	tristate "torture tests for locking"
1533 	depends on DEBUG_KERNEL
1534 	select TORTURE_TEST
1535 	help
1536 	  This option provides a kernel module that runs torture tests
1537 	  on kernel locking primitives.  The kernel module may be built
1538 	  after the fact on the running kernel to be tested, if desired.
1539 
1540 	  Say Y here if you want kernel locking-primitive torture tests
1541 	  to be built into the kernel.
1542 	  Say M if you want these torture tests to build as a module.
1543 	  Say N if you are unsure.
1544 
1545 config WW_MUTEX_SELFTEST
1546 	tristate "Wait/wound mutex selftests"
1547 	help
1548 	  This option provides a kernel module that runs tests on the
1549 	  on the struct ww_mutex locking API.
1550 
1551 	  It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction
1552 	  with this test harness.
1553 
1554 	  Say M if you want these self tests to build as a module.
1555 	  Say N if you are unsure.
1556 
1557 config SCF_TORTURE_TEST
1558 	tristate "torture tests for smp_call_function*()"
1559 	depends on DEBUG_KERNEL
1560 	select TORTURE_TEST
1561 	help
1562 	  This option provides a kernel module that runs torture tests
1563 	  on the smp_call_function() family of primitives.  The kernel
1564 	  module may be built after the fact on the running kernel to
1565 	  be tested, if desired.
1566 
1567 config CSD_LOCK_WAIT_DEBUG
1568 	bool "Debugging for csd_lock_wait(), called from smp_call_function*()"
1569 	depends on DEBUG_KERNEL
1570 	depends on 64BIT
1571 	default n
1572 	help
1573 	  This option enables debug prints when CPUs are slow to respond
1574 	  to the smp_call_function*() IPI wrappers.  These debug prints
1575 	  include the IPI handler function currently executing (if any)
1576 	  and relevant stack traces.
1577 
1578 config CSD_LOCK_WAIT_DEBUG_DEFAULT
1579 	bool "Default csd_lock_wait() debugging on at boot time"
1580 	depends on CSD_LOCK_WAIT_DEBUG
1581 	depends on 64BIT
1582 	default n
1583 	help
1584 	  This option causes the csdlock_debug= kernel boot parameter to
1585 	  default to 1 (basic debugging) instead of 0 (no debugging).
1586 
1587 endmenu # lock debugging
1588 
1589 config TRACE_IRQFLAGS
1590 	depends on TRACE_IRQFLAGS_SUPPORT
1591 	bool
1592 	help
1593 	  Enables hooks to interrupt enabling and disabling for
1594 	  either tracing or lock debugging.
1595 
1596 config TRACE_IRQFLAGS_NMI
1597 	def_bool y
1598 	depends on TRACE_IRQFLAGS
1599 	depends on TRACE_IRQFLAGS_NMI_SUPPORT
1600 
1601 config NMI_CHECK_CPU
1602 	bool "Debugging for CPUs failing to respond to backtrace requests"
1603 	depends on DEBUG_KERNEL
1604 	depends on X86
1605 	default n
1606 	help
1607 	  Enables debug prints when a CPU fails to respond to a given
1608 	  backtrace NMI.  These prints provide some reasons why a CPU
1609 	  might legitimately be failing to respond, for example, if it
1610 	  is offline of if ignore_nmis is set.
1611 
1612 config DEBUG_IRQFLAGS
1613 	bool "Debug IRQ flag manipulation"
1614 	help
1615 	  Enables checks for potentially unsafe enabling or disabling of
1616 	  interrupts, such as calling raw_local_irq_restore() when interrupts
1617 	  are enabled.
1618 
1619 config STACKTRACE
1620 	bool "Stack backtrace support"
1621 	depends on STACKTRACE_SUPPORT
1622 	help
1623 	  This option causes the kernel to create a /proc/pid/stack for
1624 	  every process, showing its current stack trace.
1625 	  It is also used by various kernel debugging features that require
1626 	  stack trace generation.
1627 
1628 config WARN_ALL_UNSEEDED_RANDOM
1629 	bool "Warn for all uses of unseeded randomness"
1630 	default n
1631 	help
1632 	  Some parts of the kernel contain bugs relating to their use of
1633 	  cryptographically secure random numbers before it's actually possible
1634 	  to generate those numbers securely. This setting ensures that these
1635 	  flaws don't go unnoticed, by enabling a message, should this ever
1636 	  occur. This will allow people with obscure setups to know when things
1637 	  are going wrong, so that they might contact developers about fixing
1638 	  it.
1639 
1640 	  Unfortunately, on some models of some architectures getting
1641 	  a fully seeded CRNG is extremely difficult, and so this can
1642 	  result in dmesg getting spammed for a surprisingly long
1643 	  time.  This is really bad from a security perspective, and
1644 	  so architecture maintainers really need to do what they can
1645 	  to get the CRNG seeded sooner after the system is booted.
1646 	  However, since users cannot do anything actionable to
1647 	  address this, by default this option is disabled.
1648 
1649 	  Say Y here if you want to receive warnings for all uses of
1650 	  unseeded randomness.  This will be of use primarily for
1651 	  those developers interested in improving the security of
1652 	  Linux kernels running on their architecture (or
1653 	  subarchitecture).
1654 
1655 config DEBUG_KOBJECT
1656 	bool "kobject debugging"
1657 	depends on DEBUG_KERNEL
1658 	help
1659 	  If you say Y here, some extra kobject debugging messages will be sent
1660 	  to the syslog.
1661 
1662 config DEBUG_KOBJECT_RELEASE
1663 	bool "kobject release debugging"
1664 	depends on DEBUG_OBJECTS_TIMERS
1665 	help
1666 	  kobjects are reference counted objects.  This means that their
1667 	  last reference count put is not predictable, and the kobject can
1668 	  live on past the point at which a driver decides to drop its
1669 	  initial reference to the kobject gained on allocation.  An
1670 	  example of this would be a struct device which has just been
1671 	  unregistered.
1672 
1673 	  However, some buggy drivers assume that after such an operation,
1674 	  the memory backing the kobject can be immediately freed.  This
1675 	  goes completely against the principles of a refcounted object.
1676 
1677 	  If you say Y here, the kernel will delay the release of kobjects
1678 	  on the last reference count to improve the visibility of this
1679 	  kind of kobject release bug.
1680 
1681 config HAVE_DEBUG_BUGVERBOSE
1682 	bool
1683 
1684 menu "Debug kernel data structures"
1685 
1686 config DEBUG_LIST
1687 	bool "Debug linked list manipulation"
1688 	depends on DEBUG_KERNEL
1689 	select LIST_HARDENED
1690 	help
1691 	  Enable this to turn on extended checks in the linked-list walking
1692 	  routines.
1693 
1694 	  This option trades better quality error reports for performance, and
1695 	  is more suitable for kernel debugging. If you care about performance,
1696 	  you should only enable CONFIG_LIST_HARDENED instead.
1697 
1698 	  If unsure, say N.
1699 
1700 config DEBUG_PLIST
1701 	bool "Debug priority linked list manipulation"
1702 	depends on DEBUG_KERNEL
1703 	help
1704 	  Enable this to turn on extended checks in the priority-ordered
1705 	  linked-list (plist) walking routines.  This checks the entire
1706 	  list multiple times during each manipulation.
1707 
1708 	  If unsure, say N.
1709 
1710 config DEBUG_SG
1711 	bool "Debug SG table operations"
1712 	depends on DEBUG_KERNEL
1713 	help
1714 	  Enable this to turn on checks on scatter-gather tables. This can
1715 	  help find problems with drivers that do not properly initialize
1716 	  their sg tables.
1717 
1718 	  If unsure, say N.
1719 
1720 config DEBUG_NOTIFIERS
1721 	bool "Debug notifier call chains"
1722 	depends on DEBUG_KERNEL
1723 	help
1724 	  Enable this to turn on sanity checking for notifier call chains.
1725 	  This is most useful for kernel developers to make sure that
1726 	  modules properly unregister themselves from notifier chains.
1727 	  This is a relatively cheap check but if you care about maximum
1728 	  performance, say N.
1729 
1730 config DEBUG_CLOSURES
1731 	bool "Debug closures (bcache async widgits)"
1732 	depends on CLOSURES
1733 	select DEBUG_FS
1734 	help
1735 	  Keeps all active closures in a linked list and provides a debugfs
1736 	  interface to list them, which makes it possible to see asynchronous
1737 	  operations that get stuck.
1738 
1739 config DEBUG_MAPLE_TREE
1740 	bool "Debug maple trees"
1741 	depends on DEBUG_KERNEL
1742 	help
1743 	  Enable maple tree debugging information and extra validations.
1744 
1745 	  If unsure, say N.
1746 
1747 endmenu
1748 
1749 source "kernel/rcu/Kconfig.debug"
1750 
1751 config DEBUG_WQ_FORCE_RR_CPU
1752 	bool "Force round-robin CPU selection for unbound work items"
1753 	depends on DEBUG_KERNEL
1754 	default n
1755 	help
1756 	  Workqueue used to implicitly guarantee that work items queued
1757 	  without explicit CPU specified are put on the local CPU.  This
1758 	  guarantee is no longer true and while local CPU is still
1759 	  preferred work items may be put on foreign CPUs.  Kernel
1760 	  parameter "workqueue.debug_force_rr_cpu" is added to force
1761 	  round-robin CPU selection to flush out usages which depend on the
1762 	  now broken guarantee.  This config option enables the debug
1763 	  feature by default.  When enabled, memory and cache locality will
1764 	  be impacted.
1765 
1766 config CPU_HOTPLUG_STATE_CONTROL
1767 	bool "Enable CPU hotplug state control"
1768 	depends on DEBUG_KERNEL
1769 	depends on HOTPLUG_CPU
1770 	default n
1771 	help
1772 	  Allows to write steps between "offline" and "online" to the CPUs
1773 	  sysfs target file so states can be stepped granular. This is a debug
1774 	  option for now as the hotplug machinery cannot be stopped and
1775 	  restarted at arbitrary points yet.
1776 
1777 	  Say N if your are unsure.
1778 
1779 config LATENCYTOP
1780 	bool "Latency measuring infrastructure"
1781 	depends on DEBUG_KERNEL
1782 	depends on STACKTRACE_SUPPORT
1783 	depends on PROC_FS
1784 	depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
1785 	select KALLSYMS
1786 	select KALLSYMS_ALL
1787 	select STACKTRACE
1788 	select SCHEDSTATS
1789 	help
1790 	  Enable this option if you want to use the LatencyTOP tool
1791 	  to find out which userspace is blocking on what kernel operations.
1792 
1793 config DEBUG_CGROUP_REF
1794 	bool "Disable inlining of cgroup css reference count functions"
1795 	depends on DEBUG_KERNEL
1796 	depends on CGROUPS
1797 	depends on KPROBES
1798 	default n
1799 	help
1800 	  Force cgroup css reference count functions to not be inlined so
1801 	  that they can be kprobed for debugging.
1802 
1803 source "kernel/trace/Kconfig"
1804 
1805 config PROVIDE_OHCI1394_DMA_INIT
1806 	bool "Remote debugging over FireWire early on boot"
1807 	depends on PCI && X86
1808 	help
1809 	  If you want to debug problems which hang or crash the kernel early
1810 	  on boot and the crashing machine has a FireWire port, you can use
1811 	  this feature to remotely access the memory of the crashed machine
1812 	  over FireWire. This employs remote DMA as part of the OHCI1394
1813 	  specification which is now the standard for FireWire controllers.
1814 
1815 	  With remote DMA, you can monitor the printk buffer remotely using
1816 	  firescope and access all memory below 4GB using fireproxy from gdb.
1817 	  Even controlling a kernel debugger is possible using remote DMA.
1818 
1819 	  Usage:
1820 
1821 	  If ohci1394_dma=early is used as boot parameter, it will initialize
1822 	  all OHCI1394 controllers which are found in the PCI config space.
1823 
1824 	  As all changes to the FireWire bus such as enabling and disabling
1825 	  devices cause a bus reset and thereby disable remote DMA for all
1826 	  devices, be sure to have the cable plugged and FireWire enabled on
1827 	  the debugging host before booting the debug target for debugging.
1828 
1829 	  This code (~1k) is freed after boot. By then, the firewire stack
1830 	  in charge of the OHCI-1394 controllers should be used instead.
1831 
1832 	  See Documentation/core-api/debugging-via-ohci1394.rst for more information.
1833 
1834 source "samples/Kconfig"
1835 
1836 config ARCH_HAS_DEVMEM_IS_ALLOWED
1837 	bool
1838 
1839 config STRICT_DEVMEM
1840 	bool "Filter access to /dev/mem"
1841 	depends on MMU && DEVMEM
1842 	depends on ARCH_HAS_DEVMEM_IS_ALLOWED || GENERIC_LIB_DEVMEM_IS_ALLOWED
1843 	default y if PPC || X86 || ARM64
1844 	help
1845 	  If this option is disabled, you allow userspace (root) access to all
1846 	  of memory, including kernel and userspace memory. Accidental
1847 	  access to this is obviously disastrous, but specific access can
1848 	  be used by people debugging the kernel. Note that with PAT support
1849 	  enabled, even in this case there are restrictions on /dev/mem
1850 	  use due to the cache aliasing requirements.
1851 
1852 	  If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
1853 	  file only allows userspace access to PCI space and the BIOS code and
1854 	  data regions.  This is sufficient for dosemu and X and all common
1855 	  users of /dev/mem.
1856 
1857 	  If in doubt, say Y.
1858 
1859 config IO_STRICT_DEVMEM
1860 	bool "Filter I/O access to /dev/mem"
1861 	depends on STRICT_DEVMEM
1862 	help
1863 	  If this option is disabled, you allow userspace (root) access to all
1864 	  io-memory regardless of whether a driver is actively using that
1865 	  range.  Accidental access to this is obviously disastrous, but
1866 	  specific access can be used by people debugging kernel drivers.
1867 
1868 	  If this option is switched on, the /dev/mem file only allows
1869 	  userspace access to *idle* io-memory ranges (see /proc/iomem) This
1870 	  may break traditional users of /dev/mem (dosemu, legacy X, etc...)
1871 	  if the driver using a given range cannot be disabled.
1872 
1873 	  If in doubt, say Y.
1874 
1875 menu "$(SRCARCH) Debugging"
1876 
1877 source "arch/$(SRCARCH)/Kconfig.debug"
1878 
1879 endmenu
1880 
1881 menu "Kernel Testing and Coverage"
1882 
1883 source "lib/kunit/Kconfig"
1884 
1885 config NOTIFIER_ERROR_INJECTION
1886 	tristate "Notifier error injection"
1887 	depends on DEBUG_KERNEL
1888 	select DEBUG_FS
1889 	help
1890 	  This option provides the ability to inject artificial errors to
1891 	  specified notifier chain callbacks. It is useful to test the error
1892 	  handling of notifier call chain failures.
1893 
1894 	  Say N if unsure.
1895 
1896 config PM_NOTIFIER_ERROR_INJECT
1897 	tristate "PM notifier error injection module"
1898 	depends on PM && NOTIFIER_ERROR_INJECTION
1899 	default m if PM_DEBUG
1900 	help
1901 	  This option provides the ability to inject artificial errors to
1902 	  PM notifier chain callbacks.  It is controlled through debugfs
1903 	  interface /sys/kernel/debug/notifier-error-inject/pm
1904 
1905 	  If the notifier call chain should be failed with some events
1906 	  notified, write the error code to "actions/<notifier event>/error".
1907 
1908 	  Example: Inject PM suspend error (-12 = -ENOMEM)
1909 
1910 	  # cd /sys/kernel/debug/notifier-error-inject/pm/
1911 	  # echo -12 > actions/PM_SUSPEND_PREPARE/error
1912 	  # echo mem > /sys/power/state
1913 	  bash: echo: write error: Cannot allocate memory
1914 
1915 	  To compile this code as a module, choose M here: the module will
1916 	  be called pm-notifier-error-inject.
1917 
1918 	  If unsure, say N.
1919 
1920 config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1921 	tristate "OF reconfig notifier error injection module"
1922 	depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
1923 	help
1924 	  This option provides the ability to inject artificial errors to
1925 	  OF reconfig notifier chain callbacks.  It is controlled
1926 	  through debugfs interface under
1927 	  /sys/kernel/debug/notifier-error-inject/OF-reconfig/
1928 
1929 	  If the notifier call chain should be failed with some events
1930 	  notified, write the error code to "actions/<notifier event>/error".
1931 
1932 	  To compile this code as a module, choose M here: the module will
1933 	  be called of-reconfig-notifier-error-inject.
1934 
1935 	  If unsure, say N.
1936 
1937 config NETDEV_NOTIFIER_ERROR_INJECT
1938 	tristate "Netdev notifier error injection module"
1939 	depends on NET && NOTIFIER_ERROR_INJECTION
1940 	help
1941 	  This option provides the ability to inject artificial errors to
1942 	  netdevice notifier chain callbacks.  It is controlled through debugfs
1943 	  interface /sys/kernel/debug/notifier-error-inject/netdev
1944 
1945 	  If the notifier call chain should be failed with some events
1946 	  notified, write the error code to "actions/<notifier event>/error".
1947 
1948 	  Example: Inject netdevice mtu change error (-22 = -EINVAL)
1949 
1950 	  # cd /sys/kernel/debug/notifier-error-inject/netdev
1951 	  # echo -22 > actions/NETDEV_CHANGEMTU/error
1952 	  # ip link set eth0 mtu 1024
1953 	  RTNETLINK answers: Invalid argument
1954 
1955 	  To compile this code as a module, choose M here: the module will
1956 	  be called netdev-notifier-error-inject.
1957 
1958 	  If unsure, say N.
1959 
1960 config FUNCTION_ERROR_INJECTION
1961 	bool "Fault-injections of functions"
1962 	depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1963 	help
1964 	  Add fault injections into various functions that are annotated with
1965 	  ALLOW_ERROR_INJECTION() in the kernel. BPF may also modify the return
1966 	  value of these functions. This is useful to test error paths of code.
1967 
1968 	  If unsure, say N
1969 
1970 config FAULT_INJECTION
1971 	bool "Fault-injection framework"
1972 	depends on DEBUG_KERNEL
1973 	help
1974 	  Provide fault-injection framework.
1975 	  For more details, see Documentation/fault-injection/.
1976 
1977 config FAILSLAB
1978 	bool "Fault-injection capability for kmalloc"
1979 	depends on FAULT_INJECTION
1980 	help
1981 	  Provide fault-injection capability for kmalloc.
1982 
1983 config FAIL_PAGE_ALLOC
1984 	bool "Fault-injection capability for alloc_pages()"
1985 	depends on FAULT_INJECTION
1986 	help
1987 	  Provide fault-injection capability for alloc_pages().
1988 
1989 config FAULT_INJECTION_USERCOPY
1990 	bool "Fault injection capability for usercopy functions"
1991 	depends on FAULT_INJECTION
1992 	help
1993 	  Provides fault-injection capability to inject failures
1994 	  in usercopy functions (copy_from_user(), get_user(), ...).
1995 
1996 config FAIL_MAKE_REQUEST
1997 	bool "Fault-injection capability for disk IO"
1998 	depends on FAULT_INJECTION && BLOCK
1999 	help
2000 	  Provide fault-injection capability for disk IO.
2001 
2002 config FAIL_IO_TIMEOUT
2003 	bool "Fault-injection capability for faking disk interrupts"
2004 	depends on FAULT_INJECTION && BLOCK
2005 	help
2006 	  Provide fault-injection capability on end IO handling. This
2007 	  will make the block layer "forget" an interrupt as configured,
2008 	  thus exercising the error handling.
2009 
2010 	  Only works with drivers that use the generic timeout handling,
2011 	  for others it won't do anything.
2012 
2013 config FAIL_FUTEX
2014 	bool "Fault-injection capability for futexes"
2015 	select DEBUG_FS
2016 	depends on FAULT_INJECTION && FUTEX
2017 	help
2018 	  Provide fault-injection capability for futexes.
2019 
2020 config FAULT_INJECTION_DEBUG_FS
2021 	bool "Debugfs entries for fault-injection capabilities"
2022 	depends on FAULT_INJECTION && SYSFS && DEBUG_FS
2023 	help
2024 	  Enable configuration of fault-injection capabilities via debugfs.
2025 
2026 config FAIL_FUNCTION
2027 	bool "Fault-injection capability for functions"
2028 	depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
2029 	help
2030 	  Provide function-based fault-injection capability.
2031 	  This will allow you to override a specific function with a return
2032 	  with given return value. As a result, function caller will see
2033 	  an error value and have to handle it. This is useful to test the
2034 	  error handling in various subsystems.
2035 
2036 config FAIL_MMC_REQUEST
2037 	bool "Fault-injection capability for MMC IO"
2038 	depends on FAULT_INJECTION_DEBUG_FS && MMC
2039 	help
2040 	  Provide fault-injection capability for MMC IO.
2041 	  This will make the mmc core return data errors. This is
2042 	  useful to test the error handling in the mmc block device
2043 	  and to test how the mmc host driver handles retries from
2044 	  the block device.
2045 
2046 config FAIL_SUNRPC
2047 	bool "Fault-injection capability for SunRPC"
2048 	depends on FAULT_INJECTION_DEBUG_FS && SUNRPC_DEBUG
2049 	help
2050 	  Provide fault-injection capability for SunRPC and
2051 	  its consumers.
2052 
2053 config FAULT_INJECTION_CONFIGFS
2054 	bool "Configfs interface for fault-injection capabilities"
2055 	depends on FAULT_INJECTION
2056 	select CONFIGFS_FS
2057 	help
2058 	  This option allows configfs-based drivers to dynamically configure
2059 	  fault-injection via configfs.  Each parameter for driver-specific
2060 	  fault-injection can be made visible as a configfs attribute in a
2061 	  configfs group.
2062 
2063 
2064 config FAULT_INJECTION_STACKTRACE_FILTER
2065 	bool "stacktrace filter for fault-injection capabilities"
2066 	depends on FAULT_INJECTION
2067 	depends on (FAULT_INJECTION_DEBUG_FS || FAULT_INJECTION_CONFIGFS) && STACKTRACE_SUPPORT
2068 	select STACKTRACE
2069 	depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
2070 	help
2071 	  Provide stacktrace filter for fault-injection capabilities
2072 
2073 config ARCH_HAS_KCOV
2074 	bool
2075 	help
2076 	  An architecture should select this when it can successfully
2077 	  build and run with CONFIG_KCOV. This typically requires
2078 	  disabling instrumentation for some early boot code.
2079 
2080 config CC_HAS_SANCOV_TRACE_PC
2081 	def_bool $(cc-option,-fsanitize-coverage=trace-pc)
2082 
2083 
2084 config KCOV
2085 	bool "Code coverage for fuzzing"
2086 	depends on ARCH_HAS_KCOV
2087 	depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
2088 	depends on !ARCH_WANTS_NO_INSTR || HAVE_NOINSTR_HACK || \
2089 		   GCC_VERSION >= 120000 || CC_IS_CLANG
2090 	select DEBUG_FS
2091 	select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
2092 	select OBJTOOL if HAVE_NOINSTR_HACK
2093 	help
2094 	  KCOV exposes kernel code coverage information in a form suitable
2095 	  for coverage-guided fuzzing (randomized testing).
2096 
2097 	  For more details, see Documentation/dev-tools/kcov.rst.
2098 
2099 config KCOV_ENABLE_COMPARISONS
2100 	bool "Enable comparison operands collection by KCOV"
2101 	depends on KCOV
2102 	depends on $(cc-option,-fsanitize-coverage=trace-cmp)
2103 	help
2104 	  KCOV also exposes operands of every comparison in the instrumented
2105 	  code along with operand sizes and PCs of the comparison instructions.
2106 	  These operands can be used by fuzzing engines to improve the quality
2107 	  of fuzzing coverage.
2108 
2109 config KCOV_INSTRUMENT_ALL
2110 	bool "Instrument all code by default"
2111 	depends on KCOV
2112 	default y
2113 	help
2114 	  If you are doing generic system call fuzzing (like e.g. syzkaller),
2115 	  then you will want to instrument the whole kernel and you should
2116 	  say y here. If you are doing more targeted fuzzing (like e.g.
2117 	  filesystem fuzzing with AFL) then you will want to enable coverage
2118 	  for more specific subsets of files, and should say n here.
2119 
2120 config KCOV_IRQ_AREA_SIZE
2121 	hex "Size of interrupt coverage collection area in words"
2122 	depends on KCOV
2123 	default 0x40000
2124 	help
2125 	  KCOV uses preallocated per-cpu areas to collect coverage from
2126 	  soft interrupts. This specifies the size of those areas in the
2127 	  number of unsigned long words.
2128 
2129 menuconfig RUNTIME_TESTING_MENU
2130 	bool "Runtime Testing"
2131 	default y
2132 
2133 if RUNTIME_TESTING_MENU
2134 
2135 config TEST_DHRY
2136 	tristate "Dhrystone benchmark test"
2137 	help
2138 	  Enable this to include the Dhrystone 2.1 benchmark.  This test
2139 	  calculates the number of Dhrystones per second, and the number of
2140 	  DMIPS (Dhrystone MIPS) obtained when the Dhrystone score is divided
2141 	  by 1757 (the number of Dhrystones per second obtained on the VAX
2142 	  11/780, nominally a 1 MIPS machine).
2143 
2144 	  To run the benchmark, it needs to be enabled explicitly, either from
2145 	  the kernel command line (when built-in), or from userspace (when
2146 	  built-in or modular).
2147 
2148 	  Run once during kernel boot:
2149 
2150 	      test_dhry.run
2151 
2152 	  Set number of iterations from kernel command line:
2153 
2154 	      test_dhry.iterations=<n>
2155 
2156 	  Set number of iterations from userspace:
2157 
2158 	      echo <n> > /sys/module/test_dhry/parameters/iterations
2159 
2160 	  Trigger manual run from userspace:
2161 
2162 	      echo y > /sys/module/test_dhry/parameters/run
2163 
2164 	  If the number of iterations is <= 0, the test will devise a suitable
2165 	  number of iterations (test runs for at least 2s) automatically.
2166 	  This process takes ca. 4s.
2167 
2168 	  If unsure, say N.
2169 
2170 config LKDTM
2171 	tristate "Linux Kernel Dump Test Tool Module"
2172 	depends on DEBUG_FS
2173 	help
2174 	This module enables testing of the different dumping mechanisms by
2175 	inducing system failures at predefined crash points.
2176 	If you don't need it: say N
2177 	Choose M here to compile this code as a module. The module will be
2178 	called lkdtm.
2179 
2180 	Documentation on how to use the module can be found in
2181 	Documentation/fault-injection/provoke-crashes.rst
2182 
2183 config CPUMASK_KUNIT_TEST
2184 	tristate "KUnit test for cpumask" if !KUNIT_ALL_TESTS
2185 	depends on KUNIT
2186 	default KUNIT_ALL_TESTS
2187 	help
2188 	  Enable to turn on cpumask tests, running at boot or module load time.
2189 
2190 	  For more information on KUnit and unit tests in general, please refer
2191 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2192 
2193 	  If unsure, say N.
2194 
2195 config TEST_LIST_SORT
2196 	tristate "Linked list sorting test" if !KUNIT_ALL_TESTS
2197 	depends on KUNIT
2198 	default KUNIT_ALL_TESTS
2199 	help
2200 	  Enable this to turn on 'list_sort()' function test. This test is
2201 	  executed only once during system boot (so affects only boot time),
2202 	  or at module load time.
2203 
2204 	  If unsure, say N.
2205 
2206 config TEST_MIN_HEAP
2207 	tristate "Min heap test"
2208 	depends on DEBUG_KERNEL || m
2209 	help
2210 	  Enable this to turn on min heap function tests. This test is
2211 	  executed only once during system boot (so affects only boot time),
2212 	  or at module load time.
2213 
2214 	  If unsure, say N.
2215 
2216 config TEST_SORT
2217 	tristate "Array-based sort test" if !KUNIT_ALL_TESTS
2218 	depends on KUNIT
2219 	default KUNIT_ALL_TESTS
2220 	help
2221 	  This option enables the self-test function of 'sort()' at boot,
2222 	  or at module load time.
2223 
2224 	  If unsure, say N.
2225 
2226 config TEST_DIV64
2227 	tristate "64bit/32bit division and modulo test"
2228 	depends on DEBUG_KERNEL || m
2229 	help
2230 	  Enable this to turn on 'do_div()' function test. This test is
2231 	  executed only once during system boot (so affects only boot time),
2232 	  or at module load time.
2233 
2234 	  If unsure, say N.
2235 
2236 config TEST_IOV_ITER
2237 	tristate "Test iov_iter operation" if !KUNIT_ALL_TESTS
2238 	depends on KUNIT
2239 	depends on MMU
2240 	default KUNIT_ALL_TESTS
2241 	help
2242 	  Enable this to turn on testing of the operation of the I/O iterator
2243 	  (iov_iter). This test is executed only once during system boot (so
2244 	  affects only boot time), or at module load time.
2245 
2246 	  If unsure, say N.
2247 
2248 config KPROBES_SANITY_TEST
2249 	tristate "Kprobes sanity tests" if !KUNIT_ALL_TESTS
2250 	depends on DEBUG_KERNEL
2251 	depends on KPROBES
2252 	depends on KUNIT
2253 	select STACKTRACE if ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
2254 	default KUNIT_ALL_TESTS
2255 	help
2256 	  This option provides for testing basic kprobes functionality on
2257 	  boot. Samples of kprobe and kretprobe are inserted and
2258 	  verified for functionality.
2259 
2260 	  Say N if you are unsure.
2261 
2262 config FPROBE_SANITY_TEST
2263 	bool "Self test for fprobe"
2264 	depends on DEBUG_KERNEL
2265 	depends on FPROBE
2266 	depends on KUNIT=y
2267 	help
2268 	  This option will enable testing the fprobe when the system boot.
2269 	  A series of tests are made to verify that the fprobe is functioning
2270 	  properly.
2271 
2272 	  Say N if you are unsure.
2273 
2274 config BACKTRACE_SELF_TEST
2275 	tristate "Self test for the backtrace code"
2276 	depends on DEBUG_KERNEL
2277 	help
2278 	  This option provides a kernel module that can be used to test
2279 	  the kernel stack backtrace code. This option is not useful
2280 	  for distributions or general kernels, but only for kernel
2281 	  developers working on architecture code.
2282 
2283 	  Note that if you want to also test saved backtraces, you will
2284 	  have to enable STACKTRACE as well.
2285 
2286 	  Say N if you are unsure.
2287 
2288 config TEST_REF_TRACKER
2289 	tristate "Self test for reference tracker"
2290 	depends on DEBUG_KERNEL && STACKTRACE_SUPPORT
2291 	select REF_TRACKER
2292 	help
2293 	  This option provides a kernel module performing tests
2294 	  using reference tracker infrastructure.
2295 
2296 	  Say N if you are unsure.
2297 
2298 config RBTREE_TEST
2299 	tristate "Red-Black tree test"
2300 	depends on DEBUG_KERNEL
2301 	help
2302 	  A benchmark measuring the performance of the rbtree library.
2303 	  Also includes rbtree invariant checks.
2304 
2305 config REED_SOLOMON_TEST
2306 	tristate "Reed-Solomon library test"
2307 	depends on DEBUG_KERNEL || m
2308 	select REED_SOLOMON
2309 	select REED_SOLOMON_ENC16
2310 	select REED_SOLOMON_DEC16
2311 	help
2312 	  This option enables the self-test function of rslib at boot,
2313 	  or at module load time.
2314 
2315 	  If unsure, say N.
2316 
2317 config INTERVAL_TREE_TEST
2318 	tristate "Interval tree test"
2319 	depends on DEBUG_KERNEL
2320 	select INTERVAL_TREE
2321 	help
2322 	  A benchmark measuring the performance of the interval tree library
2323 
2324 config PERCPU_TEST
2325 	tristate "Per cpu operations test"
2326 	depends on m && DEBUG_KERNEL
2327 	help
2328 	  Enable this option to build test module which validates per-cpu
2329 	  operations.
2330 
2331 	  If unsure, say N.
2332 
2333 config ATOMIC64_SELFTEST
2334 	tristate "Perform an atomic64_t self-test"
2335 	help
2336 	  Enable this option to test the atomic64_t functions at boot or
2337 	  at module load time.
2338 
2339 	  If unsure, say N.
2340 
2341 config ASYNC_RAID6_TEST
2342 	tristate "Self test for hardware accelerated raid6 recovery"
2343 	depends on ASYNC_RAID6_RECOV
2344 	select ASYNC_MEMCPY
2345 	help
2346 	  This is a one-shot self test that permutes through the
2347 	  recovery of all the possible two disk failure scenarios for a
2348 	  N-disk array.  Recovery is performed with the asynchronous
2349 	  raid6 recovery routines, and will optionally use an offload
2350 	  engine if one is available.
2351 
2352 	  If unsure, say N.
2353 
2354 config TEST_HEXDUMP
2355 	tristate "Test functions located in the hexdump module at runtime"
2356 
2357 config STRING_KUNIT_TEST
2358 	tristate "KUnit test string functions at runtime" if !KUNIT_ALL_TESTS
2359 	depends on KUNIT
2360 	default KUNIT_ALL_TESTS
2361 
2362 config STRING_HELPERS_KUNIT_TEST
2363 	tristate "KUnit test string helpers at runtime" if !KUNIT_ALL_TESTS
2364 	depends on KUNIT
2365 	default KUNIT_ALL_TESTS
2366 
2367 config TEST_KSTRTOX
2368 	tristate "Test kstrto*() family of functions at runtime"
2369 
2370 config TEST_PRINTF
2371 	tristate "Test printf() family of functions at runtime"
2372 
2373 config TEST_SCANF
2374 	tristate "Test scanf() family of functions at runtime"
2375 
2376 config TEST_BITMAP
2377 	tristate "Test bitmap_*() family of functions at runtime"
2378 	help
2379 	  Enable this option to test the bitmap functions at boot.
2380 
2381 	  If unsure, say N.
2382 
2383 config TEST_UUID
2384 	tristate "Test functions located in the uuid module at runtime"
2385 
2386 config TEST_XARRAY
2387 	tristate "Test the XArray code at runtime"
2388 
2389 config TEST_MAPLE_TREE
2390 	tristate "Test the Maple Tree code at runtime or module load"
2391 	help
2392 	  Enable this option to test the maple tree code functions at boot, or
2393 	  when the module is loaded. Enable "Debug Maple Trees" will enable
2394 	  more verbose output on failures.
2395 
2396 	  If unsure, say N.
2397 
2398 config TEST_RHASHTABLE
2399 	tristate "Perform selftest on resizable hash table"
2400 	help
2401 	  Enable this option to test the rhashtable functions at boot.
2402 
2403 	  If unsure, say N.
2404 
2405 config TEST_IDA
2406 	tristate "Perform selftest on IDA functions"
2407 
2408 config TEST_PARMAN
2409 	tristate "Perform selftest on priority array manager"
2410 	depends on PARMAN
2411 	help
2412 	  Enable this option to test priority array manager on boot
2413 	  (or module load).
2414 
2415 	  If unsure, say N.
2416 
2417 config TEST_IRQ_TIMINGS
2418 	bool "IRQ timings selftest"
2419 	depends on IRQ_TIMINGS
2420 	help
2421 	  Enable this option to test the irq timings code on boot.
2422 
2423 	  If unsure, say N.
2424 
2425 config TEST_LKM
2426 	tristate "Test module loading with 'hello world' module"
2427 	depends on m
2428 	help
2429 	  This builds the "test_module" module that emits "Hello, world"
2430 	  on printk when loaded. It is designed to be used for basic
2431 	  evaluation of the module loading subsystem (for example when
2432 	  validating module verification). It lacks any extra dependencies,
2433 	  and will not normally be loaded by the system unless explicitly
2434 	  requested by name.
2435 
2436 	  If unsure, say N.
2437 
2438 config TEST_BITOPS
2439 	tristate "Test module for compilation of bitops operations"
2440 	depends on m
2441 	help
2442 	  This builds the "test_bitops" module that is much like the
2443 	  TEST_LKM module except that it does a basic exercise of the
2444 	  set/clear_bit macros and get_count_order/long to make sure there are
2445 	  no compiler warnings from C=1 sparse checker or -Wextra
2446 	  compilations. It has no dependencies and doesn't run or load unless
2447 	  explicitly requested by name.  for example: modprobe test_bitops.
2448 
2449 	  If unsure, say N.
2450 
2451 config TEST_VMALLOC
2452 	tristate "Test module for stress/performance analysis of vmalloc allocator"
2453 	default n
2454        depends on MMU
2455 	depends on m
2456 	help
2457 	  This builds the "test_vmalloc" module that should be used for
2458 	  stress and performance analysis. So, any new change for vmalloc
2459 	  subsystem can be evaluated from performance and stability point
2460 	  of view.
2461 
2462 	  If unsure, say N.
2463 
2464 config TEST_USER_COPY
2465 	tristate "Test user/kernel boundary protections"
2466 	depends on m
2467 	help
2468 	  This builds the "test_user_copy" module that runs sanity checks
2469 	  on the copy_to/from_user infrastructure, making sure basic
2470 	  user/kernel boundary testing is working. If it fails to load,
2471 	  a regression has been detected in the user/kernel memory boundary
2472 	  protections.
2473 
2474 	  If unsure, say N.
2475 
2476 config TEST_BPF
2477 	tristate "Test BPF filter functionality"
2478 	depends on m && NET
2479 	help
2480 	  This builds the "test_bpf" module that runs various test vectors
2481 	  against the BPF interpreter or BPF JIT compiler depending on the
2482 	  current setting. This is in particular useful for BPF JIT compiler
2483 	  development, but also to run regression tests against changes in
2484 	  the interpreter code. It also enables test stubs for eBPF maps and
2485 	  verifier used by user space verifier testsuite.
2486 
2487 	  If unsure, say N.
2488 
2489 config TEST_BLACKHOLE_DEV
2490 	tristate "Test blackhole netdev functionality"
2491 	depends on m && NET
2492 	help
2493 	  This builds the "test_blackhole_dev" module that validates the
2494 	  data path through this blackhole netdev.
2495 
2496 	  If unsure, say N.
2497 
2498 config FIND_BIT_BENCHMARK
2499 	tristate "Test find_bit functions"
2500 	help
2501 	  This builds the "test_find_bit" module that measure find_*_bit()
2502 	  functions performance.
2503 
2504 	  If unsure, say N.
2505 
2506 config TEST_FIRMWARE
2507 	tristate "Test firmware loading via userspace interface"
2508 	depends on FW_LOADER
2509 	help
2510 	  This builds the "test_firmware" module that creates a userspace
2511 	  interface for testing firmware loading. This can be used to
2512 	  control the triggering of firmware loading without needing an
2513 	  actual firmware-using device. The contents can be rechecked by
2514 	  userspace.
2515 
2516 	  If unsure, say N.
2517 
2518 config TEST_SYSCTL
2519 	tristate "sysctl test driver"
2520 	depends on PROC_SYSCTL
2521 	help
2522 	  This builds the "test_sysctl" module. This driver enables to test the
2523 	  proc sysctl interfaces available to drivers safely without affecting
2524 	  production knobs which might alter system functionality.
2525 
2526 	  If unsure, say N.
2527 
2528 config BITFIELD_KUNIT
2529 	tristate "KUnit test bitfield functions at runtime" if !KUNIT_ALL_TESTS
2530 	depends on KUNIT
2531 	default KUNIT_ALL_TESTS
2532 	help
2533 	  Enable this option to test the bitfield functions at boot.
2534 
2535 	  KUnit tests run during boot and output the results to the debug log
2536 	  in TAP format (http://testanything.org/). Only useful for kernel devs
2537 	  running the KUnit test harness, and not intended for inclusion into a
2538 	  production build.
2539 
2540 	  For more information on KUnit and unit tests in general please refer
2541 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2542 
2543 	  If unsure, say N.
2544 
2545 config CHECKSUM_KUNIT
2546 	tristate "KUnit test checksum functions at runtime" if !KUNIT_ALL_TESTS
2547 	depends on KUNIT
2548 	default KUNIT_ALL_TESTS
2549 	help
2550 	  Enable this option to test the checksum functions at boot.
2551 
2552 	  KUnit tests run during boot and output the results to the debug log
2553 	  in TAP format (http://testanything.org/). Only useful for kernel devs
2554 	  running the KUnit test harness, and not intended for inclusion into a
2555 	  production build.
2556 
2557 	  For more information on KUnit and unit tests in general please refer
2558 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2559 
2560 	  If unsure, say N.
2561 
2562 config HASH_KUNIT_TEST
2563 	tristate "KUnit Test for integer hash functions" if !KUNIT_ALL_TESTS
2564 	depends on KUNIT
2565 	default KUNIT_ALL_TESTS
2566 	help
2567 	  Enable this option to test the kernel's string (<linux/stringhash.h>), and
2568 	  integer (<linux/hash.h>) hash functions on boot.
2569 
2570 	  KUnit tests run during boot and output the results to the debug log
2571 	  in TAP format (https://testanything.org/). Only useful for kernel devs
2572 	  running the KUnit test harness, and not intended for inclusion into a
2573 	  production build.
2574 
2575 	  For more information on KUnit and unit tests in general please refer
2576 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2577 
2578 	  This is intended to help people writing architecture-specific
2579 	  optimized versions. If unsure, say N.
2580 
2581 config RESOURCE_KUNIT_TEST
2582 	tristate "KUnit test for resource API" if !KUNIT_ALL_TESTS
2583 	depends on KUNIT
2584 	default KUNIT_ALL_TESTS
2585 	help
2586 	  This builds the resource API unit test.
2587 	  Tests the logic of API provided by resource.c and ioport.h.
2588 	  For more information on KUnit and unit tests in general please refer
2589 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2590 
2591 	  If unsure, say N.
2592 
2593 config SYSCTL_KUNIT_TEST
2594 	tristate "KUnit test for sysctl" if !KUNIT_ALL_TESTS
2595 	depends on KUNIT
2596 	default KUNIT_ALL_TESTS
2597 	help
2598 	  This builds the proc sysctl unit test, which runs on boot.
2599 	  Tests the API contract and implementation correctness of sysctl.
2600 	  For more information on KUnit and unit tests in general please refer
2601 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2602 
2603 	  If unsure, say N.
2604 
2605 config LIST_KUNIT_TEST
2606 	tristate "KUnit Test for Kernel Linked-list structures" if !KUNIT_ALL_TESTS
2607 	depends on KUNIT
2608 	default KUNIT_ALL_TESTS
2609 	help
2610 	  This builds the linked list KUnit test suite.
2611 	  It tests that the API and basic functionality of the list_head type
2612 	  and associated macros.
2613 
2614 	  KUnit tests run during boot and output the results to the debug log
2615 	  in TAP format (https://testanything.org/). Only useful for kernel devs
2616 	  running the KUnit test harness, and not intended for inclusion into a
2617 	  production build.
2618 
2619 	  For more information on KUnit and unit tests in general please refer
2620 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2621 
2622 	  If unsure, say N.
2623 
2624 config HASHTABLE_KUNIT_TEST
2625 	tristate "KUnit Test for Kernel Hashtable structures" if !KUNIT_ALL_TESTS
2626 	depends on KUNIT
2627 	default KUNIT_ALL_TESTS
2628 	help
2629 	  This builds the hashtable KUnit test suite.
2630 	  It tests the basic functionality of the API defined in
2631 	  include/linux/hashtable.h. For more information on KUnit and
2632 	  unit tests in general please refer to the KUnit documentation
2633 	  in Documentation/dev-tools/kunit/.
2634 
2635 	  If unsure, say N.
2636 
2637 config LINEAR_RANGES_TEST
2638 	tristate "KUnit test for linear_ranges"
2639 	depends on KUNIT
2640 	select LINEAR_RANGES
2641 	help
2642 	  This builds the linear_ranges unit test, which runs on boot.
2643 	  Tests the linear_ranges logic correctness.
2644 	  For more information on KUnit and unit tests in general please refer
2645 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2646 
2647 	  If unsure, say N.
2648 
2649 config CMDLINE_KUNIT_TEST
2650 	tristate "KUnit test for cmdline API" if !KUNIT_ALL_TESTS
2651 	depends on KUNIT
2652 	default KUNIT_ALL_TESTS
2653 	help
2654 	  This builds the cmdline API unit test.
2655 	  Tests the logic of API provided by cmdline.c.
2656 	  For more information on KUnit and unit tests in general please refer
2657 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2658 
2659 	  If unsure, say N.
2660 
2661 config BITS_TEST
2662 	tristate "KUnit test for bits.h" if !KUNIT_ALL_TESTS
2663 	depends on KUNIT
2664 	default KUNIT_ALL_TESTS
2665 	help
2666 	  This builds the bits unit test.
2667 	  Tests the logic of macros defined in bits.h.
2668 	  For more information on KUnit and unit tests in general please refer
2669 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2670 
2671 	  If unsure, say N.
2672 
2673 config SLUB_KUNIT_TEST
2674 	tristate "KUnit test for SLUB cache error detection" if !KUNIT_ALL_TESTS
2675 	depends on SLUB_DEBUG && KUNIT
2676 	default KUNIT_ALL_TESTS
2677 	help
2678 	  This builds SLUB allocator unit test.
2679 	  Tests SLUB cache debugging functionality.
2680 	  For more information on KUnit and unit tests in general please refer
2681 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2682 
2683 	  If unsure, say N.
2684 
2685 config RATIONAL_KUNIT_TEST
2686 	tristate "KUnit test for rational.c" if !KUNIT_ALL_TESTS
2687 	depends on KUNIT && RATIONAL
2688 	default KUNIT_ALL_TESTS
2689 	help
2690 	  This builds the rational math unit test.
2691 	  For more information on KUnit and unit tests in general please refer
2692 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2693 
2694 	  If unsure, say N.
2695 
2696 config MEMCPY_KUNIT_TEST
2697 	tristate "Test memcpy(), memmove(), and memset() functions at runtime" if !KUNIT_ALL_TESTS
2698 	depends on KUNIT
2699 	default KUNIT_ALL_TESTS
2700 	help
2701 	  Builds unit tests for memcpy(), memmove(), and memset() functions.
2702 	  For more information on KUnit and unit tests in general please refer
2703 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2704 
2705 	  If unsure, say N.
2706 
2707 config IS_SIGNED_TYPE_KUNIT_TEST
2708 	tristate "Test is_signed_type() macro" if !KUNIT_ALL_TESTS
2709 	depends on KUNIT
2710 	default KUNIT_ALL_TESTS
2711 	help
2712 	  Builds unit tests for the is_signed_type() macro.
2713 
2714 	  For more information on KUnit and unit tests in general please refer
2715 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2716 
2717 	  If unsure, say N.
2718 
2719 config OVERFLOW_KUNIT_TEST
2720 	tristate "Test check_*_overflow() functions at runtime" if !KUNIT_ALL_TESTS
2721 	depends on KUNIT
2722 	default KUNIT_ALL_TESTS
2723 	help
2724 	  Builds unit tests for the check_*_overflow(), size_*(), allocation, and
2725 	  related functions.
2726 
2727 	  For more information on KUnit and unit tests in general please refer
2728 	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2729 
2730 	  If unsure, say N.
2731 
2732 config STACKINIT_KUNIT_TEST
2733 	tristate "Test level of stack variable initialization" if !KUNIT_ALL_TESTS
2734 	depends on KUNIT
2735 	default KUNIT_ALL_TESTS
2736 	help
2737 	  Test if the kernel is zero-initializing stack variables and
2738 	  padding. Coverage is controlled by compiler flags,
2739 	  CONFIG_INIT_STACK_ALL_PATTERN, CONFIG_INIT_STACK_ALL_ZERO,
2740 	  CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2741 	  or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2742 
2743 config FORTIFY_KUNIT_TEST
2744 	tristate "Test fortified str*() and mem*() function internals at runtime" if !KUNIT_ALL_TESTS
2745 	depends on KUNIT
2746 	default KUNIT_ALL_TESTS
2747 	help
2748 	  Builds unit tests for checking internals of FORTIFY_SOURCE as used
2749 	  by the str*() and mem*() family of functions. For testing runtime
2750 	  traps of FORTIFY_SOURCE, see LKDTM's "FORTIFY_*" tests.
2751 
2752 config HW_BREAKPOINT_KUNIT_TEST
2753 	bool "Test hw_breakpoint constraints accounting" if !KUNIT_ALL_TESTS
2754 	depends on HAVE_HW_BREAKPOINT
2755 	depends on KUNIT=y
2756 	default KUNIT_ALL_TESTS
2757 	help
2758 	  Tests for hw_breakpoint constraints accounting.
2759 
2760 	  If unsure, say N.
2761 
2762 config STRCAT_KUNIT_TEST
2763 	tristate "Test strcat() family of functions at runtime" if !KUNIT_ALL_TESTS
2764 	depends on KUNIT
2765 	default KUNIT_ALL_TESTS
2766 
2767 config STRSCPY_KUNIT_TEST
2768 	tristate "Test strscpy*() family of functions at runtime" if !KUNIT_ALL_TESTS
2769 	depends on KUNIT
2770 	default KUNIT_ALL_TESTS
2771 
2772 config SIPHASH_KUNIT_TEST
2773 	tristate "Perform selftest on siphash functions" if !KUNIT_ALL_TESTS
2774 	depends on KUNIT
2775 	default KUNIT_ALL_TESTS
2776 	help
2777 	  Enable this option to test the kernel's siphash (<linux/siphash.h>) hash
2778 	  functions on boot (or module load).
2779 
2780 	  This is intended to help people writing architecture-specific
2781 	  optimized versions.  If unsure, say N.
2782 
2783 config TEST_UDELAY
2784 	tristate "udelay test driver"
2785 	help
2786 	  This builds the "udelay_test" module that helps to make sure
2787 	  that udelay() is working properly.
2788 
2789 	  If unsure, say N.
2790 
2791 config TEST_STATIC_KEYS
2792 	tristate "Test static keys"
2793 	depends on m
2794 	help
2795 	  Test the static key interfaces.
2796 
2797 	  If unsure, say N.
2798 
2799 config TEST_DYNAMIC_DEBUG
2800 	tristate "Test DYNAMIC_DEBUG"
2801 	depends on DYNAMIC_DEBUG
2802 	help
2803 	  This module registers a tracer callback to count enabled
2804 	  pr_debugs in a 'do_debugging' function, then alters their
2805 	  enablements, calls the function, and compares counts.
2806 
2807 	  If unsure, say N.
2808 
2809 config TEST_KMOD
2810 	tristate "kmod stress tester"
2811 	depends on m
2812 	depends on NETDEVICES && NET_CORE && INET # for TUN
2813 	depends on BLOCK
2814 	depends on PAGE_SIZE_LESS_THAN_256KB # for BTRFS
2815 	select TEST_LKM
2816 	select XFS_FS
2817 	select TUN
2818 	select BTRFS_FS
2819 	help
2820 	  Test the kernel's module loading mechanism: kmod. kmod implements
2821 	  support to load modules using the Linux kernel's usermode helper.
2822 	  This test provides a series of tests against kmod.
2823 
2824 	  Although technically you can either build test_kmod as a module or
2825 	  into the kernel we disallow building it into the kernel since
2826 	  it stress tests request_module() and this will very likely cause
2827 	  some issues by taking over precious threads available from other
2828 	  module load requests, ultimately this could be fatal.
2829 
2830 	  To run tests run:
2831 
2832 	  tools/testing/selftests/kmod/kmod.sh --help
2833 
2834 	  If unsure, say N.
2835 
2836 config TEST_DEBUG_VIRTUAL
2837 	tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2838 	depends on DEBUG_VIRTUAL
2839 	help
2840 	  Test the kernel's ability to detect incorrect calls to
2841 	  virt_to_phys() done against the non-linear part of the
2842 	  kernel's virtual address map.
2843 
2844 	  If unsure, say N.
2845 
2846 config TEST_MEMCAT_P
2847 	tristate "Test memcat_p() helper function"
2848 	help
2849 	  Test the memcat_p() helper for correctly merging two
2850 	  pointer arrays together.
2851 
2852 	  If unsure, say N.
2853 
2854 config TEST_OBJAGG
2855 	tristate "Perform selftest on object aggreration manager"
2856 	default n
2857 	depends on OBJAGG
2858 	help
2859 	  Enable this option to test object aggregation manager on boot
2860 	  (or module load).
2861 
2862 config TEST_MEMINIT
2863 	tristate "Test heap/page initialization"
2864 	help
2865 	  Test if the kernel is zero-initializing heap and page allocations.
2866 	  This can be useful to test init_on_alloc and init_on_free features.
2867 
2868 	  If unsure, say N.
2869 
2870 config TEST_HMM
2871 	tristate "Test HMM (Heterogeneous Memory Management)"
2872 	depends on TRANSPARENT_HUGEPAGE
2873 	depends on DEVICE_PRIVATE
2874 	select HMM_MIRROR
2875 	select MMU_NOTIFIER
2876 	help
2877 	  This is a pseudo device driver solely for testing HMM.
2878 	  Say M here if you want to build the HMM test module.
2879 	  Doing so will allow you to run tools/testing/selftest/vm/hmm-tests.
2880 
2881 	  If unsure, say N.
2882 
2883 config TEST_FREE_PAGES
2884 	tristate "Test freeing pages"
2885 	help
2886 	  Test that a memory leak does not occur due to a race between
2887 	  freeing a block of pages and a speculative page reference.
2888 	  Loading this module is safe if your kernel has the bug fixed.
2889 	  If the bug is not fixed, it will leak gigabytes of memory and
2890 	  probably OOM your system.
2891 
2892 config TEST_FPU
2893 	tristate "Test floating point operations in kernel space"
2894 	depends on X86 && !KCOV_INSTRUMENT_ALL
2895 	help
2896 	  Enable this option to add /sys/kernel/debug/selftest_helpers/test_fpu
2897 	  which will trigger a sequence of floating point operations. This is used
2898 	  for self-testing floating point control register setting in
2899 	  kernel_fpu_begin().
2900 
2901 	  If unsure, say N.
2902 
2903 config TEST_CLOCKSOURCE_WATCHDOG
2904 	tristate "Test clocksource watchdog in kernel space"
2905 	depends on CLOCKSOURCE_WATCHDOG
2906 	help
2907 	  Enable this option to create a kernel module that will trigger
2908 	  a test of the clocksource watchdog.  This module may be loaded
2909 	  via modprobe or insmod in which case it will run upon being
2910 	  loaded, or it may be built in, in which case it will run
2911 	  shortly after boot.
2912 
2913 	  If unsure, say N.
2914 
2915 config TEST_OBJPOOL
2916 	tristate "Test module for correctness and stress of objpool"
2917 	default n
2918 	depends on m && DEBUG_KERNEL
2919 	help
2920 	  This builds the "test_objpool" module that should be used for
2921 	  correctness verification and concurrent testings of objects
2922 	  allocation and reclamation.
2923 
2924 	  If unsure, say N.
2925 
2926 endif # RUNTIME_TESTING_MENU
2927 
2928 config ARCH_USE_MEMTEST
2929 	bool
2930 	help
2931 	  An architecture should select this when it uses early_memtest()
2932 	  during boot process.
2933 
2934 config MEMTEST
2935 	bool "Memtest"
2936 	depends on ARCH_USE_MEMTEST
2937 	help
2938 	  This option adds a kernel parameter 'memtest', which allows memtest
2939 	  to be set and executed.
2940 	        memtest=0, mean disabled; -- default
2941 	        memtest=1, mean do 1 test pattern;
2942 	        ...
2943 	        memtest=17, mean do 17 test patterns.
2944 	  If you are unsure how to answer this question, answer N.
2945 
2946 
2947 
2948 config HYPERV_TESTING
2949 	bool "Microsoft Hyper-V driver testing"
2950 	default n
2951 	depends on HYPERV && DEBUG_FS
2952 	help
2953 	  Select this option to enable Hyper-V vmbus testing.
2954 
2955 endmenu # "Kernel Testing and Coverage"
2956 
2957 menu "Rust hacking"
2958 
2959 config RUST_DEBUG_ASSERTIONS
2960 	bool "Debug assertions"
2961 	depends on RUST
2962 	help
2963 	  Enables rustc's `-Cdebug-assertions` codegen option.
2964 
2965 	  This flag lets you turn `cfg(debug_assertions)` conditional
2966 	  compilation on or off. This can be used to enable extra debugging
2967 	  code in development but not in production. For example, it controls
2968 	  the behavior of the standard library's `debug_assert!` macro.
2969 
2970 	  Note that this will apply to all Rust code, including `core`.
2971 
2972 	  If unsure, say N.
2973 
2974 config RUST_OVERFLOW_CHECKS
2975 	bool "Overflow checks"
2976 	default y
2977 	depends on RUST
2978 	help
2979 	  Enables rustc's `-Coverflow-checks` codegen option.
2980 
2981 	  This flag allows you to control the behavior of runtime integer
2982 	  overflow. When overflow-checks are enabled, a Rust panic will occur
2983 	  on overflow.
2984 
2985 	  Note that this will apply to all Rust code, including `core`.
2986 
2987 	  If unsure, say Y.
2988 
2989 config RUST_BUILD_ASSERT_ALLOW
2990 	bool "Allow unoptimized build-time assertions"
2991 	depends on RUST
2992 	help
2993 	  Controls how are `build_error!` and `build_assert!` handled during build.
2994 
2995 	  If calls to them exist in the binary, it may indicate a violated invariant
2996 	  or that the optimizer failed to verify the invariant during compilation.
2997 
2998 	  This should not happen, thus by default the build is aborted. However,
2999 	  as an escape hatch, you can choose Y here to ignore them during build
3000 	  and let the check be carried at runtime (with `panic!` being called if
3001 	  the check fails).
3002 
3003 	  If unsure, say N.
3004 
3005 config RUST_KERNEL_DOCTESTS
3006 	bool "Doctests for the `kernel` crate" if !KUNIT_ALL_TESTS
3007 	depends on RUST && KUNIT=y
3008 	default KUNIT_ALL_TESTS
3009 	help
3010 	  This builds the documentation tests of the `kernel` crate
3011 	  as KUnit tests.
3012 
3013 	  For more information on KUnit and unit tests in general,
3014 	  please refer to the KUnit documentation in Documentation/dev-tools/kunit/.
3015 
3016 	  If unsure, say N.
3017 
3018 endmenu # "Rust"
3019 
3020 endmenu # Kernel hacking
3021