xref: /openbmc/linux/lib/Kconfig.debug (revision b9890054)
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 && PREEMPT && 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 "lib/kunit/Kconfig"
1487
1488config NOTIFIER_ERROR_INJECTION
1489	tristate "Notifier error injection"
1490	depends on DEBUG_KERNEL
1491	select DEBUG_FS
1492	help
1493	  This option provides the ability to inject artificial errors to
1494	  specified notifier chain callbacks. It is useful to test the error
1495	  handling of notifier call chain failures.
1496
1497	  Say N if unsure.
1498
1499config PM_NOTIFIER_ERROR_INJECT
1500	tristate "PM notifier error injection module"
1501	depends on PM && NOTIFIER_ERROR_INJECTION
1502	default m if PM_DEBUG
1503	help
1504	  This option provides the ability to inject artificial errors to
1505	  PM notifier chain callbacks.  It is controlled through debugfs
1506	  interface /sys/kernel/debug/notifier-error-inject/pm
1507
1508	  If the notifier call chain should be failed with some events
1509	  notified, write the error code to "actions/<notifier event>/error".
1510
1511	  Example: Inject PM suspend error (-12 = -ENOMEM)
1512
1513	  # cd /sys/kernel/debug/notifier-error-inject/pm/
1514	  # echo -12 > actions/PM_SUSPEND_PREPARE/error
1515	  # echo mem > /sys/power/state
1516	  bash: echo: write error: Cannot allocate memory
1517
1518	  To compile this code as a module, choose M here: the module will
1519	  be called pm-notifier-error-inject.
1520
1521	  If unsure, say N.
1522
1523config OF_RECONFIG_NOTIFIER_ERROR_INJECT
1524	tristate "OF reconfig notifier error injection module"
1525	depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
1526	help
1527	  This option provides the ability to inject artificial errors to
1528	  OF reconfig notifier chain callbacks.  It is controlled
1529	  through debugfs interface under
1530	  /sys/kernel/debug/notifier-error-inject/OF-reconfig/
1531
1532	  If the notifier call chain should be failed with some events
1533	  notified, write the error code to "actions/<notifier event>/error".
1534
1535	  To compile this code as a module, choose M here: the module will
1536	  be called of-reconfig-notifier-error-inject.
1537
1538	  If unsure, say N.
1539
1540config NETDEV_NOTIFIER_ERROR_INJECT
1541	tristate "Netdev notifier error injection module"
1542	depends on NET && NOTIFIER_ERROR_INJECTION
1543	help
1544	  This option provides the ability to inject artificial errors to
1545	  netdevice notifier chain callbacks.  It is controlled through debugfs
1546	  interface /sys/kernel/debug/notifier-error-inject/netdev
1547
1548	  If the notifier call chain should be failed with some events
1549	  notified, write the error code to "actions/<notifier event>/error".
1550
1551	  Example: Inject netdevice mtu change error (-22 = -EINVAL)
1552
1553	  # cd /sys/kernel/debug/notifier-error-inject/netdev
1554	  # echo -22 > actions/NETDEV_CHANGEMTU/error
1555	  # ip link set eth0 mtu 1024
1556	  RTNETLINK answers: Invalid argument
1557
1558	  To compile this code as a module, choose M here: the module will
1559	  be called netdev-notifier-error-inject.
1560
1561	  If unsure, say N.
1562
1563config FUNCTION_ERROR_INJECTION
1564	def_bool y
1565	depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
1566
1567config FAULT_INJECTION
1568	bool "Fault-injection framework"
1569	depends on DEBUG_KERNEL
1570	help
1571	  Provide fault-injection framework.
1572	  For more details, see Documentation/fault-injection/.
1573
1574config FAILSLAB
1575	bool "Fault-injection capability for kmalloc"
1576	depends on FAULT_INJECTION
1577	depends on SLAB || SLUB
1578	help
1579	  Provide fault-injection capability for kmalloc.
1580
1581config FAIL_PAGE_ALLOC
1582	bool "Fault-injection capabilitiy for alloc_pages()"
1583	depends on FAULT_INJECTION
1584	help
1585	  Provide fault-injection capability for alloc_pages().
1586
1587config FAIL_MAKE_REQUEST
1588	bool "Fault-injection capability for disk IO"
1589	depends on FAULT_INJECTION && BLOCK
1590	help
1591	  Provide fault-injection capability for disk IO.
1592
1593config FAIL_IO_TIMEOUT
1594	bool "Fault-injection capability for faking disk interrupts"
1595	depends on FAULT_INJECTION && BLOCK
1596	help
1597	  Provide fault-injection capability on end IO handling. This
1598	  will make the block layer "forget" an interrupt as configured,
1599	  thus exercising the error handling.
1600
1601	  Only works with drivers that use the generic timeout handling,
1602	  for others it wont do anything.
1603
1604config FAIL_FUTEX
1605	bool "Fault-injection capability for futexes"
1606	select DEBUG_FS
1607	depends on FAULT_INJECTION && FUTEX
1608	help
1609	  Provide fault-injection capability for futexes.
1610
1611config FAULT_INJECTION_DEBUG_FS
1612	bool "Debugfs entries for fault-injection capabilities"
1613	depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1614	help
1615	  Enable configuration of fault-injection capabilities via debugfs.
1616
1617config FAIL_FUNCTION
1618	bool "Fault-injection capability for functions"
1619	depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
1620	help
1621	  Provide function-based fault-injection capability.
1622	  This will allow you to override a specific function with a return
1623	  with given return value. As a result, function caller will see
1624	  an error value and have to handle it. This is useful to test the
1625	  error handling in various subsystems.
1626
1627config FAIL_MMC_REQUEST
1628	bool "Fault-injection capability for MMC IO"
1629	depends on FAULT_INJECTION_DEBUG_FS && MMC
1630	help
1631	  Provide fault-injection capability for MMC IO.
1632	  This will make the mmc core return data errors. This is
1633	  useful to test the error handling in the mmc block device
1634	  and to test how the mmc host driver handles retries from
1635	  the block device.
1636
1637config FAULT_INJECTION_STACKTRACE_FILTER
1638	bool "stacktrace filter for fault-injection capabilities"
1639	depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
1640	depends on !X86_64
1641	select STACKTRACE
1642	select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
1643	help
1644	  Provide stacktrace filter for fault-injection capabilities
1645
1646endmenu # "Kernel Testing and Coverage"
1647
1648menu "Kernel Testing and Coverage"
1649
1650config ARCH_HAS_KCOV
1651	bool
1652	help
1653	  An architecture should select this when it can successfully
1654	  build and run with CONFIG_KCOV. This typically requires
1655	  disabling instrumentation for some early boot code.
1656
1657config CC_HAS_SANCOV_TRACE_PC
1658	def_bool $(cc-option,-fsanitize-coverage=trace-pc)
1659
1660
1661config KCOV
1662	bool "Code coverage for fuzzing"
1663	depends on ARCH_HAS_KCOV
1664	depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
1665	select DEBUG_FS
1666	select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
1667	help
1668	  KCOV exposes kernel code coverage information in a form suitable
1669	  for coverage-guided fuzzing (randomized testing).
1670
1671	  If RANDOMIZE_BASE is enabled, PC values will not be stable across
1672	  different machines and across reboots. If you need stable PC values,
1673	  disable RANDOMIZE_BASE.
1674
1675	  For more details, see Documentation/dev-tools/kcov.rst.
1676
1677config KCOV_ENABLE_COMPARISONS
1678	bool "Enable comparison operands collection by KCOV"
1679	depends on KCOV
1680	depends on $(cc-option,-fsanitize-coverage=trace-cmp)
1681	help
1682	  KCOV also exposes operands of every comparison in the instrumented
1683	  code along with operand sizes and PCs of the comparison instructions.
1684	  These operands can be used by fuzzing engines to improve the quality
1685	  of fuzzing coverage.
1686
1687config KCOV_INSTRUMENT_ALL
1688	bool "Instrument all code by default"
1689	depends on KCOV
1690	default y
1691	help
1692	  If you are doing generic system call fuzzing (like e.g. syzkaller),
1693	  then you will want to instrument the whole kernel and you should
1694	  say y here. If you are doing more targeted fuzzing (like e.g.
1695	  filesystem fuzzing with AFL) then you will want to enable coverage
1696	  for more specific subsets of files, and should say n here.
1697
1698menuconfig RUNTIME_TESTING_MENU
1699	bool "Runtime Testing"
1700	def_bool y
1701
1702if RUNTIME_TESTING_MENU
1703
1704config LKDTM
1705	tristate "Linux Kernel Dump Test Tool Module"
1706	depends on DEBUG_FS
1707	help
1708	This module enables testing of the different dumping mechanisms by
1709	inducing system failures at predefined crash points.
1710	If you don't need it: say N
1711	Choose M here to compile this code as a module. The module will be
1712	called lkdtm.
1713
1714	Documentation on how to use the module can be found in
1715	Documentation/fault-injection/provoke-crashes.rst
1716
1717config TEST_LIST_SORT
1718	tristate "Linked list sorting test"
1719	depends on DEBUG_KERNEL || m
1720	help
1721	  Enable this to turn on 'list_sort()' function test. This test is
1722	  executed only once during system boot (so affects only boot time),
1723	  or at module load time.
1724
1725	  If unsure, say N.
1726
1727config TEST_SORT
1728	tristate "Array-based sort test"
1729	depends on DEBUG_KERNEL || m
1730	help
1731	  This option enables the self-test function of 'sort()' at boot,
1732	  or at module load time.
1733
1734	  If unsure, say N.
1735
1736config KPROBES_SANITY_TEST
1737	bool "Kprobes sanity tests"
1738	depends on DEBUG_KERNEL
1739	depends on KPROBES
1740	help
1741	  This option provides for testing basic kprobes functionality on
1742	  boot. Samples of kprobe and kretprobe are inserted and
1743	  verified for functionality.
1744
1745	  Say N if you are unsure.
1746
1747config BACKTRACE_SELF_TEST
1748	tristate "Self test for the backtrace code"
1749	depends on DEBUG_KERNEL
1750	help
1751	  This option provides a kernel module that can be used to test
1752	  the kernel stack backtrace code. This option is not useful
1753	  for distributions or general kernels, but only for kernel
1754	  developers working on architecture code.
1755
1756	  Note that if you want to also test saved backtraces, you will
1757	  have to enable STACKTRACE as well.
1758
1759	  Say N if you are unsure.
1760
1761config RBTREE_TEST
1762	tristate "Red-Black tree test"
1763	depends on DEBUG_KERNEL
1764	help
1765	  A benchmark measuring the performance of the rbtree library.
1766	  Also includes rbtree invariant checks.
1767
1768config REED_SOLOMON_TEST
1769	tristate "Reed-Solomon library test"
1770	depends on DEBUG_KERNEL || m
1771	select REED_SOLOMON
1772	select REED_SOLOMON_ENC16
1773	select REED_SOLOMON_DEC16
1774	help
1775	  This option enables the self-test function of rslib at boot,
1776	  or at module load time.
1777
1778	  If unsure, say N.
1779
1780config INTERVAL_TREE_TEST
1781	tristate "Interval tree test"
1782	depends on DEBUG_KERNEL
1783	select INTERVAL_TREE
1784	help
1785	  A benchmark measuring the performance of the interval tree library
1786
1787config PERCPU_TEST
1788	tristate "Per cpu operations test"
1789	depends on m && DEBUG_KERNEL
1790	help
1791	  Enable this option to build test module which validates per-cpu
1792	  operations.
1793
1794	  If unsure, say N.
1795
1796config ATOMIC64_SELFTEST
1797	tristate "Perform an atomic64_t self-test"
1798	help
1799	  Enable this option to test the atomic64_t functions at boot or
1800	  at module load time.
1801
1802	  If unsure, say N.
1803
1804config ASYNC_RAID6_TEST
1805	tristate "Self test for hardware accelerated raid6 recovery"
1806	depends on ASYNC_RAID6_RECOV
1807	select ASYNC_MEMCPY
1808	---help---
1809	  This is a one-shot self test that permutes through the
1810	  recovery of all the possible two disk failure scenarios for a
1811	  N-disk array.  Recovery is performed with the asynchronous
1812	  raid6 recovery routines, and will optionally use an offload
1813	  engine if one is available.
1814
1815	  If unsure, say N.
1816
1817config TEST_HEXDUMP
1818	tristate "Test functions located in the hexdump module at runtime"
1819
1820config TEST_STRING_HELPERS
1821	tristate "Test functions located in the string_helpers module at runtime"
1822
1823config TEST_STRSCPY
1824	tristate "Test strscpy*() family of functions at runtime"
1825
1826config TEST_KSTRTOX
1827	tristate "Test kstrto*() family of functions at runtime"
1828
1829config TEST_PRINTF
1830	tristate "Test printf() family of functions at runtime"
1831
1832config TEST_BITMAP
1833	tristate "Test bitmap_*() family of functions at runtime"
1834	help
1835	  Enable this option to test the bitmap functions at boot.
1836
1837	  If unsure, say N.
1838
1839config TEST_BITFIELD
1840	tristate "Test bitfield functions at runtime"
1841	help
1842	  Enable this option to test the bitfield functions at boot.
1843
1844	  If unsure, say N.
1845
1846config TEST_UUID
1847	tristate "Test functions located in the uuid module at runtime"
1848
1849config TEST_XARRAY
1850	tristate "Test the XArray code at runtime"
1851
1852config TEST_OVERFLOW
1853	tristate "Test check_*_overflow() functions at runtime"
1854
1855config TEST_RHASHTABLE
1856	tristate "Perform selftest on resizable hash table"
1857	help
1858	  Enable this option to test the rhashtable functions at boot.
1859
1860	  If unsure, say N.
1861
1862config TEST_HASH
1863	tristate "Perform selftest on hash functions"
1864	help
1865	  Enable this option to test the kernel's integer (<linux/hash.h>),
1866	  string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
1867	  hash functions on boot (or module load).
1868
1869	  This is intended to help people writing architecture-specific
1870	  optimized versions.  If unsure, say N.
1871
1872config TEST_IDA
1873	tristate "Perform selftest on IDA functions"
1874
1875config TEST_PARMAN
1876	tristate "Perform selftest on priority array manager"
1877	depends on PARMAN
1878	help
1879	  Enable this option to test priority array manager on boot
1880	  (or module load).
1881
1882	  If unsure, say N.
1883
1884config TEST_IRQ_TIMINGS
1885	bool "IRQ timings selftest"
1886	depends on IRQ_TIMINGS
1887	help
1888	  Enable this option to test the irq timings code on boot.
1889
1890	  If unsure, say N.
1891
1892config TEST_LKM
1893	tristate "Test module loading with 'hello world' module"
1894	depends on m
1895	help
1896	  This builds the "test_module" module that emits "Hello, world"
1897	  on printk when loaded. It is designed to be used for basic
1898	  evaluation of the module loading subsystem (for example when
1899	  validating module verification). It lacks any extra dependencies,
1900	  and will not normally be loaded by the system unless explicitly
1901	  requested by name.
1902
1903	  If unsure, say N.
1904
1905config TEST_VMALLOC
1906	tristate "Test module for stress/performance analysis of vmalloc allocator"
1907	default n
1908       depends on MMU
1909	depends on m
1910	help
1911	  This builds the "test_vmalloc" module that should be used for
1912	  stress and performance analysis. So, any new change for vmalloc
1913	  subsystem can be evaluated from performance and stability point
1914	  of view.
1915
1916	  If unsure, say N.
1917
1918config TEST_USER_COPY
1919	tristate "Test user/kernel boundary protections"
1920	depends on m
1921	help
1922	  This builds the "test_user_copy" module that runs sanity checks
1923	  on the copy_to/from_user infrastructure, making sure basic
1924	  user/kernel boundary testing is working. If it fails to load,
1925	  a regression has been detected in the user/kernel memory boundary
1926	  protections.
1927
1928	  If unsure, say N.
1929
1930config TEST_BPF
1931	tristate "Test BPF filter functionality"
1932	depends on m && NET
1933	help
1934	  This builds the "test_bpf" module that runs various test vectors
1935	  against the BPF interpreter or BPF JIT compiler depending on the
1936	  current setting. This is in particular useful for BPF JIT compiler
1937	  development, but also to run regression tests against changes in
1938	  the interpreter code. It also enables test stubs for eBPF maps and
1939	  verifier used by user space verifier testsuite.
1940
1941	  If unsure, say N.
1942
1943config TEST_BLACKHOLE_DEV
1944	tristate "Test blackhole netdev functionality"
1945	depends on m && NET
1946	help
1947	  This builds the "test_blackhole_dev" module that validates the
1948	  data path through this blackhole netdev.
1949
1950	  If unsure, say N.
1951
1952config FIND_BIT_BENCHMARK
1953	tristate "Test find_bit functions"
1954	help
1955	  This builds the "test_find_bit" module that measure find_*_bit()
1956	  functions performance.
1957
1958	  If unsure, say N.
1959
1960config TEST_FIRMWARE
1961	tristate "Test firmware loading via userspace interface"
1962	depends on FW_LOADER
1963	help
1964	  This builds the "test_firmware" module that creates a userspace
1965	  interface for testing firmware loading. This can be used to
1966	  control the triggering of firmware loading without needing an
1967	  actual firmware-using device. The contents can be rechecked by
1968	  userspace.
1969
1970	  If unsure, say N.
1971
1972config TEST_SYSCTL
1973	tristate "sysctl test driver"
1974	depends on PROC_SYSCTL
1975	help
1976	  This builds the "test_sysctl" module. This driver enables to test the
1977	  proc sysctl interfaces available to drivers safely without affecting
1978	  production knobs which might alter system functionality.
1979
1980	  If unsure, say N.
1981
1982config SYSCTL_KUNIT_TEST
1983	bool "KUnit test for sysctl"
1984	depends on KUNIT
1985	help
1986	  This builds the proc sysctl unit test, which runs on boot.
1987	  Tests the API contract and implementation correctness of sysctl.
1988	  For more information on KUnit and unit tests in general please refer
1989	  to the KUnit documentation in Documentation/dev-tools/kunit/.
1990
1991	  If unsure, say N.
1992
1993config LIST_KUNIT_TEST
1994	bool "KUnit Test for Kernel Linked-list structures"
1995	depends on KUNIT
1996	help
1997	  This builds the linked list KUnit test suite.
1998	  It tests that the API and basic functionality of the list_head type
1999	  and associated macros.
2000
2001	  KUnit tests run during boot and output the results to the debug log
2002	  in TAP format (http://testanything.org/). Only useful for kernel devs
2003	  running the KUnit test harness, and not intended for inclusion into a
2004	  production build.
2005
2006	  For more information on KUnit and unit tests in general please refer
2007	  to the KUnit documentation in Documentation/dev-tools/kunit/.
2008
2009	  If unsure, say N.
2010
2011config TEST_UDELAY
2012	tristate "udelay test driver"
2013	help
2014	  This builds the "udelay_test" module that helps to make sure
2015	  that udelay() is working properly.
2016
2017	  If unsure, say N.
2018
2019config TEST_STATIC_KEYS
2020	tristate "Test static keys"
2021	depends on m
2022	help
2023	  Test the static key interfaces.
2024
2025	  If unsure, say N.
2026
2027config TEST_KMOD
2028	tristate "kmod stress tester"
2029	depends on m
2030	depends on NETDEVICES && NET_CORE && INET # for TUN
2031	depends on BLOCK
2032	select TEST_LKM
2033	select XFS_FS
2034	select TUN
2035	select BTRFS_FS
2036	help
2037	  Test the kernel's module loading mechanism: kmod. kmod implements
2038	  support to load modules using the Linux kernel's usermode helper.
2039	  This test provides a series of tests against kmod.
2040
2041	  Although technically you can either build test_kmod as a module or
2042	  into the kernel we disallow building it into the kernel since
2043	  it stress tests request_module() and this will very likely cause
2044	  some issues by taking over precious threads available from other
2045	  module load requests, ultimately this could be fatal.
2046
2047	  To run tests run:
2048
2049	  tools/testing/selftests/kmod/kmod.sh --help
2050
2051	  If unsure, say N.
2052
2053config TEST_DEBUG_VIRTUAL
2054	tristate "Test CONFIG_DEBUG_VIRTUAL feature"
2055	depends on DEBUG_VIRTUAL
2056	help
2057	  Test the kernel's ability to detect incorrect calls to
2058	  virt_to_phys() done against the non-linear part of the
2059	  kernel's virtual address map.
2060
2061	  If unsure, say N.
2062
2063config TEST_MEMCAT_P
2064	tristate "Test memcat_p() helper function"
2065	help
2066	  Test the memcat_p() helper for correctly merging two
2067	  pointer arrays together.
2068
2069	  If unsure, say N.
2070
2071config TEST_LIVEPATCH
2072	tristate "Test livepatching"
2073	default n
2074	depends on DYNAMIC_DEBUG
2075	depends on LIVEPATCH
2076	depends on m
2077	help
2078	  Test kernel livepatching features for correctness.  The tests will
2079	  load test modules that will be livepatched in various scenarios.
2080
2081	  To run all the livepatching tests:
2082
2083	  make -C tools/testing/selftests TARGETS=livepatch run_tests
2084
2085	  Alternatively, individual tests may be invoked:
2086
2087	  tools/testing/selftests/livepatch/test-callbacks.sh
2088	  tools/testing/selftests/livepatch/test-livepatch.sh
2089	  tools/testing/selftests/livepatch/test-shadow-vars.sh
2090
2091	  If unsure, say N.
2092
2093config TEST_OBJAGG
2094	tristate "Perform selftest on object aggreration manager"
2095	default n
2096	depends on OBJAGG
2097	help
2098	  Enable this option to test object aggregation manager on boot
2099	  (or module load).
2100
2101
2102config TEST_STACKINIT
2103	tristate "Test level of stack variable initialization"
2104	help
2105	  Test if the kernel is zero-initializing stack variables and
2106	  padding. Coverage is controlled by compiler flags,
2107	  CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
2108	  or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
2109
2110	  If unsure, say N.
2111
2112config TEST_MEMINIT
2113	tristate "Test heap/page initialization"
2114	help
2115	  Test if the kernel is zero-initializing heap and page allocations.
2116	  This can be useful to test init_on_alloc and init_on_free features.
2117
2118	  If unsure, say N.
2119
2120endif # RUNTIME_TESTING_MENU
2121
2122config MEMTEST
2123	bool "Memtest"
2124	---help---
2125	  This option adds a kernel parameter 'memtest', which allows memtest
2126	  to be set.
2127	        memtest=0, mean disabled; -- default
2128	        memtest=1, mean do 1 test pattern;
2129	        ...
2130	        memtest=17, mean do 17 test patterns.
2131	  If you are unsure how to answer this question, answer N.
2132
2133source "samples/Kconfig"
2134
2135config ARCH_HAS_DEVMEM_IS_ALLOWED
2136	bool
2137
2138config STRICT_DEVMEM
2139	bool "Filter access to /dev/mem"
2140	depends on MMU && DEVMEM
2141	depends on ARCH_HAS_DEVMEM_IS_ALLOWED
2142	default y if PPC || X86 || ARM64
2143	---help---
2144	  If this option is disabled, you allow userspace (root) access to all
2145	  of memory, including kernel and userspace memory. Accidental
2146	  access to this is obviously disastrous, but specific access can
2147	  be used by people debugging the kernel. Note that with PAT support
2148	  enabled, even in this case there are restrictions on /dev/mem
2149	  use due to the cache aliasing requirements.
2150
2151	  If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
2152	  file only allows userspace access to PCI space and the BIOS code and
2153	  data regions.  This is sufficient for dosemu and X and all common
2154	  users of /dev/mem.
2155
2156	  If in doubt, say Y.
2157
2158config IO_STRICT_DEVMEM
2159	bool "Filter I/O access to /dev/mem"
2160	depends on STRICT_DEVMEM
2161	---help---
2162	  If this option is disabled, you allow userspace (root) access to all
2163	  io-memory regardless of whether a driver is actively using that
2164	  range.  Accidental access to this is obviously disastrous, but
2165	  specific access can be used by people debugging kernel drivers.
2166
2167	  If this option is switched on, the /dev/mem file only allows
2168	  userspace access to *idle* io-memory ranges (see /proc/iomem) This
2169	  may break traditional users of /dev/mem (dosemu, legacy X, etc...)
2170	  if the driver using a given range cannot be disabled.
2171
2172	  If in doubt, say Y.
2173
2174menu "$(SRCARCH) Debugging"
2175
2176source "arch/$(SRCARCH)/Kconfig.debug"
2177
2178endmenu
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 hacking
2188