xref: /openbmc/linux/lib/Kconfig.debug (revision 12a5b00a)
1# SPDX-License-Identifier: GPL-2.0-only
2menu "Kernel hacking"
3
4menu "printk and dmesg options"
5
6config 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
21config 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
38config CONSOLE_LOGLEVEL_DEFAULT
39	int "Default console loglevel (1-15)"
40	range 1 15
41	default "7"
42	help
43	  Default loglevel to determine what will be printed on the console.
44
45	  Setting a default here is equivalent to passing in loglevel=<x> in
46	  the kernel bootargs. loglevel=<x> continues to override whatever
47	  value is specified here as well.
48
49	  Note: This does not affect the log level of un-prefixed printk()
50	  usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
51	  option.
52
53config CONSOLE_LOGLEVEL_QUIET
54	int "quiet console loglevel (1-15)"
55	range 1 15
56	default "4"
57	help
58	  loglevel to use when "quiet" is passed on the kernel commandline.
59
60	  When "quiet" is passed on the kernel commandline this loglevel
61	  will be used as the loglevel. IOW passing "quiet" will be the
62	  equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
63
64config MESSAGE_LOGLEVEL_DEFAULT
65	int "Default message log level (1-7)"
66	range 1 7
67	default "4"
68	help
69	  Default log level for printk statements with no specified priority.
70
71	  This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
72	  that are auditing their logs closely may want to set it to a lower
73	  priority.
74
75	  Note: This does not affect what message level gets printed on the console
76	  by default. To change that, use loglevel=<x> in the kernel bootargs,
77	  or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.
78
79config BOOT_PRINTK_DELAY
80	bool "Delay each boot printk message by N milliseconds"
81	depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
82	help
83	  This build option allows you to read kernel boot messages
84	  by inserting a short delay after each one.  The delay is
85	  specified in milliseconds on the kernel command line,
86	  using "boot_delay=N".
87
88	  It is likely that you would also need to use "lpj=M" to preset
89	  the "loops per jiffie" value.
90	  See a previous boot log for the "lpj" value to use for your
91	  system, and then set "lpj=M" before setting "boot_delay=N".
92	  NOTE:  Using this option may adversely affect SMP systems.
93	  I.e., processors other than the first one may not boot up.
94	  BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
95	  what it believes to be lockup conditions.
96
97config DYNAMIC_DEBUG
98	bool "Enable dynamic printk() support"
99	default n
100	depends on PRINTK
101	depends on (DEBUG_FS || PROC_FS)
102	help
103
104	  Compiles debug level messages into the kernel, which would not
105	  otherwise be available at runtime. These messages can then be
106	  enabled/disabled based on various levels of scope - per source file,
107	  function, module, format string, and line number. This mechanism
108	  implicitly compiles in all pr_debug() and dev_dbg() calls, which
109	  enlarges the kernel text size by about 2%.
110
111	  If a source file is compiled with DEBUG flag set, any
112	  pr_debug() calls in it are enabled by default, but can be
113	  disabled at runtime as below.  Note that DEBUG flag is
114	  turned on by many CONFIG_*DEBUG* options.
115
116	  Usage:
117
118	  Dynamic debugging is controlled via the 'dynamic_debug/control' file,
119	  which is contained in the 'debugfs' filesystem or procfs.
120	  Thus, the debugfs or procfs filesystem must first be mounted before
121	  making use of this feature.
122	  We refer the control file as: <debugfs>/dynamic_debug/control. This
123	  file contains a list of the debug statements that can be enabled. The
124	  format for each line of the file is:
125
126		filename:lineno [module]function flags format
127
128	  filename : source file of the debug statement
129	  lineno : line number of the debug statement
130	  module : module that contains the debug statement
131	  function : function that contains the debug statement
132	  flags : '=p' means the line is turned 'on' for printing
133	  format : the format used for the debug statement
134
135	  From a live system:
136
137		nullarbor:~ # cat <debugfs>/dynamic_debug/control
138		# filename:lineno [module]function flags format
139		fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
140		fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
141		fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
142
143	  Example usage:
144
145		// enable the message at line 1603 of file svcsock.c
146		nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
147						<debugfs>/dynamic_debug/control
148
149		// enable all the messages in file svcsock.c
150		nullarbor:~ # echo -n 'file svcsock.c +p' >
151						<debugfs>/dynamic_debug/control
152
153		// enable all the messages in the NFS server module
154		nullarbor:~ # echo -n 'module nfsd +p' >
155						<debugfs>/dynamic_debug/control
156
157		// enable all 12 messages in the function svc_process()
158		nullarbor:~ # echo -n 'func svc_process +p' >
159						<debugfs>/dynamic_debug/control
160
161		// disable all 12 messages in the function svc_process()
162		nullarbor:~ # echo -n 'func svc_process -p' >
163						<debugfs>/dynamic_debug/control
164
165	  See Documentation/admin-guide/dynamic-debug-howto.rst for additional
166	  information.
167
168config SYMBOLIC_ERRNAME
169	bool "Support symbolic error names in printf"
170	default y if PRINTK
171	help
172	  If you say Y here, the kernel's printf implementation will
173	  be able to print symbolic error names such as ENOSPC instead
174	  of the number 28. It makes the kernel image slightly larger
175	  (about 3KB), but can make the kernel logs easier to read.
176
177config DEBUG_BUGVERBOSE
178	bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
179	depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
180	default y
181	help
182	  Say Y here to make BUG() panics output the file name and line number
183	  of the BUG call as well as the EIP and oops trace.  This aids
184	  debugging but costs about 70-100K of memory.
185
186endmenu # "printk and dmesg options"
187
188menu "Compile-time checks and compiler options"
189
190config DEBUG_INFO
191	bool "Compile the kernel with debug info"
192	depends on DEBUG_KERNEL && !COMPILE_TEST
193	help
194	  If you say Y here the resulting kernel image will include
195	  debugging info resulting in a larger kernel image.
196	  This adds debug symbols to the kernel and modules (gcc -g), and
197	  is needed if you intend to use kernel crashdump or binary object
198	  tools like crash, kgdb, LKCD, gdb, etc on the kernel.
199	  Say Y here only if you plan to debug the kernel.
200
201	  If unsure, say N.
202
203config DEBUG_INFO_REDUCED
204	bool "Reduce debugging information"
205	depends on DEBUG_INFO
206	help
207	  If you say Y here gcc is instructed to generate less debugging
208	  information for structure types. This means that tools that
209	  need full debugging information (like kgdb or systemtap) won't
210	  be happy. But if you merely need debugging information to
211	  resolve line numbers there is no loss. Advantage is that
212	  build directory object sizes shrink dramatically over a full
213	  DEBUG_INFO build and compile times are reduced too.
214	  Only works with newer gcc versions.
215
216config DEBUG_INFO_SPLIT
217	bool "Produce split debuginfo in .dwo files"
218	depends on DEBUG_INFO
219	depends on $(cc-option,-gsplit-dwarf)
220	help
221	  Generate debug info into separate .dwo files. This significantly
222	  reduces the build directory size for builds with DEBUG_INFO,
223	  because it stores the information only once on disk in .dwo
224	  files instead of multiple times in object files and executables.
225	  In addition the debug information is also compressed.
226
227	  Requires recent gcc (4.7+) and recent gdb/binutils.
228	  Any tool that packages or reads debug information would need
229	  to know about the .dwo files and include them.
230	  Incompatible with older versions of ccache.
231
232config DEBUG_INFO_DWARF4
233	bool "Generate dwarf4 debuginfo"
234	depends on DEBUG_INFO
235	depends on $(cc-option,-gdwarf-4)
236	help
237	  Generate dwarf4 debug info. This requires recent versions
238	  of gcc and gdb. It makes the debug information larger.
239	  But it significantly improves the success of resolving
240	  variables in gdb on optimized code.
241
242config DEBUG_INFO_BTF
243	bool "Generate BTF typeinfo"
244	depends on DEBUG_INFO
245	help
246	  Generate deduplicated BTF type information from DWARF debug info.
247	  Turning this on expects presence of pahole tool, which will convert
248	  DWARF type info into equivalent deduplicated BTF type info.
249
250config GDB_SCRIPTS
251	bool "Provide GDB scripts for kernel debugging"
252	depends on DEBUG_INFO
253	help
254	  This creates the required links to GDB helper scripts in the
255	  build directory. If you load vmlinux into gdb, the helper
256	  scripts will be automatically imported by gdb as well, and
257	  additional functions are available to analyze a Linux kernel
258	  instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
259	  for further details.
260
261config ENABLE_MUST_CHECK
262	bool "Enable __must_check logic"
263	default y
264	help
265	  Enable the __must_check logic in the kernel build.  Disable this to
266	  suppress the "warning: ignoring return value of 'foo', declared with
267	  attribute warn_unused_result" messages.
268
269config FRAME_WARN
270	int "Warn for stack frames larger than"
271	range 0 8192
272	default 2048 if GCC_PLUGIN_LATENT_ENTROPY
273	default 1280 if (!64BIT && PARISC)
274	default 1024 if (!64BIT && !PARISC)
275	default 2048 if 64BIT
276	help
277	  Tell gcc to warn at build time for stack frames larger than this.
278	  Setting this too low will cause a lot of warnings.
279	  Setting it to 0 disables the warning.
280
281config STRIP_ASM_SYMS
282	bool "Strip assembler-generated symbols during link"
283	default n
284	help
285	  Strip internal assembler-generated symbols during a link (symbols
286	  that look like '.Lxxx') so they don't pollute the output of
287	  get_wchan() and suchlike.
288
289config READABLE_ASM
290	bool "Generate readable assembler code"
291	depends on DEBUG_KERNEL
292	help
293	  Disable some compiler optimizations that tend to generate human unreadable
294	  assembler output. This may make the kernel slightly slower, but it helps
295	  to keep kernel developers who have to stare a lot at assembler listings
296	  sane.
297
298config HEADERS_INSTALL
299	bool "Install uapi headers to usr/include"
300	depends on !UML
301	help
302	  This option will install uapi headers (headers exported to user-space)
303	  into the usr/include directory for use during the kernel build.
304	  This is unneeded for building the kernel itself, but needed for some
305	  user-space program samples. It is also needed by some features such
306	  as uapi header sanity checks.
307
308config OPTIMIZE_INLINING
309	def_bool y
310	help
311	  This option determines if the kernel forces gcc to inline the functions
312	  developers have marked 'inline'. Doing so takes away freedom from gcc to
313	  do what it thinks is best, which is desirable for the gcc 3.x series of
314	  compilers. The gcc 4.x series have a rewritten inlining algorithm and
315	  enabling this option will generate a smaller kernel there. Hopefully
316	  this algorithm is so good that allowing gcc 4.x and above to make the
317	  decision will become the default in the future. Until then this option
318	  is there to test gcc for this.
319
320config DEBUG_SECTION_MISMATCH
321	bool "Enable full Section mismatch analysis"
322	help
323	  The section mismatch analysis checks if there are illegal
324	  references from one section to another section.
325	  During linktime or runtime, some sections are dropped;
326	  any use of code/data previously in these sections would
327	  most likely result in an oops.
328	  In the code, functions and variables are annotated with
329	  __init,, etc. (see the full list in include/linux/init.h),
330	  which results in the code/data being placed in specific sections.
331	  The section mismatch analysis is always performed after a full
332	  kernel build, and enabling this option causes the following
333	  additional step to occur:
334	  - Add the option -fno-inline-functions-called-once to gcc commands.
335	    When inlining a function annotated with __init in a non-init
336	    function, we would lose the section information and thus
337	    the analysis would not catch the illegal reference.
338	    This option tells gcc to inline less (but it does result in
339	    a larger kernel).
340
341config SECTION_MISMATCH_WARN_ONLY
342	bool "Make section mismatch errors non-fatal"
343	default y
344	help
345	  If you say N here, the build process will fail if there are any
346	  section mismatch, instead of just throwing warnings.
347
348	  If unsure, say Y.
349
350#
351# Select this config option from the architecture Kconfig, if it
352# is preferred to always offer frame pointers as a config
353# option on the architecture (regardless of KERNEL_DEBUG):
354#
355config ARCH_WANT_FRAME_POINTERS
356	bool
357
358config FRAME_POINTER
359	bool "Compile the kernel with frame pointers"
360	depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
361	default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
362	help
363	  If you say Y here the resulting kernel image will be slightly
364	  larger and slower, but it gives very useful debugging information
365	  in case of kernel bugs. (precise oopses/stacktraces/warnings)
366
367config STACK_VALIDATION
368	bool "Compile-time stack metadata validation"
369	depends on HAVE_STACK_VALIDATION
370	default n
371	help
372	  Add compile-time checks to validate stack metadata, including frame
373	  pointers (if CONFIG_FRAME_POINTER is enabled).  This helps ensure
374	  that runtime stack traces are more reliable.
375
376	  This is also a prerequisite for generation of ORC unwind data, which
377	  is needed for CONFIG_UNWINDER_ORC.
378
379	  For more information, see
380	  tools/objtool/Documentation/stack-validation.txt.
381
382config DEBUG_FORCE_WEAK_PER_CPU
383	bool "Force weak per-cpu definitions"
384	depends on DEBUG_KERNEL
385	help
386	  s390 and alpha require percpu variables in modules to be
387	  defined weak to work around addressing range issue which
388	  puts the following two restrictions on percpu variable
389	  definitions.
390
391	  1. percpu symbols must be unique whether static or not
392	  2. percpu variables can't be defined inside a function
393
394	  To ensure that generic code follows the above rules, this
395	  option forces all percpu variables to be defined as weak.
396
397endmenu # "Compiler options"
398
399menu "Generic Kernel Debugging Instruments"
400
401config MAGIC_SYSRQ
402	bool "Magic SysRq key"
403	depends on !UML
404	help
405	  If you say Y here, you will have some control over the system even
406	  if the system crashes for example during kernel debugging (e.g., you
407	  will be able to flush the buffer cache to disk, reboot the system
408	  immediately or dump some status information). This is accomplished
409	  by pressing various keys while holding SysRq (Alt+PrintScreen). It
410	  also works on a serial console (on PC hardware at least), if you
411	  send a BREAK and then within 5 seconds a command keypress. The
412	  keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
413	  Don't say Y unless you really know what this hack does.
414
415config MAGIC_SYSRQ_DEFAULT_ENABLE
416	hex "Enable magic SysRq key functions by default"
417	depends on MAGIC_SYSRQ
418	default 0x1
419	help
420	  Specifies which SysRq key functions are enabled by default.
421	  This may be set to 1 or 0 to enable or disable them all, or
422	  to a bitmask as described in Documentation/admin-guide/sysrq.rst.
423
424config MAGIC_SYSRQ_SERIAL
425	bool "Enable magic SysRq key over serial"
426	depends on MAGIC_SYSRQ
427	default y
428	help
429	  Many embedded boards have a disconnected TTL level serial which can
430	  generate some garbage that can lead to spurious false sysrq detects.
431	  This option allows you to decide whether you want to enable the
432	  magic SysRq key.
433
434config MAGIC_SYSRQ_SERIAL_SEQUENCE
435	string "Char sequence that enables magic SysRq over serial"
436	depends on MAGIC_SYSRQ_SERIAL
437	default ""
438	help
439	  Specifies a sequence of characters that can follow BREAK to enable
440	  SysRq on a serial console.
441
442	  If unsure, leave an empty string and the option will not be enabled.
443
444config DEBUG_FS
445	bool "Debug Filesystem"
446	help
447	  debugfs is a virtual file system that kernel developers use to put
448	  debugging files into.  Enable this option to be able to read and
449	  write to these files.
450
451	  For detailed documentation on the debugfs API, see
452	  Documentation/filesystems/.
453
454	  If unsure, say N.
455
456source "lib/Kconfig.kgdb"
457
458source "lib/Kconfig.ubsan"
459
460endmenu
461
462config DEBUG_KERNEL
463	bool "Kernel debugging"
464	help
465	  Say Y here if you are developing drivers or trying to debug and
466	  identify kernel problems.
467
468config DEBUG_MISC
469	bool "Miscellaneous debug code"
470	default DEBUG_KERNEL
471	depends on DEBUG_KERNEL
472	help
473	  Say Y here if you need to enable miscellaneous debug code that should
474	  be under a more specific debug option but isn't.
475
476
477menu "Memory Debugging"
478
479source "mm/Kconfig.debug"
480
481config DEBUG_OBJECTS
482	bool "Debug object operations"
483	depends on DEBUG_KERNEL
484	help
485	  If you say Y here, additional code will be inserted into the
486	  kernel to track the life time of various objects and validate
487	  the operations on those objects.
488
489config DEBUG_OBJECTS_SELFTEST
490	bool "Debug objects selftest"
491	depends on DEBUG_OBJECTS
492	help
493	  This enables the selftest of the object debug code.
494
495config DEBUG_OBJECTS_FREE
496	bool "Debug objects in freed memory"
497	depends on DEBUG_OBJECTS
498	help
499	  This enables checks whether a k/v free operation frees an area
500	  which contains an object which has not been deactivated
501	  properly. This can make kmalloc/kfree-intensive workloads
502	  much slower.
503
504config DEBUG_OBJECTS_TIMERS
505	bool "Debug timer objects"
506	depends on DEBUG_OBJECTS
507	help
508	  If you say Y here, additional code will be inserted into the
509	  timer routines to track the life time of timer objects and
510	  validate the timer operations.
511
512config DEBUG_OBJECTS_WORK
513	bool "Debug work objects"
514	depends on DEBUG_OBJECTS
515	help
516	  If you say Y here, additional code will be inserted into the
517	  work queue routines to track the life time of work objects and
518	  validate the work operations.
519
520config DEBUG_OBJECTS_RCU_HEAD
521	bool "Debug RCU callbacks objects"
522	depends on DEBUG_OBJECTS
523	help
524	  Enable this to turn on debugging of RCU list heads (call_rcu() usage).
525
526config DEBUG_OBJECTS_PERCPU_COUNTER
527	bool "Debug percpu counter objects"
528	depends on DEBUG_OBJECTS
529	help
530	  If you say Y here, additional code will be inserted into the
531	  percpu counter routines to track the life time of percpu counter
532	  objects and validate the percpu counter operations.
533
534config DEBUG_OBJECTS_ENABLE_DEFAULT
535	int "debug_objects bootup default value (0-1)"
536	range 0 1
537	default "1"
538	depends on DEBUG_OBJECTS
539	help
540	  Debug objects boot parameter default value
541
542config DEBUG_SLAB
543	bool "Debug slab memory allocations"
544	depends on DEBUG_KERNEL && SLAB
545	help
546	  Say Y here to have the kernel do limited verification on memory
547	  allocation as well as poisoning memory on free to catch use of freed
548	  memory. This can make kmalloc/kfree-intensive workloads much slower.
549
550config SLUB_DEBUG_ON
551	bool "SLUB debugging on by default"
552	depends on SLUB && SLUB_DEBUG
553	default n
554	help
555	  Boot with debugging on by default. SLUB boots by default with
556	  the runtime debug capabilities switched off. Enabling this is
557	  equivalent to specifying the "slub_debug" parameter on boot.
558	  There is no support for more fine grained debug control like
559	  possible with slub_debug=xxx. SLUB debugging may be switched
560	  off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
561	  "slub_debug=-".
562
563config SLUB_STATS
564	default n
565	bool "Enable SLUB performance statistics"
566	depends on SLUB && SYSFS
567	help
568	  SLUB statistics are useful to debug SLUBs allocation behavior in
569	  order find ways to optimize the allocator. This should never be
570	  enabled for production use since keeping statistics slows down
571	  the allocator by a few percentage points. The slabinfo command
572	  supports the determination of the most active slabs to figure
573	  out which slabs are relevant to a particular load.
574	  Try running: slabinfo -DA
575
576config HAVE_DEBUG_KMEMLEAK
577	bool
578
579config DEBUG_KMEMLEAK
580	bool "Kernel memory leak detector"
581	depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
582	select DEBUG_FS
583	select STACKTRACE if STACKTRACE_SUPPORT
584	select KALLSYMS
585	select CRC32
586	help
587	  Say Y here if you want to enable the memory leak
588	  detector. The memory allocation/freeing is traced in a way
589	  similar to the Boehm's conservative garbage collector, the
590	  difference being that the orphan objects are not freed but
591	  only shown in /sys/kernel/debug/kmemleak. Enabling this
592	  feature will introduce an overhead to memory
593	  allocations. See Documentation/dev-tools/kmemleak.rst for more
594	  details.
595
596	  Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
597	  of finding leaks due to the slab objects poisoning.
598
599	  In order to access the kmemleak file, debugfs needs to be
600	  mounted (usually at /sys/kernel/debug).
601
602config DEBUG_KMEMLEAK_MEM_POOL_SIZE
603	int "Kmemleak memory pool size"
604	depends on DEBUG_KMEMLEAK
605	range 200 1000000
606	default 16000
607	help
608	  Kmemleak must track all the memory allocations to avoid
609	  reporting false positives. Since memory may be allocated or
610	  freed before kmemleak is fully initialised, use a static pool
611	  of metadata objects to track such callbacks. After kmemleak is
612	  fully initialised, this memory pool acts as an emergency one
613	  if slab allocations fail.
614
615config DEBUG_KMEMLEAK_TEST
616	tristate "Simple test for the kernel memory leak detector"
617	depends on DEBUG_KMEMLEAK && m
618	help
619	  This option enables a module that explicitly leaks memory.
620
621	  If unsure, say N.
622
623config DEBUG_KMEMLEAK_DEFAULT_OFF
624	bool "Default kmemleak to off"
625	depends on DEBUG_KMEMLEAK
626	help
627	  Say Y here to disable kmemleak by default. It can then be enabled
628	  on the command line via kmemleak=on.
629
630config DEBUG_KMEMLEAK_AUTO_SCAN
631	bool "Enable kmemleak auto scan thread on boot up"
632	default y
633	depends on DEBUG_KMEMLEAK
634	help
635	  Depending on the cpu, kmemleak scan may be cpu intensive and can
636	  stall user tasks at times. This option enables/disables automatic
637	  kmemleak scan at boot up.
638
639	  Say N here to disable kmemleak auto scan thread to stop automatic
640	  scanning. Disabling this option disables automatic reporting of
641	  memory leaks.
642
643	  If unsure, say Y.
644
645config DEBUG_STACK_USAGE
646	bool "Stack utilization instrumentation"
647	depends on DEBUG_KERNEL && !IA64
648	help
649	  Enables the display of the minimum amount of free stack which each
650	  task has ever had available in the sysrq-T and sysrq-P debug output.
651
652	  This option will slow down process creation somewhat.
653
654config SCHED_STACK_END_CHECK
655	bool "Detect stack corruption on calls to schedule()"
656	depends on DEBUG_KERNEL
657	default n
658	help
659	  This option checks for a stack overrun on calls to schedule().
660	  If the stack end location is found to be over written always panic as
661	  the content of the corrupted region can no longer be trusted.
662	  This is to ensure no erroneous behaviour occurs which could result in
663	  data corruption or a sporadic crash at a later stage once the region
664	  is examined. The runtime overhead introduced is minimal.
665
666config DEBUG_VM
667	bool "Debug VM"
668	depends on DEBUG_KERNEL
669	help
670	  Enable this to turn on extended checks in the virtual-memory system
671	  that may impact performance.
672
673	  If unsure, say N.
674
675config DEBUG_VM_VMACACHE
676	bool "Debug VMA caching"
677	depends on DEBUG_VM
678	help
679	  Enable this to turn on VMA caching debug information. Doing so
680	  can cause significant overhead, so only enable it in non-production
681	  environments.
682
683	  If unsure, say N.
684
685config DEBUG_VM_RB
686	bool "Debug VM red-black trees"
687	depends on DEBUG_VM
688	help
689	  Enable VM red-black tree debugging information and extra validations.
690
691	  If unsure, say N.
692
693config DEBUG_VM_PGFLAGS
694	bool "Debug page-flags operations"
695	depends on DEBUG_VM
696	help
697	  Enables extra validation on page flags operations.
698
699	  If unsure, say N.
700
701config ARCH_HAS_DEBUG_VIRTUAL
702	bool
703
704config DEBUG_VIRTUAL
705	bool "Debug VM translations"
706	depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL
707	help
708	  Enable some costly sanity checks in virtual to page code. This can
709	  catch mistakes with virt_to_page() and friends.
710
711	  If unsure, say N.
712
713config DEBUG_NOMMU_REGIONS
714	bool "Debug the global anon/private NOMMU mapping region tree"
715	depends on DEBUG_KERNEL && !MMU
716	help
717	  This option causes the global tree of anonymous and private mapping
718	  regions to be regularly checked for invalid topology.
719
720config DEBUG_MEMORY_INIT
721	bool "Debug memory initialisation" if EXPERT
722	default !EXPERT
723	help
724	  Enable this for additional checks during memory initialisation.
725	  The sanity checks verify aspects of the VM such as the memory model
726	  and other information provided by the architecture. Verbose
727	  information will be printed at KERN_DEBUG loglevel depending
728	  on the mminit_loglevel= command-line option.
729
730	  If unsure, say Y
731
732config MEMORY_NOTIFIER_ERROR_INJECT
733	tristate "Memory hotplug notifier error injection module"
734	depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
735	help
736	  This option provides the ability to inject artificial errors to
737	  memory hotplug notifier chain callbacks.  It is controlled through
738	  debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
739
740	  If the notifier call chain should be failed with some events
741	  notified, write the error code to "actions/<notifier event>/error".
742
743	  Example: Inject memory hotplug offline error (-12 == -ENOMEM)
744
745	  # cd /sys/kernel/debug/notifier-error-inject/memory
746	  # echo -12 > actions/MEM_GOING_OFFLINE/error
747	  # echo offline > /sys/devices/system/memory/memoryXXX/state
748	  bash: echo: write error: Cannot allocate memory
749
750	  To compile this code as a module, choose M here: the module will
751	  be called memory-notifier-error-inject.
752
753	  If unsure, say N.
754
755config DEBUG_PER_CPU_MAPS
756	bool "Debug access to per_cpu maps"
757	depends on DEBUG_KERNEL
758	depends on SMP
759	help
760	  Say Y to verify that the per_cpu map being accessed has
761	  been set up. This adds a fair amount of code to kernel memory
762	  and decreases performance.
763
764	  Say N if unsure.
765
766config DEBUG_HIGHMEM
767	bool "Highmem debugging"
768	depends on DEBUG_KERNEL && HIGHMEM
769	help
770	  This option enables additional error checking for high memory
771	  systems.  Disable for production systems.
772
773config HAVE_DEBUG_STACKOVERFLOW
774	bool
775
776config DEBUG_STACKOVERFLOW
777	bool "Check for stack overflows"
778	depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
779	---help---
780	  Say Y here if you want to check for overflows of kernel, IRQ
781	  and exception stacks (if your architecture uses them). This
782	  option will show detailed messages if free stack space drops
783	  below a certain limit.
784
785	  These kinds of bugs usually occur when call-chains in the
786	  kernel get too deep, especially when interrupts are
787	  involved.
788
789	  Use this in cases where you see apparently random memory
790	  corruption, especially if it appears in 'struct thread_info'
791
792	  If in doubt, say "N".
793
794source "lib/Kconfig.kasan"
795
796endmenu # "Memory Debugging"
797
798config DEBUG_SHIRQ
799	bool "Debug shared IRQ handlers"
800	depends on DEBUG_KERNEL
801	help
802	  Enable this to generate a spurious interrupt as soon as a shared
803	  interrupt handler is registered, and just before one is deregistered.
804	  Drivers ought to be able to handle interrupts coming in at those
805	  points; some don't and need to be caught.
806
807menu "Debug Oops, Lockups and Hangs"
808
809config PANIC_ON_OOPS
810	bool "Panic on Oops"
811	help
812	  Say Y here to enable the kernel to panic when it oopses. This
813	  has the same effect as setting oops=panic on the kernel command
814	  line.
815
816	  This feature is useful to ensure that the kernel does not do
817	  anything erroneous after an oops which could result in data
818	  corruption or other issues.
819
820	  Say N if unsure.
821
822config PANIC_ON_OOPS_VALUE
823	int
824	range 0 1
825	default 0 if !PANIC_ON_OOPS
826	default 1 if PANIC_ON_OOPS
827
828config PANIC_TIMEOUT
829	int "panic timeout"
830	default 0
831	help
832	  Set the timeout value (in seconds) until a reboot occurs when the
833	  the kernel panics. If n = 0, then we wait forever. A timeout
834	  value n > 0 will wait n seconds before rebooting, while a timeout
835	  value n < 0 will reboot immediately.
836
837config LOCKUP_DETECTOR
838	bool
839
840config SOFTLOCKUP_DETECTOR
841	bool "Detect Soft Lockups"
842	depends on DEBUG_KERNEL && !S390
843	select LOCKUP_DETECTOR
844	help
845	  Say Y here to enable the kernel to act as a watchdog to detect
846	  soft lockups.
847
848	  Softlockups are bugs that cause the kernel to loop in kernel
849	  mode for more than 20 seconds, without giving other tasks a
850	  chance to run.  The current stack trace is displayed upon
851	  detection and the system will stay locked up.
852
853config BOOTPARAM_SOFTLOCKUP_PANIC
854	bool "Panic (Reboot) On Soft Lockups"
855	depends on SOFTLOCKUP_DETECTOR
856	help
857	  Say Y here to enable the kernel to panic on "soft lockups",
858	  which are bugs that cause the kernel to loop in kernel
859	  mode for more than 20 seconds (configurable using the watchdog_thresh
860	  sysctl), without giving other tasks a chance to run.
861
862	  The panic can be used in combination with panic_timeout,
863	  to cause the system to reboot automatically after a
864	  lockup has been detected. This feature is useful for
865	  high-availability systems that have uptime guarantees and
866	  where a lockup must be resolved ASAP.
867
868	  Say N if unsure.
869
870config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
871	int
872	depends on SOFTLOCKUP_DETECTOR
873	range 0 1
874	default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
875	default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
876
877config HARDLOCKUP_DETECTOR_PERF
878	bool
879	select SOFTLOCKUP_DETECTOR
880
881#
882# Enables a timestamp based low pass filter to compensate for perf based
883# hard lockup detection which runs too fast due to turbo modes.
884#
885config HARDLOCKUP_CHECK_TIMESTAMP
886	bool
887
888#
889# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
890# lockup detector rather than the perf based detector.
891#
892config HARDLOCKUP_DETECTOR
893	bool "Detect Hard Lockups"
894	depends on DEBUG_KERNEL && !S390
895	depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH
896	select LOCKUP_DETECTOR
897	select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
898	select HARDLOCKUP_DETECTOR_ARCH if HAVE_HARDLOCKUP_DETECTOR_ARCH
899	help
900	  Say Y here to enable the kernel to act as a watchdog to detect
901	  hard lockups.
902
903	  Hardlockups are bugs that cause the CPU to loop in kernel mode
904	  for more than 10 seconds, without letting other interrupts have a
905	  chance to run.  The current stack trace is displayed upon detection
906	  and the system will stay locked up.
907
908config BOOTPARAM_HARDLOCKUP_PANIC
909	bool "Panic (Reboot) On Hard Lockups"
910	depends on HARDLOCKUP_DETECTOR
911	help
912	  Say Y here to enable the kernel to panic on "hard lockups",
913	  which are bugs that cause the kernel to loop in kernel
914	  mode with interrupts disabled for more than 10 seconds (configurable
915	  using the watchdog_thresh sysctl).
916
917	  Say N if unsure.
918
919config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
920	int
921	depends on HARDLOCKUP_DETECTOR
922	range 0 1
923	default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
924	default 1 if BOOTPARAM_HARDLOCKUP_PANIC
925
926config DETECT_HUNG_TASK
927	bool "Detect Hung Tasks"
928	depends on DEBUG_KERNEL
929	default SOFTLOCKUP_DETECTOR
930	help
931	  Say Y here to enable the kernel to detect "hung tasks",
932	  which are bugs that cause the task to be stuck in
933	  uninterruptible "D" state indefinitely.
934
935	  When a hung task is detected, the kernel will print the
936	  current stack trace (which you should report), but the
937	  task will stay in uninterruptible state. If lockdep is
938	  enabled then all held locks will also be reported. This
939	  feature has negligible overhead.
940
941config DEFAULT_HUNG_TASK_TIMEOUT
942	int "Default timeout for hung task detection (in seconds)"
943	depends on DETECT_HUNG_TASK
944	default 120
945	help
946	  This option controls the default timeout (in seconds) used
947	  to determine when a task has become non-responsive and should
948	  be considered hung.
949
950	  It can be adjusted at runtime via the kernel.hung_task_timeout_secs
951	  sysctl or by writing a value to
952	  /proc/sys/kernel/hung_task_timeout_secs.
953
954	  A timeout of 0 disables the check.  The default is two minutes.
955	  Keeping the default should be fine in most cases.
956
957config BOOTPARAM_HUNG_TASK_PANIC
958	bool "Panic (Reboot) On Hung Tasks"
959	depends on DETECT_HUNG_TASK
960	help
961	  Say Y here to enable the kernel to panic on "hung tasks",
962	  which are bugs that cause the kernel to leave a task stuck
963	  in uninterruptible "D" state.
964
965	  The panic can be used in combination with panic_timeout,
966	  to cause the system to reboot automatically after a
967	  hung task has been detected. This feature is useful for
968	  high-availability systems that have uptime guarantees and
969	  where a hung tasks must be resolved ASAP.
970
971	  Say N if unsure.
972
973config BOOTPARAM_HUNG_TASK_PANIC_VALUE
974	int
975	depends on DETECT_HUNG_TASK
976	range 0 1
977	default 0 if !BOOTPARAM_HUNG_TASK_PANIC
978	default 1 if BOOTPARAM_HUNG_TASK_PANIC
979
980config WQ_WATCHDOG
981	bool "Detect Workqueue Stalls"
982	depends on DEBUG_KERNEL
983	help
984	  Say Y here to enable stall detection on workqueues.  If a
985	  worker pool doesn't make forward progress on a pending work
986	  item for over a given amount of time, 30s by default, a
987	  warning message is printed along with dump of workqueue
988	  state.  This can be configured through kernel parameter
989	  "workqueue.watchdog_thresh" and its sysfs counterpart.
990
991endmenu # "Debug lockups and hangs"
992
993menu "Scheduler Debugging"
994
995config SCHED_DEBUG
996	bool "Collect scheduler debugging info"
997	depends on DEBUG_KERNEL && PROC_FS
998	default y
999	help
1000	  If you say Y here, the /proc/sched_debug file will be provided
1001	  that can help debug the scheduler. The runtime overhead of this
1002	  option is minimal.
1003
1004config SCHED_INFO
1005	bool
1006	default n
1007
1008config SCHEDSTATS
1009	bool "Collect scheduler statistics"
1010	depends on DEBUG_KERNEL && PROC_FS
1011	select SCHED_INFO
1012	help
1013	  If you say Y here, additional code will be inserted into the
1014	  scheduler and related routines to collect statistics about
1015	  scheduler behavior and provide them in /proc/schedstat.  These
1016	  stats may be useful for both tuning and debugging the scheduler
1017	  If you aren't debugging the scheduler or trying to tune a specific
1018	  application, you can say N to avoid the very slight overhead
1019	  this adds.
1020
1021endmenu
1022
1023config DEBUG_TIMEKEEPING
1024	bool "Enable extra timekeeping sanity checking"
1025	help
1026	  This option will enable additional timekeeping sanity checks
1027	  which may be helpful when diagnosing issues where timekeeping
1028	  problems are suspected.
1029
1030	  This may include checks in the timekeeping hotpaths, so this
1031	  option may have a (very small) performance impact to some
1032	  workloads.
1033
1034	  If unsure, say N.
1035
1036config DEBUG_PREEMPT
1037	bool "Debug preemptible kernel"
1038	depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
1039	default y
1040	help
1041	  If you say Y here then the kernel will use a debug variant of the
1042	  commonly used smp_processor_id() function and will print warnings
1043	  if kernel code uses it in a preemption-unsafe way. Also, the kernel
1044	  will detect preemption count underflows.
1045
1046menu "Lock Debugging (spinlocks, mutexes, etc...)"
1047
1048config LOCK_DEBUGGING_SUPPORT
1049	bool
1050	depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
1051	default y
1052
1053config PROVE_LOCKING
1054	bool "Lock debugging: prove locking correctness"
1055	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1056	select LOCKDEP
1057	select DEBUG_SPINLOCK
1058	select DEBUG_MUTEXES
1059	select DEBUG_RT_MUTEXES if RT_MUTEXES
1060	select DEBUG_RWSEMS
1061	select DEBUG_WW_MUTEX_SLOWPATH
1062	select DEBUG_LOCK_ALLOC
1063	select TRACE_IRQFLAGS
1064	default n
1065	help
1066	 This feature enables the kernel to prove that all locking
1067	 that occurs in the kernel runtime is mathematically
1068	 correct: that under no circumstance could an arbitrary (and
1069	 not yet triggered) combination of observed locking
1070	 sequences (on an arbitrary number of CPUs, running an
1071	 arbitrary number of tasks and interrupt contexts) cause a
1072	 deadlock.
1073
1074	 In short, this feature enables the kernel to report locking
1075	 related deadlocks before they actually occur.
1076
1077	 The proof does not depend on how hard and complex a
1078	 deadlock scenario would be to trigger: how many
1079	 participant CPUs, tasks and irq-contexts would be needed
1080	 for it to trigger. The proof also does not depend on
1081	 timing: if a race and a resulting deadlock is possible
1082	 theoretically (no matter how unlikely the race scenario
1083	 is), it will be proven so and will immediately be
1084	 reported by the kernel (once the event is observed that
1085	 makes the deadlock theoretically possible).
1086
1087	 If a deadlock is impossible (i.e. the locking rules, as
1088	 observed by the kernel, are mathematically correct), the
1089	 kernel reports nothing.
1090
1091	 NOTE: this feature can also be enabled for rwlocks, mutexes
1092	 and rwsems - in which case all dependencies between these
1093	 different locking variants are observed and mapped too, and
1094	 the proof of observed correctness is also maintained for an
1095	 arbitrary combination of these separate locking variants.
1096
1097	 For more details, see Documentation/locking/lockdep-design.rst.
1098
1099config PROVE_RAW_LOCK_NESTING
1100	bool "Enable raw_spinlock - spinlock nesting checks"
1101	depends on PROVE_LOCKING
1102	default n
1103	help
1104	 Enable the raw_spinlock vs. spinlock nesting checks which ensure
1105	 that the lock nesting rules for PREEMPT_RT enabled kernels are
1106	 not violated.
1107
1108	 NOTE: There are known nesting problems. So if you enable this
1109	 option expect lockdep splats until these problems have been fully
1110	 addressed which is work in progress. This config switch allows to
1111	 identify and analyze these problems. It will be removed and the
1112	 check permanentely enabled once the main issues have been fixed.
1113
1114	 If unsure, select N.
1115
1116config LOCK_STAT
1117	bool "Lock usage statistics"
1118	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1119	select LOCKDEP
1120	select DEBUG_SPINLOCK
1121	select DEBUG_MUTEXES
1122	select DEBUG_RT_MUTEXES if RT_MUTEXES
1123	select DEBUG_LOCK_ALLOC
1124	default n
1125	help
1126	 This feature enables tracking lock contention points
1127
1128	 For more details, see Documentation/locking/lockstat.rst
1129
1130	 This also enables lock events required by "perf lock",
1131	 subcommand of perf.
1132	 If you want to use "perf lock", you also need to turn on
1133	 CONFIG_EVENT_TRACING.
1134
1135	 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
1136	 (CONFIG_LOCKDEP defines "acquire" and "release" events.)
1137
1138config DEBUG_RT_MUTEXES
1139	bool "RT Mutex debugging, deadlock detection"
1140	depends on DEBUG_KERNEL && RT_MUTEXES
1141	help
1142	 This allows rt mutex semantics violations and rt mutex related
1143	 deadlocks (lockups) to be detected and reported automatically.
1144
1145config DEBUG_SPINLOCK
1146	bool "Spinlock and rw-lock debugging: basic checks"
1147	depends on DEBUG_KERNEL
1148	select UNINLINE_SPIN_UNLOCK
1149	help
1150	  Say Y here and build SMP to catch missing spinlock initialization
1151	  and certain other kinds of spinlock errors commonly made.  This is
1152	  best used in conjunction with the NMI watchdog so that spinlock
1153	  deadlocks are also debuggable.
1154
1155config DEBUG_MUTEXES
1156	bool "Mutex debugging: basic checks"
1157	depends on DEBUG_KERNEL
1158	help
1159	 This feature allows mutex semantics violations to be detected and
1160	 reported.
1161
1162config DEBUG_WW_MUTEX_SLOWPATH
1163	bool "Wait/wound mutex debugging: Slowpath testing"
1164	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1165	select DEBUG_LOCK_ALLOC
1166	select DEBUG_SPINLOCK
1167	select DEBUG_MUTEXES
1168	help
1169	 This feature enables slowpath testing for w/w mutex users by
1170	 injecting additional -EDEADLK wound/backoff cases. Together with
1171	 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
1172	 will test all possible w/w mutex interface abuse with the
1173	 exception of simply not acquiring all the required locks.
1174	 Note that this feature can introduce significant overhead, so
1175	 it really should not be enabled in a production or distro kernel,
1176	 even a debug kernel.  If you are a driver writer, enable it.  If
1177	 you are a distro, do not.
1178
1179config DEBUG_RWSEMS
1180	bool "RW Semaphore debugging: basic checks"
1181	depends on DEBUG_KERNEL
1182	help
1183	  This debugging feature allows mismatched rw semaphore locks
1184	  and unlocks to be detected and reported.
1185
1186config DEBUG_LOCK_ALLOC
1187	bool "Lock debugging: detect incorrect freeing of live locks"
1188	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1189	select DEBUG_SPINLOCK
1190	select DEBUG_MUTEXES
1191	select DEBUG_RT_MUTEXES if RT_MUTEXES
1192	select LOCKDEP
1193	help
1194	 This feature will check whether any held lock (spinlock, rwlock,
1195	 mutex or rwsem) is incorrectly freed by the kernel, via any of the
1196	 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
1197	 vfree(), etc.), whether a live lock is incorrectly reinitialized via
1198	 spin_lock_init()/mutex_init()/etc., or whether there is any lock
1199	 held during task exit.
1200
1201config LOCKDEP
1202	bool
1203	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
1204	select STACKTRACE
1205	select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86
1206	select KALLSYMS
1207	select KALLSYMS_ALL
1208
1209config LOCKDEP_SMALL
1210	bool
1211
1212config DEBUG_LOCKDEP
1213	bool "Lock dependency engine debugging"
1214	depends on DEBUG_KERNEL && LOCKDEP
1215	help
1216	  If you say Y here, the lock dependency engine will do
1217	  additional runtime checks to debug itself, at the price
1218	  of more runtime overhead.
1219
1220config DEBUG_ATOMIC_SLEEP
1221	bool "Sleep inside atomic section checking"
1222	select PREEMPT_COUNT
1223	depends on DEBUG_KERNEL
1224	depends on !ARCH_NO_PREEMPT
1225	help
1226	  If you say Y here, various routines which may sleep will become very
1227	  noisy if they are called inside atomic sections: when a spinlock is
1228	  held, inside an rcu read side critical section, inside preempt disabled
1229	  sections, inside an interrupt, etc...
1230
1231config DEBUG_LOCKING_API_SELFTESTS
1232	bool "Locking API boot-time self-tests"
1233	depends on DEBUG_KERNEL
1234	help
1235	  Say Y here if you want the kernel to run a short self-test during
1236	  bootup. The self-test checks whether common types of locking bugs
1237	  are detected by debugging mechanisms or not. (if you disable
1238	  lock debugging then those bugs wont be detected of course.)
1239	  The following locking APIs are covered: spinlocks, rwlocks,
1240	  mutexes and rwsems.
1241
1242config LOCK_TORTURE_TEST
1243	tristate "torture tests for locking"
1244	depends on DEBUG_KERNEL
1245	select TORTURE_TEST
1246	help
1247	  This option provides a kernel module that runs torture tests
1248	  on kernel locking primitives.  The kernel module may be built
1249	  after the fact on the running kernel to be tested, if desired.
1250
1251	  Say Y here if you want kernel locking-primitive torture tests
1252	  to be built into the kernel.
1253	  Say M if you want these torture tests to build as a module.
1254	  Say N if you are unsure.
1255
1256config WW_MUTEX_SELFTEST
1257	tristate "Wait/wound mutex selftests"
1258	help
1259	  This option provides a kernel module that runs tests on the
1260	  on the struct ww_mutex locking API.
1261
1262	  It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction
1263	  with this test harness.
1264
1265	  Say M if you want these self tests to build as a module.
1266	  Say N if you are unsure.
1267
1268endmenu # lock debugging
1269
1270config TRACE_IRQFLAGS
1271	bool
1272	help
1273	  Enables hooks to interrupt enabling and disabling for
1274	  either tracing or lock debugging.
1275
1276config STACKTRACE
1277	bool "Stack backtrace support"
1278	depends on STACKTRACE_SUPPORT
1279	help
1280	  This option causes the kernel to create a /proc/pid/stack for
1281	  every process, showing its current stack trace.
1282	  It is also used by various kernel debugging features that require
1283	  stack trace generation.
1284
1285config WARN_ALL_UNSEEDED_RANDOM
1286	bool "Warn for all uses of unseeded randomness"
1287	default n
1288	help
1289	  Some parts of the kernel contain bugs relating to their use of
1290	  cryptographically secure random numbers before it's actually possible
1291	  to generate those numbers securely. This setting ensures that these
1292	  flaws don't go unnoticed, by enabling a message, should this ever
1293	  occur. This will allow people with obscure setups to know when things
1294	  are going wrong, so that they might contact developers about fixing
1295	  it.
1296
1297	  Unfortunately, on some models of some architectures getting
1298	  a fully seeded CRNG is extremely difficult, and so this can
1299	  result in dmesg getting spammed for a surprisingly long
1300	  time.  This is really bad from a security perspective, and
1301	  so architecture maintainers really need to do what they can
1302	  to get the CRNG seeded sooner after the system is booted.
1303	  However, since users cannot do anything actionable to
1304	  address this, by default the kernel will issue only a single
1305	  warning for the first use of unseeded randomness.
1306
1307	  Say Y here if you want to receive warnings for all uses of
1308	  unseeded randomness.  This will be of use primarily for
1309	  those developers interested in improving the security of
1310	  Linux kernels running on their architecture (or
1311	  subarchitecture).
1312
1313config DEBUG_KOBJECT
1314	bool "kobject debugging"
1315	depends on DEBUG_KERNEL
1316	help
1317	  If you say Y here, some extra kobject debugging messages will be sent
1318	  to the syslog.
1319
1320config DEBUG_KOBJECT_RELEASE
1321	bool "kobject release debugging"
1322	depends on DEBUG_OBJECTS_TIMERS
1323	help
1324	  kobjects are reference counted objects.  This means that their
1325	  last reference count put is not predictable, and the kobject can
1326	  live on past the point at which a driver decides to drop it's
1327	  initial reference to the kobject gained on allocation.  An
1328	  example of this would be a struct device which has just been
1329	  unregistered.
1330
1331	  However, some buggy drivers assume that after such an operation,
1332	  the memory backing the kobject can be immediately freed.  This
1333	  goes completely against the principles of a refcounted object.
1334
1335	  If you say Y here, the kernel will delay the release of kobjects
1336	  on the last reference count to improve the visibility of this
1337	  kind of kobject release bug.
1338
1339config HAVE_DEBUG_BUGVERBOSE
1340	bool
1341
1342menu "Debug kernel data structures"
1343
1344config DEBUG_LIST
1345	bool "Debug linked list manipulation"
1346	depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
1347	help
1348	  Enable this to turn on extended checks in the linked-list
1349	  walking routines.
1350
1351	  If unsure, say N.
1352
1353config DEBUG_PLIST
1354	bool "Debug priority linked list manipulation"
1355	depends on DEBUG_KERNEL
1356	help
1357	  Enable this to turn on extended checks in the priority-ordered
1358	  linked-list (plist) walking routines.  This checks the entire
1359	  list multiple times during each manipulation.
1360
1361	  If unsure, say N.
1362
1363config DEBUG_SG
1364	bool "Debug SG table operations"
1365	depends on DEBUG_KERNEL
1366	help
1367	  Enable this to turn on checks on scatter-gather tables. This can
1368	  help find problems with drivers that do not properly initialize
1369	  their sg tables.
1370
1371	  If unsure, say N.
1372
1373config DEBUG_NOTIFIERS
1374	bool "Debug notifier call chains"
1375	depends on DEBUG_KERNEL
1376	help
1377	  Enable this to turn on sanity checking for notifier call chains.
1378	  This is most useful for kernel developers to make sure that
1379	  modules properly unregister themselves from notifier chains.
1380	  This is a relatively cheap check but if you care about maximum
1381	  performance, say N.
1382
1383config BUG_ON_DATA_CORRUPTION
1384	bool "Trigger a BUG when data corruption is detected"
1385	select DEBUG_LIST
1386	help
1387	  Select this option if the kernel should BUG when it encounters
1388	  data corruption in kernel memory structures when they get checked
1389	  for validity.
1390
1391	  If unsure, say N.
1392
1393endmenu
1394
1395config DEBUG_CREDENTIALS
1396	bool "Debug credential management"
1397	depends on DEBUG_KERNEL
1398	help
1399	  Enable this to turn on some debug checking for credential
1400	  management.  The additional code keeps track of the number of
1401	  pointers from task_structs to any given cred struct, and checks to
1402	  see that this number never exceeds the usage count of the cred
1403	  struct.
1404
1405	  Furthermore, if SELinux is enabled, this also checks that the
1406	  security pointer in the cred struct is never seen to be invalid.
1407
1408	  If unsure, say N.
1409
1410source "kernel/rcu/Kconfig.debug"
1411
1412config DEBUG_WQ_FORCE_RR_CPU
1413	bool "Force round-robin CPU selection for unbound work items"
1414	depends on DEBUG_KERNEL
1415	default n
1416	help
1417	  Workqueue used to implicitly guarantee that work items queued
1418	  without explicit CPU specified are put on the local CPU.  This
1419	  guarantee is no longer true and while local CPU is still
1420	  preferred work items may be put on foreign CPUs.  Kernel
1421	  parameter "workqueue.debug_force_rr_cpu" is added to force
1422	  round-robin CPU selection to flush out usages which depend on the
1423	  now broken guarantee.  This config option enables the debug
1424	  feature by default.  When enabled, memory and cache locality will
1425	  be impacted.
1426
1427config DEBUG_BLOCK_EXT_DEVT
1428	bool "Force extended block device numbers and spread them"
1429	depends on DEBUG_KERNEL
1430	depends on BLOCK
1431	default n
1432	help
1433	  BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1434	  SOME DISTRIBUTIONS.  DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1435	  YOU ARE DOING.  Distros, please enable this and fix whatever
1436	  is broken.
1437
1438	  Conventionally, block device numbers are allocated from
1439	  predetermined contiguous area.  However, extended block area
1440	  may introduce non-contiguous block device numbers.  This
1441	  option forces most block device numbers to be allocated from
1442	  the extended space and spreads them to discover kernel or
1443	  userland code paths which assume predetermined contiguous
1444	  device number allocation.
1445
1446	  Note that turning on this debug option shuffles all the
1447	  device numbers for all IDE and SCSI devices including libata
1448	  ones, so root partition specified using device number
1449	  directly (via rdev or root=MAJ:MIN) won't work anymore.
1450	  Textual device names (root=/dev/sdXn) will continue to work.
1451
1452	  Say N if you are unsure.
1453
1454config CPU_HOTPLUG_STATE_CONTROL
1455	bool "Enable CPU hotplug state control"
1456	depends on DEBUG_KERNEL
1457	depends on HOTPLUG_CPU
1458	default n
1459	help
1460	  Allows to write steps between "offline" and "online" to the CPUs
1461	  sysfs target file so states can be stepped granular. This is a debug
1462	  option for now as the hotplug machinery cannot be stopped and
1463	  restarted at arbitrary points yet.
1464
1465	  Say N if your are unsure.
1466
1467config LATENCYTOP
1468	bool "Latency measuring infrastructure"
1469	depends on DEBUG_KERNEL
1470	depends on STACKTRACE_SUPPORT
1471	depends on PROC_FS
1472	select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1473	select KALLSYMS
1474	select KALLSYMS_ALL
1475	select STACKTRACE
1476	select SCHEDSTATS
1477	select SCHED_DEBUG
1478	help
1479	  Enable this option if you want to use the LatencyTOP tool
1480	  to find out which userspace is blocking on what kernel operations.
1481
1482source "kernel/trace/Kconfig"
1483
1484config PROVIDE_OHCI1394_DMA_INIT
1485	bool "Remote debugging over FireWire early on boot"
1486	depends on PCI && X86
1487	help
1488	  If you want to debug problems which hang or crash the kernel early
1489	  on boot and the crashing machine has a FireWire port, you can use
1490	  this feature to remotely access the memory of the crashed machine
1491	  over FireWire. This employs remote DMA as part of the OHCI1394
1492	  specification which is now the standard for FireWire controllers.
1493
1494	  With remote DMA, you can monitor the printk buffer remotely using
1495	  firescope and access all memory below 4GB using fireproxy from gdb.
1496	  Even controlling a kernel debugger is possible using remote DMA.
1497
1498	  Usage:
1499
1500	  If ohci1394_dma=early is used as boot parameter, it will initialize
1501	  all OHCI1394 controllers which are found in the PCI config space.
1502
1503	  As all changes to the FireWire bus such as enabling and disabling
1504	  devices cause a bus reset and thereby disable remote DMA for all
1505	  devices, be sure to have the cable plugged and FireWire enabled on
1506	  the debugging host before booting the debug target for debugging.
1507
1508	  This code (~1k) is freed after boot. By then, the firewire stack
1509	  in charge of the OHCI-1394 controllers should be used instead.
1510
1511	  See Documentation/debugging-via-ohci1394.txt for more information.
1512
1513source "samples/Kconfig"
1514
1515config ARCH_HAS_DEVMEM_IS_ALLOWED
1516	bool
1517
1518config STRICT_DEVMEM
1519	bool "Filter access to /dev/mem"
1520	depends on MMU && DEVMEM
1521	depends on ARCH_HAS_DEVMEM_IS_ALLOWED
1522	default y if PPC || X86 || ARM64
1523	help
1524	  If this option is disabled, you allow userspace (root) access to all
1525	  of memory, including kernel and userspace memory. Accidental
1526	  access to this is obviously disastrous, but specific access can
1527	  be used by people debugging the kernel. Note that with PAT support
1528	  enabled, even in this case there are restrictions on /dev/mem
1529	  use due to the cache aliasing requirements.
1530
1531	  If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
1532	  file only allows userspace access to PCI space and the BIOS code and
1533	  data regions.  This is sufficient for dosemu and X and all common
1534	  users of /dev/mem.
1535
1536	  If in doubt, say Y.
1537
1538config IO_STRICT_DEVMEM
1539	bool "Filter I/O access to /dev/mem"
1540	depends on STRICT_DEVMEM
1541	help
1542	  If this option is disabled, you allow userspace (root) access to all
1543	  io-memory regardless of whether a driver is actively using that
1544	  range.  Accidental access to this is obviously disastrous, but
1545	  specific access can be used by people debugging kernel drivers.
1546
1547	  If this option is switched on, the /dev/mem file only allows
1548	  userspace access to *idle* io-memory ranges (see /proc/iomem) This
1549	  may break traditional users of /dev/mem (dosemu, legacy X, etc...)
1550	  if the driver using a given range cannot be disabled.
1551
1552	  If in doubt, say Y.
1553
1554menu "$(SRCARCH) Debugging"
1555
1556source "arch/$(SRCARCH)/Kconfig.debug"
1557
1558endmenu
1559
1560menu "Kernel Testing and Coverage"
1561
1562source "lib/kunit/Kconfig"
1563
1564config NOTIFIER_ERROR_INJECTION
1565	tristate "Notifier error injection"
1566	depends on DEBUG_KERNEL
1567	select DEBUG_FS
1568	help
1569	  This option provides the ability to inject artificial errors to
1570	  specified notifier chain callbacks. It is useful to test the error
1571	  handling of notifier call chain failures.
1572
1573	  Say N if unsure.
1574
1575config PM_NOTIFIER_ERROR_INJECT
1576	tristate "PM notifier error injection module"
1577	depends on PM && NOTIFIER_ERROR_INJECTION
1578	default m if PM_DEBUG
1579	help
1580	  This option provides the ability to inject artificial errors to
1581	  PM notifier chain callbacks.  It is controlled through debugfs
1582	  interface /sys/kernel/debug/notifier-error-inject/pm
1583
1584	  If the notifier call chain should be failed with some events
1585	  notified, write the error code to "actions/<notifier event>/error".
1586
1587	  Example: Inject PM suspend error (-12 = -ENOMEM)
1588
1589	  # cd /sys/kernel/debug/notifier-error-inject/pm/
1590	  # echo -12 > actions/PM_SUSPEND_PREPARE/error
1591	  # echo mem > /sys/power/state
1592	  bash: echo: write error: Cannot allocate memory
1593
1594	  To compile this code as a module, choose M here: the module will
1595	  be called pm-notifier-error-inject.
1596
1597	  If unsure, say N.
1598
1599config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1600	tristate "OF reconfig notifier error injection module"
1601	depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
1602	help
1603	  This option provides the ability to inject artificial errors to
1604	  OF reconfig notifier chain callbacks.  It is controlled
1605	  through debugfs interface under
1606	  /sys/kernel/debug/notifier-error-inject/OF-reconfig/
1607
1608	  If the notifier call chain should be failed with some events
1609	  notified, write the error code to "actions/<notifier event>/error".
1610
1611	  To compile this code as a module, choose M here: the module will
1612	  be called of-reconfig-notifier-error-inject.
1613
1614	  If unsure, say N.
1615
1616config NETDEV_NOTIFIER_ERROR_INJECT
1617	tristate "Netdev notifier error injection module"
1618	depends on NET && NOTIFIER_ERROR_INJECTION
1619	help
1620	  This option provides the ability to inject artificial errors to
1621	  netdevice notifier chain callbacks.  It is controlled through debugfs
1622	  interface /sys/kernel/debug/notifier-error-inject/netdev
1623
1624	  If the notifier call chain should be failed with some events
1625	  notified, write the error code to "actions/<notifier event>/error".
1626
1627	  Example: Inject netdevice mtu change error (-22 = -EINVAL)
1628
1629	  # cd /sys/kernel/debug/notifier-error-inject/netdev
1630	  # echo -22 > actions/NETDEV_CHANGEMTU/error
1631	  # ip link set eth0 mtu 1024
1632	  RTNETLINK answers: Invalid argument
1633
1634	  To compile this code as a module, choose M here: the module will
1635	  be called netdev-notifier-error-inject.
1636
1637	  If unsure, say N.
1638
1639config FUNCTION_ERROR_INJECTION
1640	def_bool y
1641	depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1642
1643config FAULT_INJECTION
1644	bool "Fault-injection framework"
1645	depends on DEBUG_KERNEL
1646	help
1647	  Provide fault-injection framework.
1648	  For more details, see Documentation/fault-injection/.
1649
1650config FAILSLAB
1651	bool "Fault-injection capability for kmalloc"
1652	depends on FAULT_INJECTION
1653	depends on SLAB || SLUB
1654	help
1655	  Provide fault-injection capability for kmalloc.
1656
1657config FAIL_PAGE_ALLOC
1658	bool "Fault-injection capabilitiy for alloc_pages()"
1659	depends on FAULT_INJECTION
1660	help
1661	  Provide fault-injection capability for alloc_pages().
1662
1663config FAIL_MAKE_REQUEST
1664	bool "Fault-injection capability for disk IO"
1665	depends on FAULT_INJECTION && BLOCK
1666	help
1667	  Provide fault-injection capability for disk IO.
1668
1669config FAIL_IO_TIMEOUT
1670	bool "Fault-injection capability for faking disk interrupts"
1671	depends on FAULT_INJECTION && BLOCK
1672	help
1673	  Provide fault-injection capability on end IO handling. This
1674	  will make the block layer "forget" an interrupt as configured,
1675	  thus exercising the error handling.
1676
1677	  Only works with drivers that use the generic timeout handling,
1678	  for others it wont do anything.
1679
1680config FAIL_FUTEX
1681	bool "Fault-injection capability for futexes"
1682	select DEBUG_FS
1683	depends on FAULT_INJECTION && FUTEX
1684	help
1685	  Provide fault-injection capability for futexes.
1686
1687config FAULT_INJECTION_DEBUG_FS
1688	bool "Debugfs entries for fault-injection capabilities"
1689	depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1690	help
1691	  Enable configuration of fault-injection capabilities via debugfs.
1692
1693config FAIL_FUNCTION
1694	bool "Fault-injection capability for functions"
1695	depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1696	help
1697	  Provide function-based fault-injection capability.
1698	  This will allow you to override a specific function with a return
1699	  with given return value. As a result, function caller will see
1700	  an error value and have to handle it. This is useful to test the
1701	  error handling in various subsystems.
1702
1703config FAIL_MMC_REQUEST
1704	bool "Fault-injection capability for MMC IO"
1705	depends on FAULT_INJECTION_DEBUG_FS && MMC
1706	help
1707	  Provide fault-injection capability for MMC IO.
1708	  This will make the mmc core return data errors. This is
1709	  useful to test the error handling in the mmc block device
1710	  and to test how the mmc host driver handles retries from
1711	  the block device.
1712
1713config FAULT_INJECTION_STACKTRACE_FILTER
1714	bool "stacktrace filter for fault-injection capabilities"
1715	depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
1716	depends on !X86_64
1717	select STACKTRACE
1718	select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1719	help
1720	  Provide stacktrace filter for fault-injection capabilities
1721
1722config ARCH_HAS_KCOV
1723	bool
1724	help
1725	  An architecture should select this when it can successfully
1726	  build and run with CONFIG_KCOV. This typically requires
1727	  disabling instrumentation for some early boot code.
1728
1729config CC_HAS_SANCOV_TRACE_PC
1730	def_bool $(cc-option,-fsanitize-coverage=trace-pc)
1731
1732
1733config KCOV
1734	bool "Code coverage for fuzzing"
1735	depends on ARCH_HAS_KCOV
1736	depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
1737	select DEBUG_FS
1738	select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
1739	help
1740	  KCOV exposes kernel code coverage information in a form suitable
1741	  for coverage-guided fuzzing (randomized testing).
1742
1743	  If RANDOMIZE_BASE is enabled, PC values will not be stable across
1744	  different machines and across reboots. If you need stable PC values,
1745	  disable RANDOMIZE_BASE.
1746
1747	  For more details, see Documentation/dev-tools/kcov.rst.
1748
1749config KCOV_ENABLE_COMPARISONS
1750	bool "Enable comparison operands collection by KCOV"
1751	depends on KCOV
1752	depends on $(cc-option,-fsanitize-coverage=trace-cmp)
1753	help
1754	  KCOV also exposes operands of every comparison in the instrumented
1755	  code along with operand sizes and PCs of the comparison instructions.
1756	  These operands can be used by fuzzing engines to improve the quality
1757	  of fuzzing coverage.
1758
1759config KCOV_INSTRUMENT_ALL
1760	bool "Instrument all code by default"
1761	depends on KCOV
1762	default y
1763	help
1764	  If you are doing generic system call fuzzing (like e.g. syzkaller),
1765	  then you will want to instrument the whole kernel and you should
1766	  say y here. If you are doing more targeted fuzzing (like e.g.
1767	  filesystem fuzzing with AFL) then you will want to enable coverage
1768	  for more specific subsets of files, and should say n here.
1769
1770menuconfig RUNTIME_TESTING_MENU
1771	bool "Runtime Testing"
1772	def_bool y
1773
1774if RUNTIME_TESTING_MENU
1775
1776config LKDTM
1777	tristate "Linux Kernel Dump Test Tool Module"
1778	depends on DEBUG_FS
1779	help
1780	This module enables testing of the different dumping mechanisms by
1781	inducing system failures at predefined crash points.
1782	If you don't need it: say N
1783	Choose M here to compile this code as a module. The module will be
1784	called lkdtm.
1785
1786	Documentation on how to use the module can be found in
1787	Documentation/fault-injection/provoke-crashes.rst
1788
1789config TEST_LIST_SORT
1790	tristate "Linked list sorting test"
1791	depends on DEBUG_KERNEL || m
1792	help
1793	  Enable this to turn on 'list_sort()' function test. This test is
1794	  executed only once during system boot (so affects only boot time),
1795	  or at module load time.
1796
1797	  If unsure, say N.
1798
1799config TEST_MIN_HEAP
1800	tristate "Min heap test"
1801	depends on DEBUG_KERNEL || m
1802	help
1803	  Enable this to turn on min heap function tests. This test is
1804	  executed only once during system boot (so affects only boot time),
1805	  or at module load time.
1806
1807	  If unsure, say N.
1808
1809config TEST_SORT
1810	tristate "Array-based sort test"
1811	depends on DEBUG_KERNEL || m
1812	help
1813	  This option enables the self-test function of 'sort()' at boot,
1814	  or at module load time.
1815
1816	  If unsure, say N.
1817
1818config KPROBES_SANITY_TEST
1819	bool "Kprobes sanity tests"
1820	depends on DEBUG_KERNEL
1821	depends on KPROBES
1822	help
1823	  This option provides for testing basic kprobes functionality on
1824	  boot. Samples of kprobe and kretprobe are inserted and
1825	  verified for functionality.
1826
1827	  Say N if you are unsure.
1828
1829config BACKTRACE_SELF_TEST
1830	tristate "Self test for the backtrace code"
1831	depends on DEBUG_KERNEL
1832	help
1833	  This option provides a kernel module that can be used to test
1834	  the kernel stack backtrace code. This option is not useful
1835	  for distributions or general kernels, but only for kernel
1836	  developers working on architecture code.
1837
1838	  Note that if you want to also test saved backtraces, you will
1839	  have to enable STACKTRACE as well.
1840
1841	  Say N if you are unsure.
1842
1843config RBTREE_TEST
1844	tristate "Red-Black tree test"
1845	depends on DEBUG_KERNEL
1846	help
1847	  A benchmark measuring the performance of the rbtree library.
1848	  Also includes rbtree invariant checks.
1849
1850config REED_SOLOMON_TEST
1851	tristate "Reed-Solomon library test"
1852	depends on DEBUG_KERNEL || m
1853	select REED_SOLOMON
1854	select REED_SOLOMON_ENC16
1855	select REED_SOLOMON_DEC16
1856	help
1857	  This option enables the self-test function of rslib at boot,
1858	  or at module load time.
1859
1860	  If unsure, say N.
1861
1862config INTERVAL_TREE_TEST
1863	tristate "Interval tree test"
1864	depends on DEBUG_KERNEL
1865	select INTERVAL_TREE
1866	help
1867	  A benchmark measuring the performance of the interval tree library
1868
1869config PERCPU_TEST
1870	tristate "Per cpu operations test"
1871	depends on m && DEBUG_KERNEL
1872	help
1873	  Enable this option to build test module which validates per-cpu
1874	  operations.
1875
1876	  If unsure, say N.
1877
1878config ATOMIC64_SELFTEST
1879	tristate "Perform an atomic64_t self-test"
1880	help
1881	  Enable this option to test the atomic64_t functions at boot or
1882	  at module load time.
1883
1884	  If unsure, say N.
1885
1886config ASYNC_RAID6_TEST
1887	tristate "Self test for hardware accelerated raid6 recovery"
1888	depends on ASYNC_RAID6_RECOV
1889	select ASYNC_MEMCPY
1890	---help---
1891	  This is a one-shot self test that permutes through the
1892	  recovery of all the possible two disk failure scenarios for a
1893	  N-disk array.  Recovery is performed with the asynchronous
1894	  raid6 recovery routines, and will optionally use an offload
1895	  engine if one is available.
1896
1897	  If unsure, say N.
1898
1899config TEST_HEXDUMP
1900	tristate "Test functions located in the hexdump module at runtime"
1901
1902config TEST_STRING_HELPERS
1903	tristate "Test functions located in the string_helpers module at runtime"
1904
1905config TEST_STRSCPY
1906	tristate "Test strscpy*() family of functions at runtime"
1907
1908config TEST_KSTRTOX
1909	tristate "Test kstrto*() family of functions at runtime"
1910
1911config TEST_PRINTF
1912	tristate "Test printf() family of functions at runtime"
1913
1914config TEST_BITMAP
1915	tristate "Test bitmap_*() family of functions at runtime"
1916	help
1917	  Enable this option to test the bitmap functions at boot.
1918
1919	  If unsure, say N.
1920
1921config TEST_BITFIELD
1922	tristate "Test bitfield functions at runtime"
1923	help
1924	  Enable this option to test the bitfield functions at boot.
1925
1926	  If unsure, say N.
1927
1928config TEST_UUID
1929	tristate "Test functions located in the uuid module at runtime"
1930
1931config TEST_XARRAY
1932	tristate "Test the XArray code at runtime"
1933
1934config TEST_OVERFLOW
1935	tristate "Test check_*_overflow() functions at runtime"
1936
1937config TEST_RHASHTABLE
1938	tristate "Perform selftest on resizable hash table"
1939	help
1940	  Enable this option to test the rhashtable functions at boot.
1941
1942	  If unsure, say N.
1943
1944config TEST_HASH
1945	tristate "Perform selftest on hash functions"
1946	help
1947	  Enable this option to test the kernel's integer (<linux/hash.h>),
1948	  string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1949	  hash functions on boot (or module load).
1950
1951	  This is intended to help people writing architecture-specific
1952	  optimized versions.  If unsure, say N.
1953
1954config TEST_IDA
1955	tristate "Perform selftest on IDA functions"
1956
1957config TEST_PARMAN
1958	tristate "Perform selftest on priority array manager"
1959	depends on PARMAN
1960	help
1961	  Enable this option to test priority array manager on boot
1962	  (or module load).
1963
1964	  If unsure, say N.
1965
1966config TEST_IRQ_TIMINGS
1967	bool "IRQ timings selftest"
1968	depends on IRQ_TIMINGS
1969	help
1970	  Enable this option to test the irq timings code on boot.
1971
1972	  If unsure, say N.
1973
1974config TEST_LKM
1975	tristate "Test module loading with 'hello world' module"
1976	depends on m
1977	help
1978	  This builds the "test_module" module that emits "Hello, world"
1979	  on printk when loaded. It is designed to be used for basic
1980	  evaluation of the module loading subsystem (for example when
1981	  validating module verification). It lacks any extra dependencies,
1982	  and will not normally be loaded by the system unless explicitly
1983	  requested by name.
1984
1985	  If unsure, say N.
1986
1987config TEST_VMALLOC
1988	tristate "Test module for stress/performance analysis of vmalloc allocator"
1989	default n
1990       depends on MMU
1991	depends on m
1992	help
1993	  This builds the "test_vmalloc" module that should be used for
1994	  stress and performance analysis. So, any new change for vmalloc
1995	  subsystem can be evaluated from performance and stability point
1996	  of view.
1997
1998	  If unsure, say N.
1999
2000config TEST_USER_COPY
2001	tristate "Test user/kernel boundary protections"
2002	depends on m
2003	help
2004	  This builds the "test_user_copy" module that runs sanity checks
2005	  on the copy_to/from_user infrastructure, making sure basic
2006	  user/kernel boundary testing is working. If it fails to load,
2007	  a regression has been detected in the user/kernel memory boundary
2008	  protections.
2009
2010	  If unsure, say N.
2011
2012config TEST_BPF
2013	tristate "Test BPF filter functionality"
2014	depends on m && NET
2015	help
2016	  This builds the "test_bpf" module that runs various test vectors
2017	  against the BPF interpreter or BPF JIT compiler depending on the
2018	  current setting. This is in particular useful for BPF JIT compiler
2019	  development, but also to run regression tests against changes in
2020	  the interpreter code. It also enables test stubs for eBPF maps and
2021	  verifier used by user space verifier testsuite.
2022
2023	  If unsure, say N.
2024
2025config TEST_BLACKHOLE_DEV
2026	tristate "Test blackhole netdev functionality"
2027	depends on m && NET
2028	help
2029	  This builds the "test_blackhole_dev" module that validates the
2030	  data path through this blackhole netdev.
2031
2032	  If unsure, say N.
2033
2034config FIND_BIT_BENCHMARK
2035	tristate "Test find_bit functions"
2036	help
2037	  This builds the "test_find_bit" module that measure find_*_bit()
2038	  functions performance.
2039
2040	  If unsure, say N.
2041
2042config TEST_FIRMWARE
2043	tristate "Test firmware loading via userspace interface"
2044	depends on FW_LOADER
2045	help
2046	  This builds the "test_firmware" module that creates a userspace
2047	  interface for testing firmware loading. This can be used to
2048	  control the triggering of firmware loading without needing an
2049	  actual firmware-using device. The contents can be rechecked by
2050	  userspace.
2051
2052	  If unsure, say N.
2053
2054config TEST_SYSCTL
2055	tristate "sysctl test driver"
2056	depends on PROC_SYSCTL
2057	help
2058	  This builds the "test_sysctl" module. This driver enables to test the
2059	  proc sysctl interfaces available to drivers safely without affecting
2060	  production knobs which might alter system functionality.
2061
2062	  If unsure, say N.
2063
2064config SYSCTL_KUNIT_TEST
2065	tristate "KUnit test for sysctl"
2066	depends on KUNIT
2067	help
2068	  This builds the proc sysctl unit test, which runs on boot.
2069	  Tests the API contract and implementation correctness of sysctl.
2070	  For more information on KUnit and unit tests in general please refer
2071	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2072
2073	  If unsure, say N.
2074
2075config LIST_KUNIT_TEST
2076	tristate "KUnit Test for Kernel Linked-list structures"
2077	depends on KUNIT
2078	help
2079	  This builds the linked list KUnit test suite.
2080	  It tests that the API and basic functionality of the list_head type
2081	  and associated macros.
2082
2083	  KUnit tests run during boot and output the results to the debug log
2084	  in TAP format (http://testanything.org/). Only useful for kernel devs
2085	  running the KUnit test harness, and not intended for inclusion into a
2086	  production build.
2087
2088	  For more information on KUnit and unit tests in general please refer
2089	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2090
2091	  If unsure, say N.
2092
2093config TEST_UDELAY
2094	tristate "udelay test driver"
2095	help
2096	  This builds the "udelay_test" module that helps to make sure
2097	  that udelay() is working properly.
2098
2099	  If unsure, say N.
2100
2101config TEST_STATIC_KEYS
2102	tristate "Test static keys"
2103	depends on m
2104	help
2105	  Test the static key interfaces.
2106
2107	  If unsure, say N.
2108
2109config TEST_KMOD
2110	tristate "kmod stress tester"
2111	depends on m
2112	depends on NETDEVICES && NET_CORE && INET # for TUN
2113	depends on BLOCK
2114	select TEST_LKM
2115	select XFS_FS
2116	select TUN
2117	select BTRFS_FS
2118	help
2119	  Test the kernel's module loading mechanism: kmod. kmod implements
2120	  support to load modules using the Linux kernel's usermode helper.
2121	  This test provides a series of tests against kmod.
2122
2123	  Although technically you can either build test_kmod as a module or
2124	  into the kernel we disallow building it into the kernel since
2125	  it stress tests request_module() and this will very likely cause
2126	  some issues by taking over precious threads available from other
2127	  module load requests, ultimately this could be fatal.
2128
2129	  To run tests run:
2130
2131	  tools/testing/selftests/kmod/kmod.sh --help
2132
2133	  If unsure, say N.
2134
2135config TEST_DEBUG_VIRTUAL
2136	tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2137	depends on DEBUG_VIRTUAL
2138	help
2139	  Test the kernel's ability to detect incorrect calls to
2140	  virt_to_phys() done against the non-linear part of the
2141	  kernel's virtual address map.
2142
2143	  If unsure, say N.
2144
2145config TEST_MEMCAT_P
2146	tristate "Test memcat_p() helper function"
2147	help
2148	  Test the memcat_p() helper for correctly merging two
2149	  pointer arrays together.
2150
2151	  If unsure, say N.
2152
2153config TEST_LIVEPATCH
2154	tristate "Test livepatching"
2155	default n
2156	depends on DYNAMIC_DEBUG
2157	depends on LIVEPATCH
2158	depends on m
2159	help
2160	  Test kernel livepatching features for correctness.  The tests will
2161	  load test modules that will be livepatched in various scenarios.
2162
2163	  To run all the livepatching tests:
2164
2165	  make -C tools/testing/selftests TARGETS=livepatch run_tests
2166
2167	  Alternatively, individual tests may be invoked:
2168
2169	  tools/testing/selftests/livepatch/test-callbacks.sh
2170	  tools/testing/selftests/livepatch/test-livepatch.sh
2171	  tools/testing/selftests/livepatch/test-shadow-vars.sh
2172
2173	  If unsure, say N.
2174
2175config TEST_OBJAGG
2176	tristate "Perform selftest on object aggreration manager"
2177	default n
2178	depends on OBJAGG
2179	help
2180	  Enable this option to test object aggregation manager on boot
2181	  (or module load).
2182
2183
2184config TEST_STACKINIT
2185	tristate "Test level of stack variable initialization"
2186	help
2187	  Test if the kernel is zero-initializing stack variables and
2188	  padding. Coverage is controlled by compiler flags,
2189	  CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2190	  or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2191
2192	  If unsure, say N.
2193
2194config TEST_MEMINIT
2195	tristate "Test heap/page initialization"
2196	help
2197	  Test if the kernel is zero-initializing heap and page allocations.
2198	  This can be useful to test init_on_alloc and init_on_free features.
2199
2200	  If unsure, say N.
2201
2202endif # RUNTIME_TESTING_MENU
2203
2204config MEMTEST
2205	bool "Memtest"
2206	---help---
2207	  This option adds a kernel parameter 'memtest', which allows memtest
2208	  to be set.
2209	        memtest=0, mean disabled; -- default
2210	        memtest=1, mean do 1 test pattern;
2211	        ...
2212	        memtest=17, mean do 17 test patterns.
2213	  If you are unsure how to answer this question, answer N.
2214
2215
2216
2217config HYPERV_TESTING
2218	bool "Microsoft Hyper-V driver testing"
2219	default n
2220	depends on HYPERV && DEBUG_FS
2221	help
2222	  Select this option to enable Hyper-V vmbus testing.
2223
2224endmenu # "Kernel Testing and Coverage"
2225
2226endmenu # Kernel hacking
2227