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