brintos

brintos / linux-shallow public Read only

0
0
Text · 101.5 KiB · 7312ae7 Raw
3107 lines · plain
1# SPDX-License-Identifier: GPL-2.0-only2menu "Kernel hacking"3 4menu "printk and dmesg options"5 6config PRINTK_TIME7	bool "Show timing information on printks"8	depends on PRINTK9	help10	  Selecting this option causes time stamps of the printk()11	  messages to be added to the output of the syslog() system12	  call and at the console.13 14	  The timestamp is always recorded internally, and exported15	  to /dev/kmsg. This flag just specifies if the timestamp should16	  be included, not that the timestamp is recorded.17 18	  The behavior is also controlled by the kernel command line19	  parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst20 21config PRINTK_CALLER22	bool "Show caller information on printks"23	depends on PRINTK24	help25	  Selecting this option causes printk() to add a caller "thread id" (if26	  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 threads30	  concurrently call printk() for many times, for it is difficult to31	  interpret without knowing where these lines (or sometimes individual32	  line which was divided into multiple lines due to race) came from.33 34	  Since toggling after boot makes the code racy, currently there is35	  no option to enable/disable at the kernel command line parameter or36	  sysfs interface.37 38config STACKTRACE_BUILD_ID39	bool "Show build ID information in stacktraces"40	depends on PRINTK41	help42	  Selecting this option adds build ID information for symbols in43	  stacktraces printed with the printk format '%p[SR]b'.44 45	  This option is intended for distros where debuginfo is not easily46	  accessible but can be downloaded given the build ID of the vmlinux or47	  kernel module where the function is located.48 49config CONSOLE_LOGLEVEL_DEFAULT50	int "Default console loglevel (1-15)"51	range 1 1552	default "7"53	help54	  Default loglevel to determine what will be printed on the console.55 56	  Setting a default here is equivalent to passing in loglevel=<x> in57	  the kernel bootargs. loglevel=<x> continues to override whatever58	  value is specified here as well.59 60	  Note: This does not affect the log level of un-prefixed printk()61	  usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT62	  option.63 64config CONSOLE_LOGLEVEL_QUIET65	int "quiet console loglevel (1-15)"66	range 1 1567	default "4"68	help69	  loglevel to use when "quiet" is passed on the kernel commandline.70 71	  When "quiet" is passed on the kernel commandline this loglevel72	  will be used as the loglevel. IOW passing "quiet" will be the73	  equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"74 75config MESSAGE_LOGLEVEL_DEFAULT76	int "Default message log level (1-7)"77	range 1 778	default "4"79	help80	  Default log level for printk statements with no specified priority.81 82	  This was hard-coded to KERN_WARNING since at least 2.6.10 but folks83	  that are auditing their logs closely may want to set it to a lower84	  priority.85 86	  Note: This does not affect what message level gets printed on the console87	  by default. To change that, use loglevel=<x> in the kernel bootargs,88	  or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.89 90config BOOT_PRINTK_DELAY91	bool "Delay each boot printk message by N milliseconds"92	depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY93	help94	  This build option allows you to read kernel boot messages95	  by inserting a short delay after each one.  The delay is96	  specified in milliseconds on the kernel command line,97	  using "boot_delay=N".98 99	  It is likely that you would also need to use "lpj=M" to preset100	  the "loops per jiffy" value.101	  See a previous boot log for the "lpj" value to use for your102	  system, and then set "lpj=M" before setting "boot_delay=N".103	  NOTE:  Using this option may adversely affect SMP systems.104	  I.e., processors other than the first one may not boot up.105	  BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect106	  what it believes to be lockup conditions.107 108config DYNAMIC_DEBUG109	bool "Enable dynamic printk() support"110	default n111	depends on PRINTK112	depends on (DEBUG_FS || PROC_FS)113	select DYNAMIC_DEBUG_CORE114	help115 116	  Compiles debug level messages into the kernel, which would not117	  otherwise be available at runtime. These messages can then be118	  enabled/disabled based on various levels of scope - per source file,119	  function, module, format string, and line number. This mechanism120	  implicitly compiles in all pr_debug() and dev_dbg() calls, which121	  enlarges the kernel text size by about 2%.122 123	  If a source file is compiled with DEBUG flag set, any124	  pr_debug() calls in it are enabled by default, but can be125	  disabled at runtime as below.  Note that DEBUG flag is126	  turned on by many CONFIG_*DEBUG* options.127 128	  Usage:129 130	  Dynamic debugging is controlled via the 'dynamic_debug/control' file,131	  which is contained in the 'debugfs' filesystem or procfs.132	  Thus, the debugfs or procfs filesystem must first be mounted before133	  making use of this feature.134	  We refer the control file as: <debugfs>/dynamic_debug/control. This135	  file contains a list of the debug statements that can be enabled. The136	  format for each line of the file is:137 138		filename:lineno [module]function flags format139 140	  filename : source file of the debug statement141	  lineno : line number of the debug statement142	  module : module that contains the debug statement143	  function : function that contains the debug statement144	  flags : '=p' means the line is turned 'on' for printing145	  format : the format used for the debug statement146 147	  From a live system:148 149		nullarbor:~ # cat <debugfs>/dynamic_debug/control150		# filename:lineno [module]function flags format151		fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"152		fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"153		fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"154 155	  Example usage:156 157		// enable the message at line 1603 of file svcsock.c158		nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >159						<debugfs>/dynamic_debug/control160 161		// enable all the messages in file svcsock.c162		nullarbor:~ # echo -n 'file svcsock.c +p' >163						<debugfs>/dynamic_debug/control164 165		// enable all the messages in the NFS server module166		nullarbor:~ # echo -n 'module nfsd +p' >167						<debugfs>/dynamic_debug/control168 169		// enable all 12 messages in the function svc_process()170		nullarbor:~ # echo -n 'func svc_process +p' >171						<debugfs>/dynamic_debug/control172 173		// disable all 12 messages in the function svc_process()174		nullarbor:~ # echo -n 'func svc_process -p' >175						<debugfs>/dynamic_debug/control176 177	  See Documentation/admin-guide/dynamic-debug-howto.rst for additional178	  information.179 180config DYNAMIC_DEBUG_CORE181	bool "Enable core function of dynamic debug support"182	depends on PRINTK183	depends on (DEBUG_FS || PROC_FS)184	help185	  Enable core functional support of dynamic debug. It is useful186	  when you want to tie dynamic debug to your kernel modules with187	  DYNAMIC_DEBUG_MODULE defined for each of them, especially for188	  the case of embedded system where the kernel image size is189	  sensitive for people.190 191config SYMBOLIC_ERRNAME192	bool "Support symbolic error names in printf"193	default y if PRINTK194	help195	  If you say Y here, the kernel's printf implementation will196	  be able to print symbolic error names such as ENOSPC instead197	  of the number 28. It makes the kernel image slightly larger198	  (about 3KB), but can make the kernel logs easier to read.199 200config DEBUG_BUGVERBOSE201	bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT202	depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)203	default y204	help205	  Say Y here to make BUG() panics output the file name and line number206	  of the BUG call as well as the EIP and oops trace.  This aids207	  debugging but costs about 70-100K of memory.208 209endmenu # "printk and dmesg options"210 211config DEBUG_KERNEL212	bool "Kernel debugging"213	help214	  Say Y here if you are developing drivers or trying to debug and215	  identify kernel problems.216 217config DEBUG_MISC218	bool "Miscellaneous debug code"219	default DEBUG_KERNEL220	depends on DEBUG_KERNEL221	help222	  Say Y here if you need to enable miscellaneous debug code that should223	  be under a more specific debug option but isn't.224 225menu "Compile-time checks and compiler options"226 227config DEBUG_INFO228	bool229	help230	  A kernel debug info option other than "None" has been selected231	  in the "Debug information" choice below, indicating that debug232	  information will be generated for build targets.233 234# Clang generates .uleb128 with label differences for DWARF v5, a feature that235# older binutils ports do not support when utilizing RISC-V style linker236# relaxation: https://sourceware.org/bugzilla/show_bug.cgi?id=27215237config AS_HAS_NON_CONST_ULEB128238	def_bool $(as-instr,.uleb128 .Lexpr_end4 - .Lexpr_start3\n.Lexpr_start3:\n.Lexpr_end4:)239 240choice241	prompt "Debug information"242	depends on DEBUG_KERNEL243	help244	  Selecting something other than "None" results in a kernel image245	  that will include debugging info resulting in a larger kernel image.246	  This adds debug symbols to the kernel and modules (gcc -g), and247	  is needed if you intend to use kernel crashdump or binary object248	  tools like crash, kgdb, LKCD, gdb, etc on the kernel.249 250	  Choose which version of DWARF debug info to emit. If unsure,251	  select "Toolchain default".252 253config DEBUG_INFO_NONE254	bool "Disable debug information"255	help256	  Do not build the kernel with debugging information, which will257	  result in a faster and smaller build.258 259config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT260	bool "Rely on the toolchain's implicit default DWARF version"261	select DEBUG_INFO262	depends on !CC_IS_CLANG || AS_IS_LLVM || CLANG_VERSION < 140000 || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_ULEB128)263	help264	  The implicit default version of DWARF debug info produced by a265	  toolchain changes over time.266 267	  This can break consumers of the debug info that haven't upgraded to268	  support newer revisions, and prevent testing newer versions, but269	  those should be less common scenarios.270 271config DEBUG_INFO_DWARF4272	bool "Generate DWARF Version 4 debuginfo"273	select DEBUG_INFO274	depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)275	help276	  Generate DWARF v4 debug info. This requires gcc 4.5+, binutils 2.35.2277	  if using clang without clang's integrated assembler, and gdb 7.0+.278 279	  If you have consumers of DWARF debug info that are not ready for280	  newer revisions of DWARF, you may wish to choose this or have your281	  config select this.282 283config DEBUG_INFO_DWARF5284	bool "Generate DWARF Version 5 debuginfo"285	select DEBUG_INFO286	depends on !ARCH_HAS_BROKEN_DWARF5287	depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_ULEB128)288	help289	  Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc290	  5.0+ accepts the -gdwarf-5 flag but only had partial support for some291	  draft features until 7.0), and gdb 8.0+.292 293	  Changes to the structure of debug info in Version 5 allow for around294	  15-18% savings in resulting image and debug info section sizes as295	  compared to DWARF Version 4. DWARF Version 5 standardizes previous296	  extensions such as accelerators for symbol indexing and the format297	  for fission (.dwo/.dwp) files. Users may not want to select this298	  config if they rely on tooling that has not yet been updated to299	  support DWARF Version 5.300 301endchoice # "Debug information"302 303if DEBUG_INFO304 305config DEBUG_INFO_REDUCED306	bool "Reduce debugging information"307	help308	  If you say Y here gcc is instructed to generate less debugging309	  information for structure types. This means that tools that310	  need full debugging information (like kgdb or systemtap) won't311	  be happy. But if you merely need debugging information to312	  resolve line numbers there is no loss. Advantage is that313	  build directory object sizes shrink dramatically over a full314	  DEBUG_INFO build and compile times are reduced too.315	  Only works with newer gcc versions.316 317choice318	prompt "Compressed Debug information"319	help320	  Compress the resulting debug info. Results in smaller debug info sections,321	  but requires that consumers are able to decompress the results.322 323	  If unsure, choose DEBUG_INFO_COMPRESSED_NONE.324 325config DEBUG_INFO_COMPRESSED_NONE326	bool "Don't compress debug information"327	help328	  Don't compress debug info sections.329 330config DEBUG_INFO_COMPRESSED_ZLIB331	bool "Compress debugging information with zlib"332	depends on $(cc-option,-gz=zlib)333	depends on $(ld-option,--compress-debug-sections=zlib)334	help335	  Compress the debug information using zlib.  Requires GCC 5.0+ or Clang336	  5.0+, binutils 2.26+, and zlib.337 338	  Users of dpkg-deb via scripts/package/builddeb may find an increase in339	  size of their debug .deb packages with this config set, due to the340	  debug info being compressed with zlib, then the object files being341	  recompressed with a different compression scheme. But this is still342	  preferable to setting $KDEB_COMPRESS to "none" which would be even343	  larger.344 345config DEBUG_INFO_COMPRESSED_ZSTD346	bool "Compress debugging information with zstd"347	depends on $(cc-option,-gz=zstd)348	depends on $(ld-option,--compress-debug-sections=zstd)349	help350	  Compress the debug information using zstd.  This may provide better351	  compression than zlib, for about the same time costs, but requires newer352	  toolchain support.  Requires GCC 13.0+ or Clang 16.0+, binutils 2.40+, and353	  zstd.354 355endchoice # "Compressed Debug information"356 357config DEBUG_INFO_SPLIT358	bool "Produce split debuginfo in .dwo files"359	depends on $(cc-option,-gsplit-dwarf)360	# RISC-V linker relaxation + -gsplit-dwarf has issues with LLVM and GCC361	# prior to 12.x:362	# https://github.com/llvm/llvm-project/issues/56642363	# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99090364	depends on !RISCV || GCC_VERSION >= 120000365	help366	  Generate debug info into separate .dwo files. This significantly367	  reduces the build directory size for builds with DEBUG_INFO,368	  because it stores the information only once on disk in .dwo369	  files instead of multiple times in object files and executables.370	  In addition the debug information is also compressed.371 372	  Requires recent gcc (4.7+) and recent gdb/binutils.373	  Any tool that packages or reads debug information would need374	  to know about the .dwo files and include them.375	  Incompatible with older versions of ccache.376 377config DEBUG_INFO_BTF378	bool "Generate BTF type information"379	depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED380	depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST381	depends on BPF_SYSCALL382	depends on PAHOLE_VERSION >= 116383	depends on DEBUG_INFO_DWARF4 || PAHOLE_VERSION >= 121384	# pahole uses elfutils, which does not have support for Hexagon relocations385	depends on !HEXAGON386	help387	  Generate deduplicated BTF type information from DWARF debug info.388	  Turning this on requires pahole v1.16 or later (v1.21 or later to389	  support DWARF 5), which will convert DWARF type info into equivalent390	  deduplicated BTF type info.391 392config PAHOLE_HAS_SPLIT_BTF393	def_bool PAHOLE_VERSION >= 119394 395config PAHOLE_HAS_BTF_TAG396	def_bool PAHOLE_VERSION >= 123397	depends on CC_IS_CLANG398	help399	  Decide whether pahole emits btf_tag attributes (btf_type_tag and400	  btf_decl_tag) or not. Currently only clang compiler implements401	  these attributes, so make the config depend on CC_IS_CLANG.402 403config PAHOLE_HAS_LANG_EXCLUDE404	def_bool PAHOLE_VERSION >= 124405	help406	  Support for the --lang_exclude flag which makes pahole exclude407	  compilation units from the supplied language. Used in Kbuild to408	  omit Rust CUs which are not supported in version 1.24 of pahole,409	  otherwise it would emit malformed kernel and module binaries when410	  using DEBUG_INFO_BTF_MODULES.411 412config DEBUG_INFO_BTF_MODULES413	bool "Generate BTF type information for kernel modules"414	default y415	depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF416	help417	  Generate compact split BTF type information for kernel modules.418 419config MODULE_ALLOW_BTF_MISMATCH420	bool "Allow loading modules with non-matching BTF type info"421	depends on DEBUG_INFO_BTF_MODULES422	help423	  For modules whose split BTF does not match vmlinux, load without424	  BTF rather than refusing to load. The default behavior with425	  module BTF enabled is to reject modules with such mismatches;426	  this option will still load module BTF where possible but ignore427	  it when a mismatch is found.428 429config GDB_SCRIPTS430	bool "Provide GDB scripts for kernel debugging"431	help432	  This creates the required links to GDB helper scripts in the433	  build directory. If you load vmlinux into gdb, the helper434	  scripts will be automatically imported by gdb as well, and435	  additional functions are available to analyze a Linux kernel436	  instance. See Documentation/dev-tools/gdb-kernel-debugging.rst437	  for further details.438 439endif # DEBUG_INFO440 441config FRAME_WARN442	int "Warn for stack frames larger than"443	range 0 8192444	default 0 if KMSAN445	default 2048 if GCC_PLUGIN_LATENT_ENTROPY446	default 2048 if PARISC447	default 1536 if (!64BIT && XTENSA)448	default 1280 if KASAN && !64BIT449	default 1024 if !64BIT450	default 2048 if 64BIT451	help452	  Tell the compiler to warn at build time for stack frames larger than this.453	  Setting this too low will cause a lot of warnings.454	  Setting it to 0 disables the warning.455 456config STRIP_ASM_SYMS457	bool "Strip assembler-generated symbols during link"458	default n459	help460	  Strip internal assembler-generated symbols during a link (symbols461	  that look like '.Lxxx') so they don't pollute the output of462	  get_wchan() and suchlike.463 464config READABLE_ASM465	bool "Generate readable assembler code"466	depends on DEBUG_KERNEL467	depends on CC_IS_GCC468	help469	  Disable some compiler optimizations that tend to generate human unreadable470	  assembler output. This may make the kernel slightly slower, but it helps471	  to keep kernel developers who have to stare a lot at assembler listings472	  sane.473 474config HEADERS_INSTALL475	bool "Install uapi headers to usr/include"476	depends on !UML477	help478	  This option will install uapi headers (headers exported to user-space)479	  into the usr/include directory for use during the kernel build.480	  This is unneeded for building the kernel itself, but needed for some481	  user-space program samples. It is also needed by some features such482	  as uapi header sanity checks.483 484config DEBUG_SECTION_MISMATCH485	bool "Enable full Section mismatch analysis"486	depends on CC_IS_GCC487	help488	  The section mismatch analysis checks if there are illegal489	  references from one section to another section.490	  During linktime or runtime, some sections are dropped;491	  any use of code/data previously in these sections would492	  most likely result in an oops.493	  In the code, functions and variables are annotated with494	  __init,, etc. (see the full list in include/linux/init.h),495	  which results in the code/data being placed in specific sections.496	  The section mismatch analysis is always performed after a full497	  kernel build, and enabling this option causes the following498	  additional step to occur:499	  - Add the option -fno-inline-functions-called-once to gcc commands.500	    When inlining a function annotated with __init in a non-init501	    function, we would lose the section information and thus502	    the analysis would not catch the illegal reference.503	    This option tells gcc to inline less (but it does result in504	    a larger kernel).505 506config SECTION_MISMATCH_WARN_ONLY507	bool "Make section mismatch errors non-fatal"508	default y509	help510	  If you say N here, the build process will fail if there are any511	  section mismatch, instead of just throwing warnings.512 513	  If unsure, say Y.514 515config DEBUG_FORCE_FUNCTION_ALIGN_64B516	bool "Force all function address 64B aligned"517	depends on EXPERT && (X86_64 || ARM64 || PPC32 || PPC64 || ARC || RISCV || S390)518	select FUNCTION_ALIGNMENT_64B519	help520	  There are cases that a commit from one domain changes the function521	  address alignment of other domains, and cause magic performance522	  bump (regression or improvement). Enable this option will help to523	  verify if the bump is caused by function alignment changes, while524	  it will slightly increase the kernel size and affect icache usage.525 526	  It is mainly for debug and performance tuning use.527 528#529# Select this config option from the architecture Kconfig, if it530# is preferred to always offer frame pointers as a config531# option on the architecture (regardless of KERNEL_DEBUG):532#533config ARCH_WANT_FRAME_POINTERS534	bool535 536config FRAME_POINTER537	bool "Compile the kernel with frame pointers"538	depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS539	default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS540	help541	  If you say Y here the resulting kernel image will be slightly542	  larger and slower, but it gives very useful debugging information543	  in case of kernel bugs. (precise oopses/stacktraces/warnings)544 545config OBJTOOL546	bool547 548config STACK_VALIDATION549	bool "Compile-time stack metadata validation"550	depends on HAVE_STACK_VALIDATION && UNWINDER_FRAME_POINTER551	select OBJTOOL552	default n553	help554	  Validate frame pointer rules at compile-time.  This helps ensure that555	  runtime stack traces are more reliable.556 557	  For more information, see558	  tools/objtool/Documentation/objtool.txt.559 560config NOINSTR_VALIDATION561	bool562	depends on HAVE_NOINSTR_VALIDATION && DEBUG_ENTRY563	select OBJTOOL564	default y565 566config VMLINUX_MAP567	bool "Generate vmlinux.map file when linking"568	depends on EXPERT569	help570	  Selecting this option will pass "-Map=vmlinux.map" to ld571	  when linking vmlinux. That file can be useful for verifying572	  and debugging magic section games, and for seeing which573	  pieces of code get eliminated with574	  CONFIG_LD_DEAD_CODE_DATA_ELIMINATION.575 576config BUILTIN_MODULE_RANGES577	bool "Generate address range information for builtin modules"578	depends on !LTO579	depends on VMLINUX_MAP580	help581	 When modules are built into the kernel, there will be no module name582	 associated with its symbols in /proc/kallsyms.  Tracers may want to583	 identify symbols by module name and symbol name regardless of whether584	 the module is configured as loadable or not.585 586	 This option generates modules.builtin.ranges in the build tree with587	 offset ranges (per ELF section) for the module(s) they belong to.588	 It also records an anchor symbol to determine the load address of the589	 section.590 591config DEBUG_FORCE_WEAK_PER_CPU592	bool "Force weak per-cpu definitions"593	depends on DEBUG_KERNEL594	help595	  s390 and alpha require percpu variables in modules to be596	  defined weak to work around addressing range issue which597	  puts the following two restrictions on percpu variable598	  definitions.599 600	  1. percpu symbols must be unique whether static or not601	  2. percpu variables can't be defined inside a function602 603	  To ensure that generic code follows the above rules, this604	  option forces all percpu variables to be defined as weak.605 606endmenu # "Compiler options"607 608menu "Generic Kernel Debugging Instruments"609 610config MAGIC_SYSRQ611	bool "Magic SysRq key"612	depends on !UML613	help614	  If you say Y here, you will have some control over the system even615	  if the system crashes for example during kernel debugging (e.g., you616	  will be able to flush the buffer cache to disk, reboot the system617	  immediately or dump some status information). This is accomplished618	  by pressing various keys while holding SysRq (Alt+PrintScreen). It619	  also works on a serial console (on PC hardware at least), if you620	  send a BREAK and then within 5 seconds a command keypress. The621	  keys are documented in <file:Documentation/admin-guide/sysrq.rst>.622	  Don't say Y unless you really know what this hack does.623 624config MAGIC_SYSRQ_DEFAULT_ENABLE625	hex "Enable magic SysRq key functions by default"626	depends on MAGIC_SYSRQ627	default 0x1628	help629	  Specifies which SysRq key functions are enabled by default.630	  This may be set to 1 or 0 to enable or disable them all, or631	  to a bitmask as described in Documentation/admin-guide/sysrq.rst.632 633config MAGIC_SYSRQ_SERIAL634	bool "Enable magic SysRq key over serial"635	depends on MAGIC_SYSRQ636	default y637	help638	  Many embedded boards have a disconnected TTL level serial which can639	  generate some garbage that can lead to spurious false sysrq detects.640	  This option allows you to decide whether you want to enable the641	  magic SysRq key.642 643config MAGIC_SYSRQ_SERIAL_SEQUENCE644	string "Char sequence that enables magic SysRq over serial"645	depends on MAGIC_SYSRQ_SERIAL646	default ""647	help648	  Specifies a sequence of characters that can follow BREAK to enable649	  SysRq on a serial console.650 651	  If unsure, leave an empty string and the option will not be enabled.652 653config DEBUG_FS654	bool "Debug Filesystem"655	help656	  debugfs is a virtual file system that kernel developers use to put657	  debugging files into.  Enable this option to be able to read and658	  write to these files.659 660	  For detailed documentation on the debugfs API, see661	  Documentation/filesystems/.662 663	  If unsure, say N.664 665choice666	prompt "Debugfs default access"667	depends on DEBUG_FS668	default DEBUG_FS_ALLOW_ALL669	help670	  This selects the default access restrictions for debugfs.671	  It can be overridden with kernel command line option672	  debugfs=[on,no-mount,off]. The restrictions apply for API access673	  and filesystem registration.674 675config DEBUG_FS_ALLOW_ALL676	bool "Access normal"677	help678	  No restrictions apply. Both API and filesystem registration679	  is on. This is the normal default operation.680 681config DEBUG_FS_DISALLOW_MOUNT682	bool "Do not register debugfs as filesystem"683	help684	  The API is open but filesystem is not loaded. Clients can still do685	  their work and read with debug tools that do not need686	  debugfs filesystem.687 688config DEBUG_FS_ALLOW_NONE689	bool "No access"690	help691	  Access is off. Clients get -PERM when trying to create nodes in692	  debugfs tree and debugfs is not registered as a filesystem.693	  Client can then back-off or continue without debugfs access.694 695endchoice696 697source "lib/Kconfig.kgdb"698source "lib/Kconfig.ubsan"699source "lib/Kconfig.kcsan"700 701endmenu702 703menu "Networking Debugging"704 705source "net/Kconfig.debug"706 707endmenu # "Networking Debugging"708 709menu "Memory Debugging"710 711source "mm/Kconfig.debug"712 713config DEBUG_OBJECTS714	bool "Debug object operations"715	depends on DEBUG_KERNEL716	help717	  If you say Y here, additional code will be inserted into the718	  kernel to track the life time of various objects and validate719	  the operations on those objects.720 721config DEBUG_OBJECTS_SELFTEST722	bool "Debug objects selftest"723	depends on DEBUG_OBJECTS724	help725	  This enables the selftest of the object debug code.726 727config DEBUG_OBJECTS_FREE728	bool "Debug objects in freed memory"729	depends on DEBUG_OBJECTS730	help731	  This enables checks whether a k/v free operation frees an area732	  which contains an object which has not been deactivated733	  properly. This can make kmalloc/kfree-intensive workloads734	  much slower.735 736config DEBUG_OBJECTS_TIMERS737	bool "Debug timer objects"738	depends on DEBUG_OBJECTS739	help740	  If you say Y here, additional code will be inserted into the741	  timer routines to track the life time of timer objects and742	  validate the timer operations.743 744config DEBUG_OBJECTS_WORK745	bool "Debug work objects"746	depends on DEBUG_OBJECTS747	help748	  If you say Y here, additional code will be inserted into the749	  work queue routines to track the life time of work objects and750	  validate the work operations.751 752config DEBUG_OBJECTS_RCU_HEAD753	bool "Debug RCU callbacks objects"754	depends on DEBUG_OBJECTS755	help756	  Enable this to turn on debugging of RCU list heads (call_rcu() usage).757 758config DEBUG_OBJECTS_PERCPU_COUNTER759	bool "Debug percpu counter objects"760	depends on DEBUG_OBJECTS761	help762	  If you say Y here, additional code will be inserted into the763	  percpu counter routines to track the life time of percpu counter764	  objects and validate the percpu counter operations.765 766config DEBUG_OBJECTS_ENABLE_DEFAULT767	int "debug_objects bootup default value (0-1)"768	range 0 1769	default "1"770	depends on DEBUG_OBJECTS771	help772	  Debug objects boot parameter default value773 774config SHRINKER_DEBUG775	bool "Enable shrinker debugging support"776	depends on DEBUG_FS777	help778	  Say Y to enable the shrinker debugfs interface which provides779	  visibility into the kernel memory shrinkers subsystem.780	  Disable it to avoid an extra memory footprint.781 782config DEBUG_STACK_USAGE783	bool "Stack utilization instrumentation"784	depends on DEBUG_KERNEL785	help786	  Enables the display of the minimum amount of free stack which each787	  task has ever had available in the sysrq-T and sysrq-P debug output.788	  Also emits a message to dmesg when a process exits if that process789	  used more stack space than previously exiting processes.790 791	  This option will slow down process creation somewhat.792 793config SCHED_STACK_END_CHECK794	bool "Detect stack corruption on calls to schedule()"795	depends on DEBUG_KERNEL796	default n797	help798	  This option checks for a stack overrun on calls to schedule().799	  If the stack end location is found to be over written always panic as800	  the content of the corrupted region can no longer be trusted.801	  This is to ensure no erroneous behaviour occurs which could result in802	  data corruption or a sporadic crash at a later stage once the region803	  is examined. The runtime overhead introduced is minimal.804 805config ARCH_HAS_DEBUG_VM_PGTABLE806	bool807	help808	  An architecture should select this when it can successfully809	  build and run DEBUG_VM_PGTABLE.810 811config DEBUG_VM_IRQSOFF812	def_bool DEBUG_VM && !PREEMPT_RT813 814config DEBUG_VM815	bool "Debug VM"816	depends on DEBUG_KERNEL817	help818	  Enable this to turn on extended checks in the virtual-memory system819	  that may impact performance.820 821	  If unsure, say N.822 823config DEBUG_VM_SHOOT_LAZIES824	bool "Debug MMU_LAZY_TLB_SHOOTDOWN implementation"825	depends on DEBUG_VM826	depends on MMU_LAZY_TLB_SHOOTDOWN827	help828	  Enable additional IPIs that ensure lazy tlb mm references are removed829	  before the mm is freed.830 831	  If unsure, say N.832 833config DEBUG_VM_MAPLE_TREE834	bool "Debug VM maple trees"835	depends on DEBUG_VM836	select DEBUG_MAPLE_TREE837	help838	  Enable VM maple tree debugging information and extra validations.839 840	  If unsure, say N.841 842config DEBUG_VM_RB843	bool "Debug VM red-black trees"844	depends on DEBUG_VM845	help846	  Enable VM red-black tree debugging information and extra validations.847 848	  If unsure, say N.849 850config DEBUG_VM_PGFLAGS851	bool "Debug page-flags operations"852	depends on DEBUG_VM853	help854	  Enables extra validation on page flags operations.855 856	  If unsure, say N.857 858config DEBUG_VM_PGTABLE859	bool "Debug arch page table for semantics compliance"860	depends on MMU861	depends on ARCH_HAS_DEBUG_VM_PGTABLE862	default y if DEBUG_VM863	help864	  This option provides a debug method which can be used to test865	  architecture page table helper functions on various platforms in866	  verifying if they comply with expected generic MM semantics. This867	  will help architecture code in making sure that any changes or868	  new additions of these helpers still conform to expected869	  semantics of the generic MM. Platforms will have to opt in for870	  this through ARCH_HAS_DEBUG_VM_PGTABLE.871 872	  If unsure, say N.873 874config ARCH_HAS_DEBUG_VIRTUAL875	bool876 877config DEBUG_VIRTUAL878	bool "Debug VM translations"879	depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL880	help881	  Enable some costly sanity checks in virtual to page code. This can882	  catch mistakes with virt_to_page() and friends.883 884	  If unsure, say N.885 886config DEBUG_NOMMU_REGIONS887	bool "Debug the global anon/private NOMMU mapping region tree"888	depends on DEBUG_KERNEL && !MMU889	help890	  This option causes the global tree of anonymous and private mapping891	  regions to be regularly checked for invalid topology.892 893config DEBUG_MEMORY_INIT894	bool "Debug memory initialisation" if EXPERT895	default !EXPERT896	help897	  Enable this for additional checks during memory initialisation.898	  The sanity checks verify aspects of the VM such as the memory model899	  and other information provided by the architecture. Verbose900	  information will be printed at KERN_DEBUG loglevel depending901	  on the mminit_loglevel= command-line option.902 903	  If unsure, say Y904 905config MEMORY_NOTIFIER_ERROR_INJECT906	tristate "Memory hotplug notifier error injection module"907	depends on MEMORY_HOTPLUG && NOTIFIER_ERROR_INJECTION908	help909	  This option provides the ability to inject artificial errors to910	  memory hotplug notifier chain callbacks.  It is controlled through911	  debugfs interface under /sys/kernel/debug/notifier-error-inject/memory912 913	  If the notifier call chain should be failed with some events914	  notified, write the error code to "actions/<notifier event>/error".915 916	  Example: Inject memory hotplug offline error (-12 == -ENOMEM)917 918	  # cd /sys/kernel/debug/notifier-error-inject/memory919	  # echo -12 > actions/MEM_GOING_OFFLINE/error920	  # echo offline > /sys/devices/system/memory/memoryXXX/state921	  bash: echo: write error: Cannot allocate memory922 923	  To compile this code as a module, choose M here: the module will924	  be called memory-notifier-error-inject.925 926	  If unsure, say N.927 928config DEBUG_PER_CPU_MAPS929	bool "Debug access to per_cpu maps"930	depends on DEBUG_KERNEL931	depends on SMP932	help933	  Say Y to verify that the per_cpu map being accessed has934	  been set up. This adds a fair amount of code to kernel memory935	  and decreases performance.936 937	  Say N if unsure.938 939config DEBUG_KMAP_LOCAL940	bool "Debug kmap_local temporary mappings"941	depends on DEBUG_KERNEL && KMAP_LOCAL942	help943	  This option enables additional error checking for the kmap_local944	  infrastructure.  Disable for production use.945 946config ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP947	bool948 949config DEBUG_KMAP_LOCAL_FORCE_MAP950	bool "Enforce kmap_local temporary mappings"951	depends on DEBUG_KERNEL && ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP952	select KMAP_LOCAL953	select DEBUG_KMAP_LOCAL954	help955	  This option enforces temporary mappings through the kmap_local956	  mechanism for non-highmem pages and on non-highmem systems.957	  Disable this for production systems!958 959config DEBUG_HIGHMEM960	bool "Highmem debugging"961	depends on DEBUG_KERNEL && HIGHMEM962	select DEBUG_KMAP_LOCAL_FORCE_MAP if ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP963	select DEBUG_KMAP_LOCAL964	help965	  This option enables additional error checking for high memory966	  systems.  Disable for production systems.967 968config HAVE_DEBUG_STACKOVERFLOW969	bool970 971config DEBUG_STACKOVERFLOW972	bool "Check for stack overflows"973	depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW974	help975	  Say Y here if you want to check for overflows of kernel, IRQ976	  and exception stacks (if your architecture uses them). This977	  option will show detailed messages if free stack space drops978	  below a certain limit.979 980	  These kinds of bugs usually occur when call-chains in the981	  kernel get too deep, especially when interrupts are982	  involved.983 984	  Use this in cases where you see apparently random memory985	  corruption, especially if it appears in 'struct thread_info'986 987	  If in doubt, say "N".988 989config CODE_TAGGING990	bool991	select KALLSYMS992 993config MEM_ALLOC_PROFILING994	bool "Enable memory allocation profiling"995	default n996	depends on PROC_FS997	depends on !DEBUG_FORCE_WEAK_PER_CPU998	select CODE_TAGGING999	select PAGE_EXTENSION1000	select SLAB_OBJ_EXT1001	help1002	  Track allocation source code and record total allocation size1003	  initiated at that code location. The mechanism can be used to track1004	  memory leaks with a low performance and memory impact.1005 1006config MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT1007	bool "Enable memory allocation profiling by default"1008	default y1009	depends on MEM_ALLOC_PROFILING1010 1011config MEM_ALLOC_PROFILING_DEBUG1012	bool "Memory allocation profiler debugging"1013	default n1014	depends on MEM_ALLOC_PROFILING1015	select MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT1016	help1017	  Adds warnings with helpful error messages for memory allocation1018	  profiling.1019 1020source "lib/Kconfig.kasan"1021source "lib/Kconfig.kfence"1022source "lib/Kconfig.kmsan"1023 1024endmenu # "Memory Debugging"1025 1026config DEBUG_SHIRQ1027	bool "Debug shared IRQ handlers"1028	depends on DEBUG_KERNEL1029	help1030	  Enable this to generate a spurious interrupt just before a shared1031	  interrupt handler is deregistered (generating one when registering1032	  is currently disabled). Drivers need to handle this correctly. Some1033	  don't and need to be caught.1034 1035menu "Debug Oops, Lockups and Hangs"1036 1037config PANIC_ON_OOPS1038	bool "Panic on Oops"1039	help1040	  Say Y here to enable the kernel to panic when it oopses. This1041	  has the same effect as setting oops=panic on the kernel command1042	  line.1043 1044	  This feature is useful to ensure that the kernel does not do1045	  anything erroneous after an oops which could result in data1046	  corruption or other issues.1047 1048	  Say N if unsure.1049 1050config PANIC_ON_OOPS_VALUE1051	int1052	range 0 11053	default 0 if !PANIC_ON_OOPS1054	default 1 if PANIC_ON_OOPS1055 1056config PANIC_TIMEOUT1057	int "panic timeout"1058	default 01059	help1060	  Set the timeout value (in seconds) until a reboot occurs when1061	  the kernel panics. If n = 0, then we wait forever. A timeout1062	  value n > 0 will wait n seconds before rebooting, while a timeout1063	  value n < 0 will reboot immediately. This setting can be overridden1064	  with the kernel command line option panic=, and from userspace via1065	  /proc/sys/kernel/panic.1066 1067config LOCKUP_DETECTOR1068	bool1069 1070config SOFTLOCKUP_DETECTOR1071	bool "Detect Soft Lockups"1072	depends on DEBUG_KERNEL && !S3901073	select LOCKUP_DETECTOR1074	help1075	  Say Y here to enable the kernel to act as a watchdog to detect1076	  soft lockups.1077 1078	  Softlockups are bugs that cause the kernel to loop in kernel1079	  mode for more than 20 seconds, without giving other tasks a1080	  chance to run.  The current stack trace is displayed upon1081	  detection and the system will stay locked up.1082 1083config SOFTLOCKUP_DETECTOR_INTR_STORM1084	bool "Detect Interrupt Storm in Soft Lockups"1085	depends on SOFTLOCKUP_DETECTOR && IRQ_TIME_ACCOUNTING1086	select GENERIC_IRQ_STAT_SNAPSHOT1087	default y if NR_CPUS <= 1281088	help1089	  Say Y here to enable the kernel to detect interrupt storm1090	  during "soft lockups".1091 1092	  "soft lockups" can be caused by a variety of reasons. If one is1093	  caused by an interrupt storm, then the storming interrupts will not1094	  be on the callstack. To detect this case, it is necessary to report1095	  the CPU stats and the interrupt counts during the "soft lockups".1096 1097config BOOTPARAM_SOFTLOCKUP_PANIC1098	bool "Panic (Reboot) On Soft Lockups"1099	depends on SOFTLOCKUP_DETECTOR1100	help1101	  Say Y here to enable the kernel to panic on "soft lockups",1102	  which are bugs that cause the kernel to loop in kernel1103	  mode for more than 20 seconds (configurable using the watchdog_thresh1104	  sysctl), without giving other tasks a chance to run.1105 1106	  The panic can be used in combination with panic_timeout,1107	  to cause the system to reboot automatically after a1108	  lockup has been detected. This feature is useful for1109	  high-availability systems that have uptime guarantees and1110	  where a lockup must be resolved ASAP.1111 1112	  Say N if unsure.1113 1114config HAVE_HARDLOCKUP_DETECTOR_BUDDY1115	bool1116	depends on SMP1117	default y1118 1119#1120# Global switch whether to build a hardlockup detector at all. It is available1121# only when the architecture supports at least one implementation. There are1122# two exceptions. The hardlockup detector is never enabled on:1123#1124#	s390: it reported many false positives there1125#1126#	sparc64: has a custom implementation which is not using the common1127#		hardlockup command line options and sysctl interface.1128#1129config HARDLOCKUP_DETECTOR1130	bool "Detect Hard Lockups"1131	depends on DEBUG_KERNEL && !S390 && !HARDLOCKUP_DETECTOR_SPARC641132	depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_BUDDY || HAVE_HARDLOCKUP_DETECTOR_ARCH1133	imply HARDLOCKUP_DETECTOR_PERF1134	imply HARDLOCKUP_DETECTOR_BUDDY1135	imply HARDLOCKUP_DETECTOR_ARCH1136	select LOCKUP_DETECTOR1137 1138	help1139	  Say Y here to enable the kernel to act as a watchdog to detect1140	  hard lockups.1141 1142	  Hardlockups are bugs that cause the CPU to loop in kernel mode1143	  for more than 10 seconds, without letting other interrupts have a1144	  chance to run.  The current stack trace is displayed upon detection1145	  and the system will stay locked up.1146 1147#1148# Note that arch-specific variants are always preferred.1149#1150config HARDLOCKUP_DETECTOR_PREFER_BUDDY1151	bool "Prefer the buddy CPU hardlockup detector"1152	depends on HARDLOCKUP_DETECTOR1153	depends on HAVE_HARDLOCKUP_DETECTOR_PERF && HAVE_HARDLOCKUP_DETECTOR_BUDDY1154	depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH1155	help1156	  Say Y here to prefer the buddy hardlockup detector over the perf one.1157 1158	  With the buddy detector, each CPU uses its softlockup hrtimer1159	  to check that the next CPU is processing hrtimer interrupts by1160	  verifying that a counter is increasing.1161 1162	  This hardlockup detector is useful on systems that don't have1163	  an arch-specific hardlockup detector or if resources needed1164	  for the hardlockup detector are better used for other things.1165 1166config HARDLOCKUP_DETECTOR_PERF1167	bool1168	depends on HARDLOCKUP_DETECTOR1169	depends on HAVE_HARDLOCKUP_DETECTOR_PERF && !HARDLOCKUP_DETECTOR_PREFER_BUDDY1170	depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH1171	select HARDLOCKUP_DETECTOR_COUNTS_HRTIMER1172 1173config HARDLOCKUP_DETECTOR_BUDDY1174	bool1175	depends on HARDLOCKUP_DETECTOR1176	depends on HAVE_HARDLOCKUP_DETECTOR_BUDDY1177	depends on !HAVE_HARDLOCKUP_DETECTOR_PERF || HARDLOCKUP_DETECTOR_PREFER_BUDDY1178	depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH1179	select HARDLOCKUP_DETECTOR_COUNTS_HRTIMER1180 1181config HARDLOCKUP_DETECTOR_ARCH1182	bool1183	depends on HARDLOCKUP_DETECTOR1184	depends on HAVE_HARDLOCKUP_DETECTOR_ARCH1185	help1186	  The arch-specific implementation of the hardlockup detector will1187	  be used.1188 1189#1190# Both the "perf" and "buddy" hardlockup detectors count hrtimer1191# interrupts. This config enables functions managing this common code.1192#1193config HARDLOCKUP_DETECTOR_COUNTS_HRTIMER1194	bool1195	select SOFTLOCKUP_DETECTOR1196 1197#1198# Enables a timestamp based low pass filter to compensate for perf based1199# hard lockup detection which runs too fast due to turbo modes.1200#1201config HARDLOCKUP_CHECK_TIMESTAMP1202	bool1203 1204config BOOTPARAM_HARDLOCKUP_PANIC1205	bool "Panic (Reboot) On Hard Lockups"1206	depends on HARDLOCKUP_DETECTOR1207	help1208	  Say Y here to enable the kernel to panic on "hard lockups",1209	  which are bugs that cause the kernel to loop in kernel1210	  mode with interrupts disabled for more than 10 seconds (configurable1211	  using the watchdog_thresh sysctl).1212 1213	  Say N if unsure.1214 1215config DETECT_HUNG_TASK1216	bool "Detect Hung Tasks"1217	depends on DEBUG_KERNEL1218	default SOFTLOCKUP_DETECTOR1219	help1220	  Say Y here to enable the kernel to detect "hung tasks",1221	  which are bugs that cause the task to be stuck in1222	  uninterruptible "D" state indefinitely.1223 1224	  When a hung task is detected, the kernel will print the1225	  current stack trace (which you should report), but the1226	  task will stay in uninterruptible state. If lockdep is1227	  enabled then all held locks will also be reported. This1228	  feature has negligible overhead.1229 1230config DEFAULT_HUNG_TASK_TIMEOUT1231	int "Default timeout for hung task detection (in seconds)"1232	depends on DETECT_HUNG_TASK1233	default 1201234	help1235	  This option controls the default timeout (in seconds) used1236	  to determine when a task has become non-responsive and should1237	  be considered hung.1238 1239	  It can be adjusted at runtime via the kernel.hung_task_timeout_secs1240	  sysctl or by writing a value to1241	  /proc/sys/kernel/hung_task_timeout_secs.1242 1243	  A timeout of 0 disables the check.  The default is two minutes.1244	  Keeping the default should be fine in most cases.1245 1246config BOOTPARAM_HUNG_TASK_PANIC1247	bool "Panic (Reboot) On Hung Tasks"1248	depends on DETECT_HUNG_TASK1249	help1250	  Say Y here to enable the kernel to panic on "hung tasks",1251	  which are bugs that cause the kernel to leave a task stuck1252	  in uninterruptible "D" state.1253 1254	  The panic can be used in combination with panic_timeout,1255	  to cause the system to reboot automatically after a1256	  hung task has been detected. This feature is useful for1257	  high-availability systems that have uptime guarantees and1258	  where a hung tasks must be resolved ASAP.1259 1260	  Say N if unsure.1261 1262config WQ_WATCHDOG1263	bool "Detect Workqueue Stalls"1264	depends on DEBUG_KERNEL1265	help1266	  Say Y here to enable stall detection on workqueues.  If a1267	  worker pool doesn't make forward progress on a pending work1268	  item for over a given amount of time, 30s by default, a1269	  warning message is printed along with dump of workqueue1270	  state.  This can be configured through kernel parameter1271	  "workqueue.watchdog_thresh" and its sysfs counterpart.1272 1273config WQ_CPU_INTENSIVE_REPORT1274	bool "Report per-cpu work items which hog CPU for too long"1275	depends on DEBUG_KERNEL1276	help1277	  Say Y here to enable reporting of concurrency-managed per-cpu work1278	  items that hog CPUs for longer than1279	  workqueue.cpu_intensive_thresh_us. Workqueue automatically1280	  detects and excludes them from concurrency management to prevent1281	  them from stalling other per-cpu work items. Occassional1282	  triggering may not necessarily indicate a problem. Repeated1283	  triggering likely indicates that the work item should be switched1284	  to use an unbound workqueue.1285 1286config TEST_LOCKUP1287	tristate "Test module to generate lockups"1288	depends on m1289	help1290	  This builds the "test_lockup" module that helps to make sure1291	  that watchdogs and lockup detectors are working properly.1292 1293	  Depending on module parameters it could emulate soft or hard1294	  lockup, "hung task", or locking arbitrary lock for a long time.1295	  Also it could generate series of lockups with cooling-down periods.1296 1297	  If unsure, say N.1298 1299endmenu # "Debug lockups and hangs"1300 1301menu "Scheduler Debugging"1302 1303config SCHED_DEBUG1304	bool "Collect scheduler debugging info"1305	depends on DEBUG_KERNEL && DEBUG_FS1306	default y1307	help1308	  If you say Y here, the /sys/kernel/debug/sched file will be provided1309	  that can help debug the scheduler. The runtime overhead of this1310	  option is minimal.1311 1312config SCHED_INFO1313	bool1314	default n1315 1316config SCHEDSTATS1317	bool "Collect scheduler statistics"1318	depends on PROC_FS1319	select SCHED_INFO1320	help1321	  If you say Y here, additional code will be inserted into the1322	  scheduler and related routines to collect statistics about1323	  scheduler behavior and provide them in /proc/schedstat.  These1324	  stats may be useful for both tuning and debugging the scheduler1325	  If you aren't debugging the scheduler or trying to tune a specific1326	  application, you can say N to avoid the very slight overhead1327	  this adds.1328 1329endmenu1330 1331config DEBUG_TIMEKEEPING1332	bool "Enable extra timekeeping sanity checking"1333	help1334	  This option will enable additional timekeeping sanity checks1335	  which may be helpful when diagnosing issues where timekeeping1336	  problems are suspected.1337 1338	  This may include checks in the timekeeping hotpaths, so this1339	  option may have a (very small) performance impact to some1340	  workloads.1341 1342	  If unsure, say N.1343 1344config DEBUG_PREEMPT1345	bool "Debug preemptible kernel"1346	depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT1347	help1348	  If you say Y here then the kernel will use a debug variant of the1349	  commonly used smp_processor_id() function and will print warnings1350	  if kernel code uses it in a preemption-unsafe way. Also, the kernel1351	  will detect preemption count underflows.1352 1353	  This option has potential to introduce high runtime overhead,1354	  depending on workload as it triggers debugging routines for each1355	  this_cpu operation. It should only be used for debugging purposes.1356 1357menu "Lock Debugging (spinlocks, mutexes, etc...)"1358 1359config LOCK_DEBUGGING_SUPPORT1360	bool1361	depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT1362	default y1363 1364config PROVE_LOCKING1365	bool "Lock debugging: prove locking correctness"1366	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT1367	select LOCKDEP1368	select DEBUG_SPINLOCK1369	select DEBUG_MUTEXES if !PREEMPT_RT1370	select DEBUG_RT_MUTEXES if RT_MUTEXES1371	select DEBUG_RWSEMS if !PREEMPT_RT1372	select DEBUG_WW_MUTEX_SLOWPATH1373	select DEBUG_LOCK_ALLOC1374	select PREEMPT_COUNT if !ARCH_NO_PREEMPT1375	select TRACE_IRQFLAGS1376	default n1377	help1378	 This feature enables the kernel to prove that all locking1379	 that occurs in the kernel runtime is mathematically1380	 correct: that under no circumstance could an arbitrary (and1381	 not yet triggered) combination of observed locking1382	 sequences (on an arbitrary number of CPUs, running an1383	 arbitrary number of tasks and interrupt contexts) cause a1384	 deadlock.1385 1386	 In short, this feature enables the kernel to report locking1387	 related deadlocks before they actually occur.1388 1389	 The proof does not depend on how hard and complex a1390	 deadlock scenario would be to trigger: how many1391	 participant CPUs, tasks and irq-contexts would be needed1392	 for it to trigger. The proof also does not depend on1393	 timing: if a race and a resulting deadlock is possible1394	 theoretically (no matter how unlikely the race scenario1395	 is), it will be proven so and will immediately be1396	 reported by the kernel (once the event is observed that1397	 makes the deadlock theoretically possible).1398 1399	 If a deadlock is impossible (i.e. the locking rules, as1400	 observed by the kernel, are mathematically correct), the1401	 kernel reports nothing.1402 1403	 NOTE: this feature can also be enabled for rwlocks, mutexes1404	 and rwsems - in which case all dependencies between these1405	 different locking variants are observed and mapped too, and1406	 the proof of observed correctness is also maintained for an1407	 arbitrary combination of these separate locking variants.1408 1409	 For more details, see Documentation/locking/lockdep-design.rst.1410 1411config PROVE_RAW_LOCK_NESTING1412	bool "Enable raw_spinlock - spinlock nesting checks"1413	depends on PROVE_LOCKING1414	default n1415	help1416	 Enable the raw_spinlock vs. spinlock nesting checks which ensure1417	 that the lock nesting rules for PREEMPT_RT enabled kernels are1418	 not violated.1419 1420	 NOTE: There are known nesting problems. So if you enable this1421	 option expect lockdep splats until these problems have been fully1422	 addressed which is work in progress. This config switch allows to1423	 identify and analyze these problems. It will be removed and the1424	 check permanently enabled once the main issues have been fixed.1425 1426	 If unsure, select N.1427 1428config LOCK_STAT1429	bool "Lock usage statistics"1430	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT1431	select LOCKDEP1432	select DEBUG_SPINLOCK1433	select DEBUG_MUTEXES if !PREEMPT_RT1434	select DEBUG_RT_MUTEXES if RT_MUTEXES1435	select DEBUG_LOCK_ALLOC1436	default n1437	help1438	 This feature enables tracking lock contention points1439 1440	 For more details, see Documentation/locking/lockstat.rst1441 1442	 This also enables lock events required by "perf lock",1443	 subcommand of perf.1444	 If you want to use "perf lock", you also need to turn on1445	 CONFIG_EVENT_TRACING.1446 1447	 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.1448	 (CONFIG_LOCKDEP defines "acquire" and "release" events.)1449 1450config DEBUG_RT_MUTEXES1451	bool "RT Mutex debugging, deadlock detection"1452	depends on DEBUG_KERNEL && RT_MUTEXES1453	help1454	 This allows rt mutex semantics violations and rt mutex related1455	 deadlocks (lockups) to be detected and reported automatically.1456 1457config DEBUG_SPINLOCK1458	bool "Spinlock and rw-lock debugging: basic checks"1459	depends on DEBUG_KERNEL1460	select UNINLINE_SPIN_UNLOCK1461	help1462	  Say Y here and build SMP to catch missing spinlock initialization1463	  and certain other kinds of spinlock errors commonly made.  This is1464	  best used in conjunction with the NMI watchdog so that spinlock1465	  deadlocks are also debuggable.1466 1467config DEBUG_MUTEXES1468	bool "Mutex debugging: basic checks"1469	depends on DEBUG_KERNEL && !PREEMPT_RT1470	help1471	 This feature allows mutex semantics violations to be detected and1472	 reported.1473 1474config DEBUG_WW_MUTEX_SLOWPATH1475	bool "Wait/wound mutex debugging: Slowpath testing"1476	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT1477	select DEBUG_LOCK_ALLOC1478	select DEBUG_SPINLOCK1479	select DEBUG_MUTEXES if !PREEMPT_RT1480	select DEBUG_RT_MUTEXES if PREEMPT_RT1481	help1482	 This feature enables slowpath testing for w/w mutex users by1483	 injecting additional -EDEADLK wound/backoff cases. Together with1484	 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this1485	 will test all possible w/w mutex interface abuse with the1486	 exception of simply not acquiring all the required locks.1487	 Note that this feature can introduce significant overhead, so1488	 it really should not be enabled in a production or distro kernel,1489	 even a debug kernel.  If you are a driver writer, enable it.  If1490	 you are a distro, do not.1491 1492config DEBUG_RWSEMS1493	bool "RW Semaphore debugging: basic checks"1494	depends on DEBUG_KERNEL && !PREEMPT_RT1495	help1496	  This debugging feature allows mismatched rw semaphore locks1497	  and unlocks to be detected and reported.1498 1499config DEBUG_LOCK_ALLOC1500	bool "Lock debugging: detect incorrect freeing of live locks"1501	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT1502	select DEBUG_SPINLOCK1503	select DEBUG_MUTEXES if !PREEMPT_RT1504	select DEBUG_RT_MUTEXES if RT_MUTEXES1505	select LOCKDEP1506	help1507	 This feature will check whether any held lock (spinlock, rwlock,1508	 mutex or rwsem) is incorrectly freed by the kernel, via any of the1509	 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),1510	 vfree(), etc.), whether a live lock is incorrectly reinitialized via1511	 spin_lock_init()/mutex_init()/etc., or whether there is any lock1512	 held during task exit.1513 1514config LOCKDEP1515	bool1516	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT1517	select STACKTRACE1518	select KALLSYMS1519	select KALLSYMS_ALL1520 1521config LOCKDEP_SMALL1522	bool1523 1524config LOCKDEP_BITS1525	int "Bitsize for MAX_LOCKDEP_ENTRIES"1526	depends on LOCKDEP && !LOCKDEP_SMALL1527	range 10 301528	default 151529	help1530	  Try increasing this value if you hit "BUG: MAX_LOCKDEP_ENTRIES too low!" message.1531 1532config LOCKDEP_CHAINS_BITS1533	int "Bitsize for MAX_LOCKDEP_CHAINS"1534	depends on LOCKDEP && !LOCKDEP_SMALL1535	range 10 211536	default 161537	help1538	  Try increasing this value if you hit "BUG: MAX_LOCKDEP_CHAINS too low!" message.1539 1540config LOCKDEP_STACK_TRACE_BITS1541	int "Bitsize for MAX_STACK_TRACE_ENTRIES"1542	depends on LOCKDEP && !LOCKDEP_SMALL1543	range 10 301544	default 191545	help1546	  Try increasing this value if you hit "BUG: MAX_STACK_TRACE_ENTRIES too low!" message.1547 1548config LOCKDEP_STACK_TRACE_HASH_BITS1549	int "Bitsize for STACK_TRACE_HASH_SIZE"1550	depends on LOCKDEP && !LOCKDEP_SMALL1551	range 10 301552	default 141553	help1554	  Try increasing this value if you need large STACK_TRACE_HASH_SIZE.1555 1556config LOCKDEP_CIRCULAR_QUEUE_BITS1557	int "Bitsize for elements in circular_queue struct"1558	depends on LOCKDEP1559	range 10 301560	default 121561	help1562	  Try increasing this value if you hit "lockdep bfs error:-1" warning due to __cq_enqueue() failure.1563 1564config DEBUG_LOCKDEP1565	bool "Lock dependency engine debugging"1566	depends on DEBUG_KERNEL && LOCKDEP1567	select DEBUG_IRQFLAGS1568	help1569	  If you say Y here, the lock dependency engine will do1570	  additional runtime checks to debug itself, at the price1571	  of more runtime overhead.1572 1573config DEBUG_ATOMIC_SLEEP1574	bool "Sleep inside atomic section checking"1575	select PREEMPT_COUNT1576	depends on DEBUG_KERNEL1577	depends on !ARCH_NO_PREEMPT1578	help1579	  If you say Y here, various routines which may sleep will become very1580	  noisy if they are called inside atomic sections: when a spinlock is1581	  held, inside an rcu read side critical section, inside preempt disabled1582	  sections, inside an interrupt, etc...1583 1584config DEBUG_LOCKING_API_SELFTESTS1585	bool "Locking API boot-time self-tests"1586	depends on DEBUG_KERNEL1587	help1588	  Say Y here if you want the kernel to run a short self-test during1589	  bootup. The self-test checks whether common types of locking bugs1590	  are detected by debugging mechanisms or not. (if you disable1591	  lock debugging then those bugs won't be detected of course.)1592	  The following locking APIs are covered: spinlocks, rwlocks,1593	  mutexes and rwsems.1594 1595config LOCK_TORTURE_TEST1596	tristate "torture tests for locking"1597	depends on DEBUG_KERNEL1598	select TORTURE_TEST1599	help1600	  This option provides a kernel module that runs torture tests1601	  on kernel locking primitives.  The kernel module may be built1602	  after the fact on the running kernel to be tested, if desired.1603 1604	  Say Y here if you want kernel locking-primitive torture tests1605	  to be built into the kernel.1606	  Say M if you want these torture tests to build as a module.1607	  Say N if you are unsure.1608 1609config WW_MUTEX_SELFTEST1610	tristate "Wait/wound mutex selftests"1611	help1612	  This option provides a kernel module that runs tests on the1613	  on the struct ww_mutex locking API.1614 1615	  It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction1616	  with this test harness.1617 1618	  Say M if you want these self tests to build as a module.1619	  Say N if you are unsure.1620 1621config SCF_TORTURE_TEST1622	tristate "torture tests for smp_call_function*()"1623	depends on DEBUG_KERNEL1624	select TORTURE_TEST1625	help1626	  This option provides a kernel module that runs torture tests1627	  on the smp_call_function() family of primitives.  The kernel1628	  module may be built after the fact on the running kernel to1629	  be tested, if desired.1630 1631config CSD_LOCK_WAIT_DEBUG1632	bool "Debugging for csd_lock_wait(), called from smp_call_function*()"1633	depends on DEBUG_KERNEL1634	depends on SMP1635	depends on 64BIT1636	default n1637	help1638	  This option enables debug prints when CPUs are slow to respond1639	  to the smp_call_function*() IPI wrappers.  These debug prints1640	  include the IPI handler function currently executing (if any)1641	  and relevant stack traces.1642 1643config CSD_LOCK_WAIT_DEBUG_DEFAULT1644	bool "Default csd_lock_wait() debugging on at boot time"1645	depends on CSD_LOCK_WAIT_DEBUG1646	depends on 64BIT1647	default n1648	help1649	  This option causes the csdlock_debug= kernel boot parameter to1650	  default to 1 (basic debugging) instead of 0 (no debugging).1651 1652endmenu # lock debugging1653 1654config TRACE_IRQFLAGS1655	depends on TRACE_IRQFLAGS_SUPPORT1656	bool1657	help1658	  Enables hooks to interrupt enabling and disabling for1659	  either tracing or lock debugging.1660 1661config TRACE_IRQFLAGS_NMI1662	def_bool y1663	depends on TRACE_IRQFLAGS1664	depends on TRACE_IRQFLAGS_NMI_SUPPORT1665 1666config NMI_CHECK_CPU1667	bool "Debugging for CPUs failing to respond to backtrace requests"1668	depends on DEBUG_KERNEL1669	depends on X861670	default n1671	help1672	  Enables debug prints when a CPU fails to respond to a given1673	  backtrace NMI.  These prints provide some reasons why a CPU1674	  might legitimately be failing to respond, for example, if it1675	  is offline of if ignore_nmis is set.1676 1677config DEBUG_IRQFLAGS1678	bool "Debug IRQ flag manipulation"1679	help1680	  Enables checks for potentially unsafe enabling or disabling of1681	  interrupts, such as calling raw_local_irq_restore() when interrupts1682	  are enabled.1683 1684config STACKTRACE1685	bool "Stack backtrace support"1686	depends on STACKTRACE_SUPPORT1687	help1688	  This option causes the kernel to create a /proc/pid/stack for1689	  every process, showing its current stack trace.1690	  It is also used by various kernel debugging features that require1691	  stack trace generation.1692 1693config WARN_ALL_UNSEEDED_RANDOM1694	bool "Warn for all uses of unseeded randomness"1695	default n1696	help1697	  Some parts of the kernel contain bugs relating to their use of1698	  cryptographically secure random numbers before it's actually possible1699	  to generate those numbers securely. This setting ensures that these1700	  flaws don't go unnoticed, by enabling a message, should this ever1701	  occur. This will allow people with obscure setups to know when things1702	  are going wrong, so that they might contact developers about fixing1703	  it.1704 1705	  Unfortunately, on some models of some architectures getting1706	  a fully seeded CRNG is extremely difficult, and so this can1707	  result in dmesg getting spammed for a surprisingly long1708	  time.  This is really bad from a security perspective, and1709	  so architecture maintainers really need to do what they can1710	  to get the CRNG seeded sooner after the system is booted.1711	  However, since users cannot do anything actionable to1712	  address this, by default this option is disabled.1713 1714	  Say Y here if you want to receive warnings for all uses of1715	  unseeded randomness.  This will be of use primarily for1716	  those developers interested in improving the security of1717	  Linux kernels running on their architecture (or1718	  subarchitecture).1719 1720config DEBUG_KOBJECT1721	bool "kobject debugging"1722	depends on DEBUG_KERNEL1723	help1724	  If you say Y here, some extra kobject debugging messages will be sent1725	  to the syslog.1726 1727config DEBUG_KOBJECT_RELEASE1728	bool "kobject release debugging"1729	depends on DEBUG_OBJECTS_TIMERS1730	help1731	  kobjects are reference counted objects.  This means that their1732	  last reference count put is not predictable, and the kobject can1733	  live on past the point at which a driver decides to drop its1734	  initial reference to the kobject gained on allocation.  An1735	  example of this would be a struct device which has just been1736	  unregistered.1737 1738	  However, some buggy drivers assume that after such an operation,1739	  the memory backing the kobject can be immediately freed.  This1740	  goes completely against the principles of a refcounted object.1741 1742	  If you say Y here, the kernel will delay the release of kobjects1743	  on the last reference count to improve the visibility of this1744	  kind of kobject release bug.1745 1746config HAVE_DEBUG_BUGVERBOSE1747	bool1748 1749menu "Debug kernel data structures"1750 1751config DEBUG_LIST1752	bool "Debug linked list manipulation"1753	depends on DEBUG_KERNEL1754	select LIST_HARDENED1755	help1756	  Enable this to turn on extended checks in the linked-list walking1757	  routines.1758 1759	  This option trades better quality error reports for performance, and1760	  is more suitable for kernel debugging. If you care about performance,1761	  you should only enable CONFIG_LIST_HARDENED instead.1762 1763	  If unsure, say N.1764 1765config DEBUG_PLIST1766	bool "Debug priority linked list manipulation"1767	depends on DEBUG_KERNEL1768	help1769	  Enable this to turn on extended checks in the priority-ordered1770	  linked-list (plist) walking routines.  This checks the entire1771	  list multiple times during each manipulation.1772 1773	  If unsure, say N.1774 1775config DEBUG_SG1776	bool "Debug SG table operations"1777	depends on DEBUG_KERNEL1778	help1779	  Enable this to turn on checks on scatter-gather tables. This can1780	  help find problems with drivers that do not properly initialize1781	  their sg tables.1782 1783	  If unsure, say N.1784 1785config DEBUG_NOTIFIERS1786	bool "Debug notifier call chains"1787	depends on DEBUG_KERNEL1788	help1789	  Enable this to turn on sanity checking for notifier call chains.1790	  This is most useful for kernel developers to make sure that1791	  modules properly unregister themselves from notifier chains.1792	  This is a relatively cheap check but if you care about maximum1793	  performance, say N.1794 1795config DEBUG_CLOSURES1796	bool "Debug closures (bcache async widgits)"1797	depends on CLOSURES1798	select DEBUG_FS1799	help1800	  Keeps all active closures in a linked list and provides a debugfs1801	  interface to list them, which makes it possible to see asynchronous1802	  operations that get stuck.1803 1804config DEBUG_MAPLE_TREE1805	bool "Debug maple trees"1806	depends on DEBUG_KERNEL1807	help1808	  Enable maple tree debugging information and extra validations.1809 1810	  If unsure, say N.1811 1812endmenu1813 1814source "kernel/rcu/Kconfig.debug"1815 1816config DEBUG_WQ_FORCE_RR_CPU1817	bool "Force round-robin CPU selection for unbound work items"1818	depends on DEBUG_KERNEL1819	default n1820	help1821	  Workqueue used to implicitly guarantee that work items queued1822	  without explicit CPU specified are put on the local CPU.  This1823	  guarantee is no longer true and while local CPU is still1824	  preferred work items may be put on foreign CPUs.  Kernel1825	  parameter "workqueue.debug_force_rr_cpu" is added to force1826	  round-robin CPU selection to flush out usages which depend on the1827	  now broken guarantee.  This config option enables the debug1828	  feature by default.  When enabled, memory and cache locality will1829	  be impacted.1830 1831config CPU_HOTPLUG_STATE_CONTROL1832	bool "Enable CPU hotplug state control"1833	depends on DEBUG_KERNEL1834	depends on HOTPLUG_CPU1835	default n1836	help1837	  Allows to write steps between "offline" and "online" to the CPUs1838	  sysfs target file so states can be stepped granular. This is a debug1839	  option for now as the hotplug machinery cannot be stopped and1840	  restarted at arbitrary points yet.1841 1842	  Say N if your are unsure.1843 1844config LATENCYTOP1845	bool "Latency measuring infrastructure"1846	depends on DEBUG_KERNEL1847	depends on STACKTRACE_SUPPORT1848	depends on PROC_FS1849	depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X861850	select KALLSYMS1851	select KALLSYMS_ALL1852	select STACKTRACE1853	select SCHEDSTATS1854	help1855	  Enable this option if you want to use the LatencyTOP tool1856	  to find out which userspace is blocking on what kernel operations.1857 1858config DEBUG_CGROUP_REF1859	bool "Disable inlining of cgroup css reference count functions"1860	depends on DEBUG_KERNEL1861	depends on CGROUPS1862	depends on KPROBES1863	default n1864	help1865	  Force cgroup css reference count functions to not be inlined so1866	  that they can be kprobed for debugging.1867 1868source "kernel/trace/Kconfig"1869 1870config PROVIDE_OHCI1394_DMA_INIT1871	bool "Remote debugging over FireWire early on boot"1872	depends on PCI && X861873	help1874	  If you want to debug problems which hang or crash the kernel early1875	  on boot and the crashing machine has a FireWire port, you can use1876	  this feature to remotely access the memory of the crashed machine1877	  over FireWire. This employs remote DMA as part of the OHCI13941878	  specification which is now the standard for FireWire controllers.1879 1880	  With remote DMA, you can monitor the printk buffer remotely using1881	  firescope and access all memory below 4GB using fireproxy from gdb.1882	  Even controlling a kernel debugger is possible using remote DMA.1883 1884	  Usage:1885 1886	  If ohci1394_dma=early is used as boot parameter, it will initialize1887	  all OHCI1394 controllers which are found in the PCI config space.1888 1889	  As all changes to the FireWire bus such as enabling and disabling1890	  devices cause a bus reset and thereby disable remote DMA for all1891	  devices, be sure to have the cable plugged and FireWire enabled on1892	  the debugging host before booting the debug target for debugging.1893 1894	  This code (~1k) is freed after boot. By then, the firewire stack1895	  in charge of the OHCI-1394 controllers should be used instead.1896 1897	  See Documentation/core-api/debugging-via-ohci1394.rst for more information.1898 1899source "samples/Kconfig"1900 1901config ARCH_HAS_DEVMEM_IS_ALLOWED1902	bool1903 1904config STRICT_DEVMEM1905	bool "Filter access to /dev/mem"1906	depends on MMU && DEVMEM1907	depends on ARCH_HAS_DEVMEM_IS_ALLOWED || GENERIC_LIB_DEVMEM_IS_ALLOWED1908	default y if PPC || X86 || ARM641909	help1910	  If this option is disabled, you allow userspace (root) access to all1911	  of memory, including kernel and userspace memory. Accidental1912	  access to this is obviously disastrous, but specific access can1913	  be used by people debugging the kernel. Note that with PAT support1914	  enabled, even in this case there are restrictions on /dev/mem1915	  use due to the cache aliasing requirements.1916 1917	  If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem1918	  file only allows userspace access to PCI space and the BIOS code and1919	  data regions.  This is sufficient for dosemu and X and all common1920	  users of /dev/mem.1921 1922	  If in doubt, say Y.1923 1924config IO_STRICT_DEVMEM1925	bool "Filter I/O access to /dev/mem"1926	depends on STRICT_DEVMEM1927	help1928	  If this option is disabled, you allow userspace (root) access to all1929	  io-memory regardless of whether a driver is actively using that1930	  range.  Accidental access to this is obviously disastrous, but1931	  specific access can be used by people debugging kernel drivers.1932 1933	  If this option is switched on, the /dev/mem file only allows1934	  userspace access to *idle* io-memory ranges (see /proc/iomem) This1935	  may break traditional users of /dev/mem (dosemu, legacy X, etc...)1936	  if the driver using a given range cannot be disabled.1937 1938	  If in doubt, say Y.1939 1940menu "$(SRCARCH) Debugging"1941 1942source "arch/$(SRCARCH)/Kconfig.debug"1943 1944endmenu1945 1946menu "Kernel Testing and Coverage"1947 1948source "lib/kunit/Kconfig"1949 1950config NOTIFIER_ERROR_INJECTION1951	tristate "Notifier error injection"1952	depends on DEBUG_KERNEL1953	select DEBUG_FS1954	help1955	  This option provides the ability to inject artificial errors to1956	  specified notifier chain callbacks. It is useful to test the error1957	  handling of notifier call chain failures.1958 1959	  Say N if unsure.1960 1961config PM_NOTIFIER_ERROR_INJECT1962	tristate "PM notifier error injection module"1963	depends on PM && NOTIFIER_ERROR_INJECTION1964	default m if PM_DEBUG1965	help1966	  This option provides the ability to inject artificial errors to1967	  PM notifier chain callbacks.  It is controlled through debugfs1968	  interface /sys/kernel/debug/notifier-error-inject/pm1969 1970	  If the notifier call chain should be failed with some events1971	  notified, write the error code to "actions/<notifier event>/error".1972 1973	  Example: Inject PM suspend error (-12 = -ENOMEM)1974 1975	  # cd /sys/kernel/debug/notifier-error-inject/pm/1976	  # echo -12 > actions/PM_SUSPEND_PREPARE/error1977	  # echo mem > /sys/power/state1978	  bash: echo: write error: Cannot allocate memory1979 1980	  To compile this code as a module, choose M here: the module will1981	  be called pm-notifier-error-inject.1982 1983	  If unsure, say N.1984 1985config OF_RECONFIG_NOTIFIER_ERROR_INJECT1986	tristate "OF reconfig notifier error injection module"1987	depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION1988	help1989	  This option provides the ability to inject artificial errors to1990	  OF reconfig notifier chain callbacks.  It is controlled1991	  through debugfs interface under1992	  /sys/kernel/debug/notifier-error-inject/OF-reconfig/1993 1994	  If the notifier call chain should be failed with some events1995	  notified, write the error code to "actions/<notifier event>/error".1996 1997	  To compile this code as a module, choose M here: the module will1998	  be called of-reconfig-notifier-error-inject.1999 2000	  If unsure, say N.2001 2002config NETDEV_NOTIFIER_ERROR_INJECT2003	tristate "Netdev notifier error injection module"2004	depends on NET && NOTIFIER_ERROR_INJECTION2005	help2006	  This option provides the ability to inject artificial errors to2007	  netdevice notifier chain callbacks.  It is controlled through debugfs2008	  interface /sys/kernel/debug/notifier-error-inject/netdev2009 2010	  If the notifier call chain should be failed with some events2011	  notified, write the error code to "actions/<notifier event>/error".2012 2013	  Example: Inject netdevice mtu change error (-22 = -EINVAL)2014 2015	  # cd /sys/kernel/debug/notifier-error-inject/netdev2016	  # echo -22 > actions/NETDEV_CHANGEMTU/error2017	  # ip link set eth0 mtu 10242018	  RTNETLINK answers: Invalid argument2019 2020	  To compile this code as a module, choose M here: the module will2021	  be called netdev-notifier-error-inject.2022 2023	  If unsure, say N.2024 2025config FUNCTION_ERROR_INJECTION2026	bool "Fault-injections of functions"2027	depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES2028	help2029	  Add fault injections into various functions that are annotated with2030	  ALLOW_ERROR_INJECTION() in the kernel. BPF may also modify the return2031	  value of these functions. This is useful to test error paths of code.2032 2033	  If unsure, say N2034 2035config FAULT_INJECTION2036	bool "Fault-injection framework"2037	depends on DEBUG_KERNEL2038	help2039	  Provide fault-injection framework.2040	  For more details, see Documentation/fault-injection/.2041 2042config FAILSLAB2043	bool "Fault-injection capability for kmalloc"2044	depends on FAULT_INJECTION2045	help2046	  Provide fault-injection capability for kmalloc.2047 2048config FAIL_PAGE_ALLOC2049	bool "Fault-injection capability for alloc_pages()"2050	depends on FAULT_INJECTION2051	help2052	  Provide fault-injection capability for alloc_pages().2053 2054config FAULT_INJECTION_USERCOPY2055	bool "Fault injection capability for usercopy functions"2056	depends on FAULT_INJECTION2057	help2058	  Provides fault-injection capability to inject failures2059	  in usercopy functions (copy_from_user(), get_user(), ...).2060 2061config FAIL_MAKE_REQUEST2062	bool "Fault-injection capability for disk IO"2063	depends on FAULT_INJECTION && BLOCK2064	help2065	  Provide fault-injection capability for disk IO.2066 2067config FAIL_IO_TIMEOUT2068	bool "Fault-injection capability for faking disk interrupts"2069	depends on FAULT_INJECTION && BLOCK2070	help2071	  Provide fault-injection capability on end IO handling. This2072	  will make the block layer "forget" an interrupt as configured,2073	  thus exercising the error handling.2074 2075	  Only works with drivers that use the generic timeout handling,2076	  for others it won't do anything.2077 2078config FAIL_FUTEX2079	bool "Fault-injection capability for futexes"2080	select DEBUG_FS2081	depends on FAULT_INJECTION && FUTEX2082	help2083	  Provide fault-injection capability for futexes.2084 2085config FAULT_INJECTION_DEBUG_FS2086	bool "Debugfs entries for fault-injection capabilities"2087	depends on FAULT_INJECTION && SYSFS && DEBUG_FS2088	help2089	  Enable configuration of fault-injection capabilities via debugfs.2090 2091config FAIL_FUNCTION2092	bool "Fault-injection capability for functions"2093	depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION2094	help2095	  Provide function-based fault-injection capability.2096	  This will allow you to override a specific function with a return2097	  with given return value. As a result, function caller will see2098	  an error value and have to handle it. This is useful to test the2099	  error handling in various subsystems.2100 2101config FAIL_MMC_REQUEST2102	bool "Fault-injection capability for MMC IO"2103	depends on FAULT_INJECTION_DEBUG_FS && MMC2104	help2105	  Provide fault-injection capability for MMC IO.2106	  This will make the mmc core return data errors. This is2107	  useful to test the error handling in the mmc block device2108	  and to test how the mmc host driver handles retries from2109	  the block device.2110 2111config FAIL_SUNRPC2112	bool "Fault-injection capability for SunRPC"2113	depends on FAULT_INJECTION_DEBUG_FS && SUNRPC_DEBUG2114	help2115	  Provide fault-injection capability for SunRPC and2116	  its consumers.2117 2118config FAULT_INJECTION_CONFIGFS2119	bool "Configfs interface for fault-injection capabilities"2120	depends on FAULT_INJECTION2121	select CONFIGFS_FS2122	help2123	  This option allows configfs-based drivers to dynamically configure2124	  fault-injection via configfs.  Each parameter for driver-specific2125	  fault-injection can be made visible as a configfs attribute in a2126	  configfs group.2127 2128 2129config FAULT_INJECTION_STACKTRACE_FILTER2130	bool "stacktrace filter for fault-injection capabilities"2131	depends on FAULT_INJECTION2132	depends on (FAULT_INJECTION_DEBUG_FS || FAULT_INJECTION_CONFIGFS) && STACKTRACE_SUPPORT2133	select STACKTRACE2134	depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X862135	help2136	  Provide stacktrace filter for fault-injection capabilities2137 2138config ARCH_HAS_KCOV2139	bool2140	help2141	  An architecture should select this when it can successfully2142	  build and run with CONFIG_KCOV. This typically requires2143	  disabling instrumentation for some early boot code.2144 2145config CC_HAS_SANCOV_TRACE_PC2146	def_bool $(cc-option,-fsanitize-coverage=trace-pc)2147 2148 2149config KCOV2150	bool "Code coverage for fuzzing"2151	depends on ARCH_HAS_KCOV2152	depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS2153	depends on !ARCH_WANTS_NO_INSTR || HAVE_NOINSTR_HACK || \2154		   GCC_VERSION >= 120000 || CC_IS_CLANG2155	select DEBUG_FS2156	select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC2157	select OBJTOOL if HAVE_NOINSTR_HACK2158	help2159	  KCOV exposes kernel code coverage information in a form suitable2160	  for coverage-guided fuzzing (randomized testing).2161 2162	  For more details, see Documentation/dev-tools/kcov.rst.2163 2164config KCOV_ENABLE_COMPARISONS2165	bool "Enable comparison operands collection by KCOV"2166	depends on KCOV2167	depends on $(cc-option,-fsanitize-coverage=trace-cmp)2168	help2169	  KCOV also exposes operands of every comparison in the instrumented2170	  code along with operand sizes and PCs of the comparison instructions.2171	  These operands can be used by fuzzing engines to improve the quality2172	  of fuzzing coverage.2173 2174config KCOV_INSTRUMENT_ALL2175	bool "Instrument all code by default"2176	depends on KCOV2177	default y2178	help2179	  If you are doing generic system call fuzzing (like e.g. syzkaller),2180	  then you will want to instrument the whole kernel and you should2181	  say y here. If you are doing more targeted fuzzing (like e.g.2182	  filesystem fuzzing with AFL) then you will want to enable coverage2183	  for more specific subsets of files, and should say n here.2184 2185config KCOV_IRQ_AREA_SIZE2186	hex "Size of interrupt coverage collection area in words"2187	depends on KCOV2188	default 0x400002189	help2190	  KCOV uses preallocated per-cpu areas to collect coverage from2191	  soft interrupts. This specifies the size of those areas in the2192	  number of unsigned long words.2193 2194config KCOV_SELFTEST2195	bool "Perform short selftests on boot"2196	depends on KCOV2197	help2198	  Run short KCOV coverage collection selftests on boot.2199	  On test failure, causes the kernel to panic. Recommended to be2200	  enabled, ensuring critical functionality works as intended.2201 2202menuconfig RUNTIME_TESTING_MENU2203	bool "Runtime Testing"2204	default y2205 2206if RUNTIME_TESTING_MENU2207 2208config TEST_DHRY2209	tristate "Dhrystone benchmark test"2210	help2211	  Enable this to include the Dhrystone 2.1 benchmark.  This test2212	  calculates the number of Dhrystones per second, and the number of2213	  DMIPS (Dhrystone MIPS) obtained when the Dhrystone score is divided2214	  by 1757 (the number of Dhrystones per second obtained on the VAX2215	  11/780, nominally a 1 MIPS machine).2216 2217	  To run the benchmark, it needs to be enabled explicitly, either from2218	  the kernel command line (when built-in), or from userspace (when2219	  built-in or modular).2220 2221	  Run once during kernel boot:2222 2223	      test_dhry.run2224 2225	  Set number of iterations from kernel command line:2226 2227	      test_dhry.iterations=<n>2228 2229	  Set number of iterations from userspace:2230 2231	      echo <n> > /sys/module/test_dhry/parameters/iterations2232 2233	  Trigger manual run from userspace:2234 2235	      echo y > /sys/module/test_dhry/parameters/run2236 2237	  If the number of iterations is <= 0, the test will devise a suitable2238	  number of iterations (test runs for at least 2s) automatically.2239	  This process takes ca. 4s.2240 2241	  If unsure, say N.2242 2243config LKDTM2244	tristate "Linux Kernel Dump Test Tool Module"2245	depends on DEBUG_FS2246	help2247	This module enables testing of the different dumping mechanisms by2248	inducing system failures at predefined crash points.2249	If you don't need it: say N2250	Choose M here to compile this code as a module. The module will be2251	called lkdtm.2252 2253	Documentation on how to use the module can be found in2254	Documentation/fault-injection/provoke-crashes.rst2255 2256config CPUMASK_KUNIT_TEST2257	tristate "KUnit test for cpumask" if !KUNIT_ALL_TESTS2258	depends on KUNIT2259	default KUNIT_ALL_TESTS2260	help2261	  Enable to turn on cpumask tests, running at boot or module load time.2262 2263	  For more information on KUnit and unit tests in general, please refer2264	  to the KUnit documentation in Documentation/dev-tools/kunit/.2265 2266	  If unsure, say N.2267 2268config TEST_LIST_SORT2269	tristate "Linked list sorting test" if !KUNIT_ALL_TESTS2270	depends on KUNIT2271	default KUNIT_ALL_TESTS2272	help2273	  Enable this to turn on 'list_sort()' function test. This test is2274	  executed only once during system boot (so affects only boot time),2275	  or at module load time.2276 2277	  If unsure, say N.2278 2279config TEST_MIN_HEAP2280	tristate "Min heap test"2281	depends on DEBUG_KERNEL || m2282	help2283	  Enable this to turn on min heap function tests. This test is2284	  executed only once during system boot (so affects only boot time),2285	  or at module load time.2286 2287	  If unsure, say N.2288 2289config TEST_SORT2290	tristate "Array-based sort test" if !KUNIT_ALL_TESTS2291	depends on KUNIT2292	default KUNIT_ALL_TESTS2293	help2294	  This option enables the self-test function of 'sort()' at boot,2295	  or at module load time.2296 2297	  If unsure, say N.2298 2299config TEST_DIV642300	tristate "64bit/32bit division and modulo test"2301	depends on DEBUG_KERNEL || m2302	help2303	  Enable this to turn on 'do_div()' function test. This test is2304	  executed only once during system boot (so affects only boot time),2305	  or at module load time.2306 2307	  If unsure, say N.2308 2309config TEST_MULDIV642310	tristate "mul_u64_u64_div_u64() test"2311	depends on DEBUG_KERNEL || m2312	help2313	  Enable this to turn on 'mul_u64_u64_div_u64()' function test.2314	  This test is executed only once during system boot (so affects2315	  only boot time), or at module load time.2316 2317	  If unsure, say N.2318 2319config TEST_IOV_ITER2320	tristate "Test iov_iter operation" if !KUNIT_ALL_TESTS2321	depends on KUNIT2322	depends on MMU2323	default KUNIT_ALL_TESTS2324	help2325	  Enable this to turn on testing of the operation of the I/O iterator2326	  (iov_iter). This test is executed only once during system boot (so2327	  affects only boot time), or at module load time.2328 2329	  If unsure, say N.2330 2331config KPROBES_SANITY_TEST2332	tristate "Kprobes sanity tests" if !KUNIT_ALL_TESTS2333	depends on DEBUG_KERNEL2334	depends on KPROBES2335	depends on KUNIT2336	select STACKTRACE if ARCH_CORRECT_STACKTRACE_ON_KRETPROBE2337	default KUNIT_ALL_TESTS2338	help2339	  This option provides for testing basic kprobes functionality on2340	  boot. Samples of kprobe and kretprobe are inserted and2341	  verified for functionality.2342 2343	  Say N if you are unsure.2344 2345config FPROBE_SANITY_TEST2346	bool "Self test for fprobe"2347	depends on DEBUG_KERNEL2348	depends on FPROBE2349	depends on KUNIT=y2350	help2351	  This option will enable testing the fprobe when the system boot.2352	  A series of tests are made to verify that the fprobe is functioning2353	  properly.2354 2355	  Say N if you are unsure.2356 2357config BACKTRACE_SELF_TEST2358	tristate "Self test for the backtrace code"2359	depends on DEBUG_KERNEL2360	help2361	  This option provides a kernel module that can be used to test2362	  the kernel stack backtrace code. This option is not useful2363	  for distributions or general kernels, but only for kernel2364	  developers working on architecture code.2365 2366	  Note that if you want to also test saved backtraces, you will2367	  have to enable STACKTRACE as well.2368 2369	  Say N if you are unsure.2370 2371config TEST_REF_TRACKER2372	tristate "Self test for reference tracker"2373	depends on DEBUG_KERNEL && STACKTRACE_SUPPORT2374	select REF_TRACKER2375	help2376	  This option provides a kernel module performing tests2377	  using reference tracker infrastructure.2378 2379	  Say N if you are unsure.2380 2381config RBTREE_TEST2382	tristate "Red-Black tree test"2383	depends on DEBUG_KERNEL2384	help2385	  A benchmark measuring the performance of the rbtree library.2386	  Also includes rbtree invariant checks.2387 2388config REED_SOLOMON_TEST2389	tristate "Reed-Solomon library test"2390	depends on DEBUG_KERNEL || m2391	select REED_SOLOMON2392	select REED_SOLOMON_ENC162393	select REED_SOLOMON_DEC162394	help2395	  This option enables the self-test function of rslib at boot,2396	  or at module load time.2397 2398	  If unsure, say N.2399 2400config INTERVAL_TREE_TEST2401	tristate "Interval tree test"2402	depends on DEBUG_KERNEL2403	select INTERVAL_TREE2404	help2405	  A benchmark measuring the performance of the interval tree library2406 2407config PERCPU_TEST2408	tristate "Per cpu operations test"2409	depends on m && DEBUG_KERNEL2410	help2411	  Enable this option to build test module which validates per-cpu2412	  operations.2413 2414	  If unsure, say N.2415 2416config ATOMIC64_SELFTEST2417	tristate "Perform an atomic64_t self-test"2418	help2419	  Enable this option to test the atomic64_t functions at boot or2420	  at module load time.2421 2422	  If unsure, say N.2423 2424config ASYNC_RAID6_TEST2425	tristate "Self test for hardware accelerated raid6 recovery"2426	depends on ASYNC_RAID6_RECOV2427	select ASYNC_MEMCPY2428	help2429	  This is a one-shot self test that permutes through the2430	  recovery of all the possible two disk failure scenarios for a2431	  N-disk array.  Recovery is performed with the asynchronous2432	  raid6 recovery routines, and will optionally use an offload2433	  engine if one is available.2434 2435	  If unsure, say N.2436 2437config TEST_HEXDUMP2438	tristate "Test functions located in the hexdump module at runtime"2439 2440config STRING_KUNIT_TEST2441	tristate "KUnit test string functions at runtime" if !KUNIT_ALL_TESTS2442	depends on KUNIT2443	default KUNIT_ALL_TESTS2444 2445config STRING_HELPERS_KUNIT_TEST2446	tristate "KUnit test string helpers at runtime" if !KUNIT_ALL_TESTS2447	depends on KUNIT2448	default KUNIT_ALL_TESTS2449 2450config TEST_KSTRTOX2451	tristate "Test kstrto*() family of functions at runtime"2452 2453config TEST_PRINTF2454	tristate "Test printf() family of functions at runtime"2455 2456config TEST_SCANF2457	tristate "Test scanf() family of functions at runtime"2458 2459config TEST_BITMAP2460	tristate "Test bitmap_*() family of functions at runtime"2461	help2462	  Enable this option to test the bitmap functions at boot.2463 2464	  If unsure, say N.2465 2466config TEST_UUID2467	tristate "Test functions located in the uuid module at runtime"2468 2469config TEST_XARRAY2470	tristate "Test the XArray code at runtime"2471 2472config TEST_MAPLE_TREE2473	tristate "Test the Maple Tree code at runtime or module load"2474	help2475	  Enable this option to test the maple tree code functions at boot, or2476	  when the module is loaded. Enable "Debug Maple Trees" will enable2477	  more verbose output on failures.2478 2479	  If unsure, say N.2480 2481config TEST_RHASHTABLE2482	tristate "Perform selftest on resizable hash table"2483	help2484	  Enable this option to test the rhashtable functions at boot.2485 2486	  If unsure, say N.2487 2488config TEST_IDA2489	tristate "Perform selftest on IDA functions"2490 2491config TEST_PARMAN2492	tristate "Perform selftest on priority array manager"2493	depends on PARMAN2494	help2495	  Enable this option to test priority array manager on boot2496	  (or module load).2497 2498	  If unsure, say N.2499 2500config TEST_IRQ_TIMINGS2501	bool "IRQ timings selftest"2502	depends on IRQ_TIMINGS2503	help2504	  Enable this option to test the irq timings code on boot.2505 2506	  If unsure, say N.2507 2508config TEST_LKM2509	tristate "Test module loading with 'hello world' module"2510	depends on m2511	help2512	  This builds the "test_module" module that emits "Hello, world"2513	  on printk when loaded. It is designed to be used for basic2514	  evaluation of the module loading subsystem (for example when2515	  validating module verification). It lacks any extra dependencies,2516	  and will not normally be loaded by the system unless explicitly2517	  requested by name.2518 2519	  If unsure, say N.2520 2521config TEST_BITOPS2522	tristate "Test module for compilation of bitops operations"2523	help2524	  This builds the "test_bitops" module that is much like the2525	  TEST_LKM module except that it does a basic exercise of the2526	  set/clear_bit macros and get_count_order/long to make sure there are2527	  no compiler warnings from C=1 sparse checker or -Wextra2528	  compilations. It has no dependencies and doesn't run or load unless2529	  explicitly requested by name.  for example: modprobe test_bitops.2530 2531	  If unsure, say N.2532 2533config TEST_VMALLOC2534	tristate "Test module for stress/performance analysis of vmalloc allocator"2535	default n2536       depends on MMU2537	depends on m2538	help2539	  This builds the "test_vmalloc" module that should be used for2540	  stress and performance analysis. So, any new change for vmalloc2541	  subsystem can be evaluated from performance and stability point2542	  of view.2543 2544	  If unsure, say N.2545 2546config TEST_BPF2547	tristate "Test BPF filter functionality"2548	depends on m && NET2549	help2550	  This builds the "test_bpf" module that runs various test vectors2551	  against the BPF interpreter or BPF JIT compiler depending on the2552	  current setting. This is in particular useful for BPF JIT compiler2553	  development, but also to run regression tests against changes in2554	  the interpreter code. It also enables test stubs for eBPF maps and2555	  verifier used by user space verifier testsuite.2556 2557	  If unsure, say N.2558 2559config TEST_BLACKHOLE_DEV2560	tristate "Test blackhole netdev functionality"2561	depends on m && NET2562	help2563	  This builds the "test_blackhole_dev" module that validates the2564	  data path through this blackhole netdev.2565 2566	  If unsure, say N.2567 2568config FIND_BIT_BENCHMARK2569	tristate "Test find_bit functions"2570	help2571	  This builds the "test_find_bit" module that measure find_*_bit()2572	  functions performance.2573 2574	  If unsure, say N.2575 2576config TEST_FIRMWARE2577	tristate "Test firmware loading via userspace interface"2578	depends on FW_LOADER2579	help2580	  This builds the "test_firmware" module that creates a userspace2581	  interface for testing firmware loading. This can be used to2582	  control the triggering of firmware loading without needing an2583	  actual firmware-using device. The contents can be rechecked by2584	  userspace.2585 2586	  If unsure, say N.2587 2588config TEST_SYSCTL2589	tristate "sysctl test driver"2590	depends on PROC_SYSCTL2591	help2592	  This builds the "test_sysctl" module. This driver enables to test the2593	  proc sysctl interfaces available to drivers safely without affecting2594	  production knobs which might alter system functionality.2595 2596	  If unsure, say N.2597 2598config BITFIELD_KUNIT2599	tristate "KUnit test bitfield functions at runtime" if !KUNIT_ALL_TESTS2600	depends on KUNIT2601	default KUNIT_ALL_TESTS2602	help2603	  Enable this option to test the bitfield functions at boot.2604 2605	  KUnit tests run during boot and output the results to the debug log2606	  in TAP format (http://testanything.org/). Only useful for kernel devs2607	  running the KUnit test harness, and not intended for inclusion into a2608	  production build.2609 2610	  For more information on KUnit and unit tests in general please refer2611	  to the KUnit documentation in Documentation/dev-tools/kunit/.2612 2613	  If unsure, say N.2614 2615config CHECKSUM_KUNIT2616	tristate "KUnit test checksum functions at runtime" if !KUNIT_ALL_TESTS2617	depends on KUNIT2618	default KUNIT_ALL_TESTS2619	help2620	  Enable this option to test the checksum functions at boot.2621 2622	  KUnit tests run during boot and output the results to the debug log2623	  in TAP format (http://testanything.org/). Only useful for kernel devs2624	  running the KUnit test harness, and not intended for inclusion into a2625	  production build.2626 2627	  For more information on KUnit and unit tests in general please refer2628	  to the KUnit documentation in Documentation/dev-tools/kunit/.2629 2630	  If unsure, say N.2631 2632config HASH_KUNIT_TEST2633	tristate "KUnit Test for integer hash functions" if !KUNIT_ALL_TESTS2634	depends on KUNIT2635	default KUNIT_ALL_TESTS2636	help2637	  Enable this option to test the kernel's string (<linux/stringhash.h>), and2638	  integer (<linux/hash.h>) hash functions on boot.2639 2640	  KUnit tests run during boot and output the results to the debug log2641	  in TAP format (https://testanything.org/). Only useful for kernel devs2642	  running the KUnit test harness, and not intended for inclusion into a2643	  production build.2644 2645	  For more information on KUnit and unit tests in general please refer2646	  to the KUnit documentation in Documentation/dev-tools/kunit/.2647 2648	  This is intended to help people writing architecture-specific2649	  optimized versions. If unsure, say N.2650 2651config RESOURCE_KUNIT_TEST2652	tristate "KUnit test for resource API" if !KUNIT_ALL_TESTS2653	depends on KUNIT2654	default KUNIT_ALL_TESTS2655	select GET_FREE_REGION2656	help2657	  This builds the resource API unit test.2658	  Tests the logic of API provided by resource.c and ioport.h.2659	  For more information on KUnit and unit tests in general please refer2660	  to the KUnit documentation in Documentation/dev-tools/kunit/.2661 2662	  If unsure, say N.2663 2664config SYSCTL_KUNIT_TEST2665	tristate "KUnit test for sysctl" if !KUNIT_ALL_TESTS2666	depends on KUNIT2667	default KUNIT_ALL_TESTS2668	help2669	  This builds the proc sysctl unit test, which runs on boot.2670	  Tests the API contract and implementation correctness of sysctl.2671	  For more information on KUnit and unit tests in general please refer2672	  to the KUnit documentation in Documentation/dev-tools/kunit/.2673 2674	  If unsure, say N.2675 2676config LIST_KUNIT_TEST2677	tristate "KUnit Test for Kernel Linked-list structures" if !KUNIT_ALL_TESTS2678	depends on KUNIT2679	default KUNIT_ALL_TESTS2680	help2681	  This builds the linked list KUnit test suite.2682	  It tests that the API and basic functionality of the list_head type2683	  and associated macros.2684 2685	  KUnit tests run during boot and output the results to the debug log2686	  in TAP format (https://testanything.org/). Only useful for kernel devs2687	  running the KUnit test harness, and not intended for inclusion into a2688	  production build.2689 2690	  For more information on KUnit and unit tests in general please refer2691	  to the KUnit documentation in Documentation/dev-tools/kunit/.2692 2693	  If unsure, say N.2694 2695config HASHTABLE_KUNIT_TEST2696	tristate "KUnit Test for Kernel Hashtable structures" if !KUNIT_ALL_TESTS2697	depends on KUNIT2698	default KUNIT_ALL_TESTS2699	help2700	  This builds the hashtable KUnit test suite.2701	  It tests the basic functionality of the API defined in2702	  include/linux/hashtable.h. For more information on KUnit and2703	  unit tests in general please refer to the KUnit documentation2704	  in Documentation/dev-tools/kunit/.2705 2706	  If unsure, say N.2707 2708config LINEAR_RANGES_TEST2709	tristate "KUnit test for linear_ranges"2710	depends on KUNIT2711	select LINEAR_RANGES2712	help2713	  This builds the linear_ranges unit test, which runs on boot.2714	  Tests the linear_ranges logic correctness.2715	  For more information on KUnit and unit tests in general please refer2716	  to the KUnit documentation in Documentation/dev-tools/kunit/.2717 2718	  If unsure, say N.2719 2720config CMDLINE_KUNIT_TEST2721	tristate "KUnit test for cmdline API" if !KUNIT_ALL_TESTS2722	depends on KUNIT2723	default KUNIT_ALL_TESTS2724	help2725	  This builds the cmdline API unit test.2726	  Tests the logic of API provided by cmdline.c.2727	  For more information on KUnit and unit tests in general please refer2728	  to the KUnit documentation in Documentation/dev-tools/kunit/.2729 2730	  If unsure, say N.2731 2732config BITS_TEST2733	tristate "KUnit test for bits.h" if !KUNIT_ALL_TESTS2734	depends on KUNIT2735	default KUNIT_ALL_TESTS2736	help2737	  This builds the bits unit test.2738	  Tests the logic of macros defined in bits.h.2739	  For more information on KUnit and unit tests in general please refer2740	  to the KUnit documentation in Documentation/dev-tools/kunit/.2741 2742	  If unsure, say N.2743 2744config SLUB_KUNIT_TEST2745	tristate "KUnit test for SLUB cache error detection" if !KUNIT_ALL_TESTS2746	depends on SLUB_DEBUG && KUNIT2747	default KUNIT_ALL_TESTS2748	help2749	  This builds SLUB allocator unit test.2750	  Tests SLUB cache debugging functionality.2751	  For more information on KUnit and unit tests in general please refer2752	  to the KUnit documentation in Documentation/dev-tools/kunit/.2753 2754	  If unsure, say N.2755 2756config RATIONAL_KUNIT_TEST2757	tristate "KUnit test for rational.c" if !KUNIT_ALL_TESTS2758	depends on KUNIT && RATIONAL2759	default KUNIT_ALL_TESTS2760	help2761	  This builds the rational math unit test.2762	  For more information on KUnit and unit tests in general please refer2763	  to the KUnit documentation in Documentation/dev-tools/kunit/.2764 2765	  If unsure, say N.2766 2767config MEMCPY_KUNIT_TEST2768	tristate "Test memcpy(), memmove(), and memset() functions at runtime" if !KUNIT_ALL_TESTS2769	depends on KUNIT2770	default KUNIT_ALL_TESTS2771	help2772	  Builds unit tests for memcpy(), memmove(), and memset() functions.2773	  For more information on KUnit and unit tests in general please refer2774	  to the KUnit documentation in Documentation/dev-tools/kunit/.2775 2776	  If unsure, say N.2777 2778config IS_SIGNED_TYPE_KUNIT_TEST2779	tristate "Test is_signed_type() macro" if !KUNIT_ALL_TESTS2780	depends on KUNIT2781	default KUNIT_ALL_TESTS2782	help2783	  Builds unit tests for the is_signed_type() macro.2784 2785	  For more information on KUnit and unit tests in general please refer2786	  to the KUnit documentation in Documentation/dev-tools/kunit/.2787 2788	  If unsure, say N.2789 2790config OVERFLOW_KUNIT_TEST2791	tristate "Test check_*_overflow() functions at runtime" if !KUNIT_ALL_TESTS2792	depends on KUNIT2793	default KUNIT_ALL_TESTS2794	help2795	  Builds unit tests for the check_*_overflow(), size_*(), allocation, and2796	  related functions.2797 2798	  For more information on KUnit and unit tests in general please refer2799	  to the KUnit documentation in Documentation/dev-tools/kunit/.2800 2801	  If unsure, say N.2802 2803config STACKINIT_KUNIT_TEST2804	tristate "Test level of stack variable initialization" if !KUNIT_ALL_TESTS2805	depends on KUNIT2806	default KUNIT_ALL_TESTS2807	help2808	  Test if the kernel is zero-initializing stack variables and2809	  padding. Coverage is controlled by compiler flags,2810	  CONFIG_INIT_STACK_ALL_PATTERN, CONFIG_INIT_STACK_ALL_ZERO,2811	  CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,2812	  or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.2813 2814config FORTIFY_KUNIT_TEST2815	tristate "Test fortified str*() and mem*() function internals at runtime" if !KUNIT_ALL_TESTS2816	depends on KUNIT2817	default KUNIT_ALL_TESTS2818	help2819	  Builds unit tests for checking internals of FORTIFY_SOURCE as used2820	  by the str*() and mem*() family of functions. For testing runtime2821	  traps of FORTIFY_SOURCE, see LKDTM's "FORTIFY_*" tests.2822 2823config HW_BREAKPOINT_KUNIT_TEST2824	bool "Test hw_breakpoint constraints accounting" if !KUNIT_ALL_TESTS2825	depends on HAVE_HW_BREAKPOINT2826	depends on KUNIT=y2827	default KUNIT_ALL_TESTS2828	help2829	  Tests for hw_breakpoint constraints accounting.2830 2831	  If unsure, say N.2832 2833config SIPHASH_KUNIT_TEST2834	tristate "Perform selftest on siphash functions" if !KUNIT_ALL_TESTS2835	depends on KUNIT2836	default KUNIT_ALL_TESTS2837	help2838	  Enable this option to test the kernel's siphash (<linux/siphash.h>) hash2839	  functions on boot (or module load).2840 2841	  This is intended to help people writing architecture-specific2842	  optimized versions.  If unsure, say N.2843 2844config USERCOPY_KUNIT_TEST2845	tristate "KUnit Test for user/kernel boundary protections"2846	depends on KUNIT2847	default KUNIT_ALL_TESTS2848	help2849	  This builds the "usercopy_kunit" module that runs sanity checks2850	  on the copy_to/from_user infrastructure, making sure basic2851	  user/kernel boundary testing is working.2852 2853config TEST_UDELAY2854	tristate "udelay test driver"2855	help2856	  This builds the "udelay_test" module that helps to make sure2857	  that udelay() is working properly.2858 2859	  If unsure, say N.2860 2861config TEST_STATIC_KEYS2862	tristate "Test static keys"2863	depends on m2864	help2865	  Test the static key interfaces.2866 2867	  If unsure, say N.2868 2869config TEST_DYNAMIC_DEBUG2870	tristate "Test DYNAMIC_DEBUG"2871	depends on DYNAMIC_DEBUG2872	help2873	  This module registers a tracer callback to count enabled2874	  pr_debugs in a 'do_debugging' function, then alters their2875	  enablements, calls the function, and compares counts.2876 2877	  If unsure, say N.2878 2879config TEST_KMOD2880	tristate "kmod stress tester"2881	depends on m2882	depends on NETDEVICES && NET_CORE && INET # for TUN2883	depends on BLOCK2884	depends on PAGE_SIZE_LESS_THAN_256KB # for BTRFS2885	select TEST_LKM2886	select XFS_FS2887	select TUN2888	select BTRFS_FS2889	help2890	  Test the kernel's module loading mechanism: kmod. kmod implements2891	  support to load modules using the Linux kernel's usermode helper.2892	  This test provides a series of tests against kmod.2893 2894	  Although technically you can either build test_kmod as a module or2895	  into the kernel we disallow building it into the kernel since2896	  it stress tests request_module() and this will very likely cause2897	  some issues by taking over precious threads available from other2898	  module load requests, ultimately this could be fatal.2899 2900	  To run tests run:2901 2902	  tools/testing/selftests/kmod/kmod.sh --help2903 2904	  If unsure, say N.2905 2906config TEST_DEBUG_VIRTUAL2907	tristate "Test CONFIG_DEBUG_VIRTUAL feature"2908	depends on DEBUG_VIRTUAL2909	help2910	  Test the kernel's ability to detect incorrect calls to2911	  virt_to_phys() done against the non-linear part of the2912	  kernel's virtual address map.2913 2914	  If unsure, say N.2915 2916config TEST_MEMCAT_P2917	tristate "Test memcat_p() helper function"2918	help2919	  Test the memcat_p() helper for correctly merging two2920	  pointer arrays together.2921 2922	  If unsure, say N.2923 2924config TEST_OBJAGG2925	tristate "Perform selftest on object aggreration manager"2926	default n2927	depends on OBJAGG2928	help2929	  Enable this option to test object aggregation manager on boot2930	  (or module load).2931 2932config TEST_MEMINIT2933	tristate "Test heap/page initialization"2934	help2935	  Test if the kernel is zero-initializing heap and page allocations.2936	  This can be useful to test init_on_alloc and init_on_free features.2937 2938	  If unsure, say N.2939 2940config TEST_HMM2941	tristate "Test HMM (Heterogeneous Memory Management)"2942	depends on TRANSPARENT_HUGEPAGE2943	depends on DEVICE_PRIVATE2944	select HMM_MIRROR2945	select MMU_NOTIFIER2946	help2947	  This is a pseudo device driver solely for testing HMM.2948	  Say M here if you want to build the HMM test module.2949	  Doing so will allow you to run tools/testing/selftest/vm/hmm-tests.2950 2951	  If unsure, say N.2952 2953config TEST_FREE_PAGES2954	tristate "Test freeing pages"2955	help2956	  Test that a memory leak does not occur due to a race between2957	  freeing a block of pages and a speculative page reference.2958	  Loading this module is safe if your kernel has the bug fixed.2959	  If the bug is not fixed, it will leak gigabytes of memory and2960	  probably OOM your system.2961 2962config TEST_FPU2963	tristate "Test floating point operations in kernel space"2964	depends on ARCH_HAS_KERNEL_FPU_SUPPORT && !KCOV_INSTRUMENT_ALL2965	help2966	  Enable this option to add /sys/kernel/debug/selftest_helpers/test_fpu2967	  which will trigger a sequence of floating point operations. This is used2968	  for self-testing floating point control register setting in2969	  kernel_fpu_begin().2970 2971	  If unsure, say N.2972 2973config TEST_CLOCKSOURCE_WATCHDOG2974	tristate "Test clocksource watchdog in kernel space"2975	depends on CLOCKSOURCE_WATCHDOG2976	help2977	  Enable this option to create a kernel module that will trigger2978	  a test of the clocksource watchdog.  This module may be loaded2979	  via modprobe or insmod in which case it will run upon being2980	  loaded, or it may be built in, in which case it will run2981	  shortly after boot.2982 2983	  If unsure, say N.2984 2985config TEST_OBJPOOL2986	tristate "Test module for correctness and stress of objpool"2987	default n2988	depends on m && DEBUG_KERNEL2989	help2990	  This builds the "test_objpool" module that should be used for2991	  correctness verification and concurrent testings of objects2992	  allocation and reclamation.2993 2994	  If unsure, say N.2995 2996endif # RUNTIME_TESTING_MENU2997 2998config ARCH_USE_MEMTEST2999	bool3000	help3001	  An architecture should select this when it uses early_memtest()3002	  during boot process.3003 3004config MEMTEST3005	bool "Memtest"3006	depends on ARCH_USE_MEMTEST3007	help3008	  This option adds a kernel parameter 'memtest', which allows memtest3009	  to be set and executed.3010	        memtest=0, mean disabled; -- default3011	        memtest=1, mean do 1 test pattern;3012	        ...3013	        memtest=17, mean do 17 test patterns.3014	  If you are unsure how to answer this question, answer N.3015 3016 3017 3018config HYPERV_TESTING3019	bool "Microsoft Hyper-V driver testing"3020	default n3021	depends on HYPERV && DEBUG_FS3022	help3023	  Select this option to enable Hyper-V vmbus testing.3024 3025endmenu # "Kernel Testing and Coverage"3026 3027menu "Rust hacking"3028 3029config RUST_DEBUG_ASSERTIONS3030	bool "Debug assertions"3031	depends on RUST3032	help3033	  Enables rustc's `-Cdebug-assertions` codegen option.3034 3035	  This flag lets you turn `cfg(debug_assertions)` conditional3036	  compilation on or off. This can be used to enable extra debugging3037	  code in development but not in production. For example, it controls3038	  the behavior of the standard library's `debug_assert!` macro.3039 3040	  Note that this will apply to all Rust code, including `core`.3041 3042	  If unsure, say N.3043 3044config RUST_OVERFLOW_CHECKS3045	bool "Overflow checks"3046	default y3047	depends on RUST3048	help3049	  Enables rustc's `-Coverflow-checks` codegen option.3050 3051	  This flag allows you to control the behavior of runtime integer3052	  overflow. When overflow-checks are enabled, a Rust panic will occur3053	  on overflow.3054 3055	  Note that this will apply to all Rust code, including `core`.3056 3057	  If unsure, say Y.3058 3059config RUST_BUILD_ASSERT_ALLOW3060	bool "Allow unoptimized build-time assertions"3061	depends on RUST3062	help3063	  Controls how `build_error!` and `build_assert!` are handled during the build.3064 3065	  If calls to them exist in the binary, it may indicate a violated invariant3066	  or that the optimizer failed to verify the invariant during compilation.3067 3068	  This should not happen, thus by default the build is aborted. However,3069	  as an escape hatch, you can choose Y here to ignore them during build3070	  and let the check be carried at runtime (with `panic!` being called if3071	  the check fails).3072 3073	  If unsure, say N.3074 3075config RUST_KERNEL_DOCTESTS3076	bool "Doctests for the `kernel` crate" if !KUNIT_ALL_TESTS3077	depends on RUST && KUNIT=y3078	default KUNIT_ALL_TESTS3079	help3080	  This builds the documentation tests of the `kernel` crate3081	  as KUnit tests.3082 3083	  For more information on KUnit and unit tests in general,3084	  please refer to the KUnit documentation in Documentation/dev-tools/kunit/.3085 3086	  If unsure, say N.3087 3088endmenu # "Rust"3089 3090endmenu # Kernel hacking3091 3092config INT_POW_TEST3093	tristate "Integer exponentiation (int_pow) test" if !KUNIT_ALL_TESTS3094	depends on KUNIT3095	default KUNIT_ALL_TESTS3096	help3097	  This option enables the KUnit test suite for the int_pow function,3098	  which performs integer exponentiation. The test suite is designed to3099	  verify that the implementation of int_pow correctly computes the power3100	  of a given base raised to a given exponent.3101 3102	  Enabling this option will include tests that check various scenarios3103	  and edge cases to ensure the accuracy and reliability of the exponentiation3104	  function.3105 3106	  If unsure, say N3107