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