1# SPDX-License-Identifier: GPL-2.0-only 2menu "Kernel hacking" 3 4menu "printk and dmesg options" 5 6config PRINTK_TIME 7 bool "Show timing information on printks" 8 depends on PRINTK 9 help 10 Selecting this option causes time stamps of the printk() 11 messages to be added to the output of the syslog() system 12 call and at the console. 13 14 The timestamp is always recorded internally, and exported 15 to /dev/kmsg. This flag just specifies if the timestamp should 16 be included, not that the timestamp is recorded. 17 18 The behavior is also controlled by the kernel command line 19 parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst 20 21config PRINTK_CALLER 22 bool "Show caller information on printks" 23 depends on PRINTK 24 help 25 Selecting this option causes printk() to add a caller "thread id" (if 26 in task context) or a caller "processor id" (if not in task context) 27 to every message. 28 29 This option is intended for environments where multiple threads 30 concurrently call printk() for many times, for it is difficult to 31 interpret without knowing where these lines (or sometimes individual 32 line which was divided into multiple lines due to race) came from. 33 34 Since toggling after boot makes the code racy, currently there is 35 no option to enable/disable at the kernel command line parameter or 36 sysfs interface. 37 38config STACKTRACE_BUILD_ID 39 bool "Show build ID information in stacktraces" 40 depends on PRINTK 41 help 42 Selecting this option adds build ID information for symbols in 43 stacktraces printed with the printk format '%p[SR]b'. 44 45 This option is intended for distros where debuginfo is not easily 46 accessible but can be downloaded given the build ID of the vmlinux or 47 kernel module where the function is located. 48 49config CONSOLE_LOGLEVEL_DEFAULT 50 int "Default console loglevel (1-15)" 51 range 1 15 52 default "7" 53 help 54 Default loglevel to determine what will be printed on the console. 55 56 Setting a default here is equivalent to passing in loglevel=<x> in 57 the kernel bootargs. loglevel=<x> continues to override whatever 58 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_DEFAULT 62 option. 63 64config CONSOLE_LOGLEVEL_QUIET 65 int "quiet console loglevel (1-15)" 66 range 1 15 67 default "4" 68 help 69 loglevel to use when "quiet" is passed on the kernel commandline. 70 71 When "quiet" is passed on the kernel commandline this loglevel 72 will be used as the loglevel. IOW passing "quiet" will be the 73 equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>" 74 75config MESSAGE_LOGLEVEL_DEFAULT 76 int "Default message log level (1-7)" 77 range 1 7 78 default "4" 79 help 80 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 folks 83 that are auditing their logs closely may want to set it to a lower 84 priority. 85 86 Note: This does not affect what message level gets printed on the console 87 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_DELAY 91 bool "Delay each boot printk message by N milliseconds" 92 depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY 93 help 94 This build option allows you to read kernel boot messages 95 by inserting a short delay after each one. The delay is 96 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 preset 100 the "loops per jiffy" value. 101 See a previous boot log for the "lpj" value to use for your 102 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 detect 106 what it believes to be lockup conditions. 107 108config DYNAMIC_DEBUG 109 bool "Enable dynamic printk() support" 110 default n 111 depends on PRINTK 112 depends on (DEBUG_FS || PROC_FS) 113 select DYNAMIC_DEBUG_CORE 114 help 115 116 Compiles debug level messages into the kernel, which would not 117 otherwise be available at runtime. These messages can then be 118 enabled/disabled based on various levels of scope - per source file, 119 function, module, format string, and line number. This mechanism 120 implicitly compiles in all pr_debug() and dev_dbg() calls, which 121 enlarges the kernel text size by about 2%. 122 123 If a source file is compiled with DEBUG flag set, any 124 pr_debug() calls in it are enabled by default, but can be 125 disabled at runtime as below. Note that DEBUG flag is 126 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 before 133 making use of this feature. 134 We refer the control file as: <debugfs>/dynamic_debug/control. This 135 file contains a list of the debug statements that can be enabled. The 136 format for each line of the file is: 137 138 filename:lineno [module]function flags format 139 140 filename : source file of the debug statement 141 lineno : line number of the debug statement 142 module : module that contains the debug statement 143 function : function that contains the debug statement 144 flags : '=p' means the line is turned 'on' for printing 145 format : the format used for the debug statement 146 147 From a live system: 148 149 nullarbor:~ # cat <debugfs>/dynamic_debug/control 150 # filename:lineno [module]function flags format 151 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.c 158 nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' > 159 <debugfs>/dynamic_debug/control 160 161 // enable all the messages in file svcsock.c 162 nullarbor:~ # echo -n 'file svcsock.c +p' > 163 <debugfs>/dynamic_debug/control 164 165 // enable all the messages in the NFS server module 166 nullarbor:~ # echo -n 'module nfsd +p' > 167 <debugfs>/dynamic_debug/control 168 169 // enable all 12 messages in the function svc_process() 170 nullarbor:~ # echo -n 'func svc_process +p' > 171 <debugfs>/dynamic_debug/control 172 173 // disable all 12 messages in the function svc_process() 174 nullarbor:~ # echo -n 'func svc_process -p' > 175 <debugfs>/dynamic_debug/control 176 177 See Documentation/admin-guide/dynamic-debug-howto.rst for additional 178 information. 179 180config DYNAMIC_DEBUG_CORE 181 bool "Enable core function of dynamic debug support" 182 depends on PRINTK 183 depends on (DEBUG_FS || PROC_FS) 184 help 185 Enable core functional support of dynamic debug. It is useful 186 when you want to tie dynamic debug to your kernel modules with 187 DYNAMIC_DEBUG_MODULE defined for each of them, especially for 188 the case of embedded system where the kernel image size is 189 sensitive for people. 190 191config SYMBOLIC_ERRNAME 192 bool "Support symbolic error names in printf" 193 default y if PRINTK 194 help 195 If you say Y here, the kernel's printf implementation will 196 be able to print symbolic error names such as ENOSPC instead 197 of the number 28. It makes the kernel image slightly larger 198 (about 3KB), but can make the kernel logs easier to read. 199 200config DEBUG_BUGVERBOSE 201 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT 202 depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE) 203 default y 204 help 205 Say Y here to make BUG() panics output the file name and line number 206 of the BUG call as well as the EIP and oops trace. This aids 207 debugging but costs about 70-100K of memory. 208 209config DEBUG_BUGVERBOSE_DETAILED 210 bool "Verbose WARN_ON_ONCE() reporting (adds 100K)" if DEBUG_BUGVERBOSE 211 help 212 Say Y here to make WARN_ON_ONCE() output the condition string of the 213 warning, in addition to the file name and line number. 214 This helps debugging, but costs about 100K of memory. 215 216 Say N if unsure. 217 218 219endmenu # "printk and dmesg options" 220 221config DEBUG_KERNEL 222 bool "Kernel debugging" 223 help 224 Say Y here if you are developing drivers or trying to debug and 225 identify kernel problems. 226 227config DEBUG_MISC 228 bool "Miscellaneous debug code" 229 default DEBUG_KERNEL 230 depends on DEBUG_KERNEL 231 help 232 Say Y here if you need to enable miscellaneous debug code that should 233 be under a more specific debug option but isn't. 234 235menu "Compile-time checks and compiler options" 236 237config DEBUG_INFO 238 bool 239 help 240 A kernel debug info option other than "None" has been selected 241 in the "Debug information" choice below, indicating that debug 242 information will be generated for build targets. 243 244# Clang generates .uleb128 with label differences for DWARF v5, a feature that 245# older binutils ports do not support when utilizing RISC-V style linker 246# relaxation: https://sourceware.org/bugzilla/show_bug.cgi?id=27215 247config AS_HAS_NON_CONST_ULEB128 248 def_bool $(as-instr,.uleb128 .Lexpr_end4 - .Lexpr_start3\n.Lexpr_start3:\n.Lexpr_end4:) 249 250choice 251 prompt "Debug information" 252 depends on DEBUG_KERNEL 253 help 254 Selecting something other than "None" results in a kernel image 255 that will include debugging info resulting in a larger kernel image. 256 This adds debug symbols to the kernel and modules (gcc -g), and 257 is needed if you intend to use kernel crashdump or binary object 258 tools like crash, kgdb, LKCD, gdb, etc on the kernel. 259 260 Choose which version of DWARF debug info to emit. If unsure, 261 select "Toolchain default". 262 263config DEBUG_INFO_NONE 264 bool "Disable debug information" 265 help 266 Do not build the kernel with debugging information, which will 267 result in a faster and smaller build. 268 269config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT 270 bool "Rely on the toolchain's implicit default DWARF version" 271 select DEBUG_INFO 272 depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_ULEB128) 273 help 274 The implicit default version of DWARF debug info produced by a 275 toolchain changes over time. 276 277 This can break consumers of the debug info that haven't upgraded to 278 support newer revisions, and prevent testing newer versions, but 279 those should be less common scenarios. 280 281config DEBUG_INFO_DWARF4 282 bool "Generate DWARF Version 4 debuginfo" 283 select DEBUG_INFO 284 depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502) 285 help 286 Generate DWARF v4 debug info. This requires gcc 4.5+, binutils 2.35.2 287 if using clang without clang's integrated assembler, and gdb 7.0+. 288 289 If you have consumers of DWARF debug info that are not ready for 290 newer revisions of DWARF, you may wish to choose this or have your 291 config select this. 292 293config DEBUG_INFO_DWARF5 294 bool "Generate DWARF Version 5 debuginfo" 295 select DEBUG_INFO 296 depends on !ARCH_HAS_BROKEN_DWARF5 297 depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_ULEB128) 298 help 299 Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc 300 5.0+ accepts the -gdwarf-5 flag but only had partial support for some 301 draft features until 7.0), and gdb 8.0+. 302 303 Changes to the structure of debug info in Version 5 allow for around 304 15-18% savings in resulting image and debug info section sizes as 305 compared to DWARF Version 4. DWARF Version 5 standardizes previous 306 extensions such as accelerators for symbol indexing and the format 307 for fission (.dwo/.dwp) files. Users may not want to select this 308 config if they rely on tooling that has not yet been updated to 309 support DWARF Version 5. 310 311endchoice # "Debug information" 312 313if DEBUG_INFO 314 315config DEBUG_INFO_REDUCED 316 bool "Reduce debugging information" 317 help 318 If you say Y here gcc is instructed to generate less debugging 319 information for structure types. This means that tools that 320 need full debugging information (like kgdb or systemtap) won't 321 be happy. But if you merely need debugging information to 322 resolve line numbers there is no loss. Advantage is that 323 build directory object sizes shrink dramatically over a full 324 DEBUG_INFO build and compile times are reduced too. 325 Only works with newer gcc versions. 326 327choice 328 prompt "Compressed Debug information" 329 help 330 Compress the resulting debug info. Results in smaller debug info sections, 331 but requires that consumers are able to decompress the results. 332 333 If unsure, choose DEBUG_INFO_COMPRESSED_NONE. 334 335config DEBUG_INFO_COMPRESSED_NONE 336 bool "Don't compress debug information" 337 help 338 Don't compress debug info sections. 339 340config DEBUG_INFO_COMPRESSED_ZLIB 341 bool "Compress debugging information with zlib" 342 depends on $(cc-option,-gz=zlib) 343 depends on $(ld-option,--compress-debug-sections=zlib) 344 help 345 Compress the debug information using zlib. Requires GCC 5.0+ or Clang 346 5.0+, binutils 2.26+, and zlib. 347 348 Users of dpkg-deb via debian/rules may find an increase in 349 size of their debug .deb packages with this config set, due to the 350 debug info being compressed with zlib, then the object files being 351 recompressed with a different compression scheme. But this is still 352 preferable to setting KDEB_COMPRESS or DPKG_DEB_COMPRESSOR_TYPE to 353 "none" which would be even larger. 354 355config DEBUG_INFO_COMPRESSED_ZSTD 356 bool "Compress debugging information with zstd" 357 depends on $(cc-option,-gz=zstd) 358 depends on $(ld-option,--compress-debug-sections=zstd) 359 help 360 Compress the debug information using zstd. This may provide better 361 compression than zlib, for about the same time costs, but requires newer 362 toolchain support. Requires GCC 13.0+ or Clang 16.0+, binutils 2.40+, and 363 zstd. 364 365endchoice # "Compressed Debug information" 366 367config DEBUG_INFO_SPLIT 368 bool "Produce split debuginfo in .dwo files" 369 depends on $(cc-option,-gsplit-dwarf) 370 # RISC-V linker relaxation + -gsplit-dwarf has issues with LLVM and GCC 371 # prior to 12.x: 372 # https://github.com/llvm/llvm-project/issues/56642 373 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99090 374 depends on !RISCV || GCC_VERSION >= 120000 375 help 376 Generate debug info into separate .dwo files. This significantly 377 reduces the build directory size for builds with DEBUG_INFO, 378 because it stores the information only once on disk in .dwo 379 files instead of multiple times in object files and executables. 380 In addition the debug information is also compressed. 381 382 Requires recent gcc (4.7+) and recent gdb/binutils. 383 Any tool that packages or reads debug information would need 384 to know about the .dwo files and include them. 385 Incompatible with older versions of ccache. 386 387config DEBUG_INFO_BTF 388 bool "Generate BTF type information" 389 depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED 390 depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST 391 depends on BPF_SYSCALL 392 depends on PAHOLE_VERSION >= 116 393 depends on DEBUG_INFO_DWARF4 || PAHOLE_VERSION >= 121 394 # pahole uses elfutils, which does not have support for Hexagon relocations 395 depends on !HEXAGON 396 help 397 Generate deduplicated BTF type information from DWARF debug info. 398 Turning this on requires pahole v1.16 or later (v1.21 or later to 399 support DWARF 5), which will convert DWARF type info into equivalent 400 deduplicated BTF type info. 401 402config PAHOLE_HAS_SPLIT_BTF 403 def_bool PAHOLE_VERSION >= 119 404 405config PAHOLE_HAS_BTF_TAG 406 def_bool PAHOLE_VERSION >= 123 407 depends on CC_IS_CLANG 408 help 409 Decide whether pahole emits btf_tag attributes (btf_type_tag and 410 btf_decl_tag) or not. Currently only clang compiler implements 411 these attributes, so make the config depend on CC_IS_CLANG. 412 413config PAHOLE_HAS_LANG_EXCLUDE 414 def_bool PAHOLE_VERSION >= 124 415 help 416 Support for the --lang_exclude flag which makes pahole exclude 417 compilation units from the supplied language. Used in Kbuild to 418 omit Rust CUs which are not supported in version 1.24 of pahole, 419 otherwise it would emit malformed kernel and module binaries when 420 using DEBUG_INFO_BTF_MODULES. 421 422config DEBUG_INFO_BTF_MODULES 423 bool "Generate BTF type information for kernel modules" 424 default y 425 depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF 426 help 427 Generate compact split BTF type information for kernel modules. 428 429config MODULE_ALLOW_BTF_MISMATCH 430 bool "Allow loading modules with non-matching BTF type info" 431 depends on DEBUG_INFO_BTF_MODULES 432 help 433 For modules whose split BTF does not match vmlinux, load without 434 BTF rather than refusing to load. The default behavior with 435 module BTF enabled is to reject modules with such mismatches; 436 this option will still load module BTF where possible but ignore 437 it when a mismatch is found. 438 439config GDB_SCRIPTS 440 bool "Provide GDB scripts for kernel debugging" 441 help 442 This creates the required links to GDB helper scripts in the 443 build directory. If you load vmlinux into gdb, the helper 444 scripts will be automatically imported by gdb as well, and 445 additional functions are available to analyze a Linux kernel 446 instance. See Documentation/process/debugging/gdb-kernel-debugging.rst 447 for further details. 448 449endif # DEBUG_INFO 450 451config FRAME_WARN 452 int "Warn for stack frames larger than" 453 range 0 8192 454 default 0 if KMSAN 455 default 2048 if GCC_PLUGIN_LATENT_ENTROPY 456 default 2048 if PARISC 457 default 1536 if (!64BIT && XTENSA) 458 default 1280 if !64BIT 459 default 2048 if 64BIT 460 help 461 Tell the compiler to warn at build time for stack frames larger than this. 462 Setting this too low will cause a lot of warnings. 463 Setting it to 0 disables the warning. 464 465config STRIP_ASM_SYMS 466 bool "Strip assembler-generated symbols during link" 467 default n 468 help 469 Strip internal assembler-generated symbols during a link (symbols 470 that look like '.Lxxx') so they don't pollute the output of 471 get_wchan() and suchlike. 472 473config READABLE_ASM 474 bool "Generate readable assembler code" 475 depends on DEBUG_KERNEL 476 depends on CC_IS_GCC 477 help 478 Disable some compiler optimizations that tend to generate human unreadable 479 assembler output. This may make the kernel slightly slower, but it helps 480 to keep kernel developers who have to stare a lot at assembler listings 481 sane. 482 483config HEADERS_INSTALL 484 bool "Install uapi headers to usr/include" 485 help 486 This option will install uapi headers (headers exported to user-space) 487 into the usr/include directory for use during the kernel build. 488 This is unneeded for building the kernel itself, but needed for some 489 user-space program samples. It is also needed by some features such 490 as uapi header sanity checks. 491 492config DEBUG_SECTION_MISMATCH 493 bool "Enable full Section mismatch analysis" 494 depends on CC_IS_GCC 495 help 496 The section mismatch analysis checks if there are illegal 497 references from one section to another section. 498 During linktime or runtime, some sections are dropped; 499 any use of code/data previously in these sections would 500 most likely result in an oops. 501 In the code, functions and variables are annotated with 502 __init,, etc. (see the full list in include/linux/init.h), 503 which results in the code/data being placed in specific sections. 504 The section mismatch analysis is always performed after a full 505 kernel build, and enabling this option causes the following 506 additional step to occur: 507 - Add the option -fno-inline-functions-called-once to gcc commands. 508 When inlining a function annotated with __init in a non-init 509 function, we would lose the section information and thus 510 the analysis would not catch the illegal reference. 511 This option tells gcc to inline less (but it does result in 512 a larger kernel). 513 514config SECTION_MISMATCH_WARN_ONLY 515 bool "Make section mismatch errors non-fatal" 516 default y 517 help 518 If you say N here, the build process will fail if there are any 519 section mismatch, instead of just throwing warnings. 520 521 If unsure, say Y. 522 523config DEBUG_FORCE_FUNCTION_ALIGN_64B 524 bool "Force all function address 64B aligned" 525 depends on EXPERT && (X86_64 || ARM64 || PPC32 || PPC64 || ARC || RISCV || S390) 526 select FUNCTION_ALIGNMENT_64B 527 help 528 There are cases that a commit from one domain changes the function 529 address alignment of other domains, and cause magic performance 530 bump (regression or improvement). Enable this option will help to 531 verify if the bump is caused by function alignment changes, while 532 it will slightly increase the kernel size and affect icache usage. 533 534 It is mainly for debug and performance tuning use. 535 536# 537# Select this config option from the architecture Kconfig, if it 538# is preferred to always offer frame pointers as a config 539# option on the architecture (regardless of KERNEL_DEBUG): 540# 541config ARCH_WANT_FRAME_POINTERS 542 bool 543 544config FRAME_POINTER 545 bool "Compile the kernel with frame pointers" 546 depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS 547 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS 548 help 549 If you say Y here the resulting kernel image will be slightly 550 larger and slower, but it gives very useful debugging information 551 in case of kernel bugs. (precise oopses/stacktraces/warnings) 552 553config OBJTOOL 554 bool 555 556config OBJTOOL_WERROR 557 bool "Upgrade objtool warnings to errors" 558 depends on OBJTOOL && !COMPILE_TEST 559 help 560 Fail the build on objtool warnings. 561 562 Objtool warnings can indicate kernel instability, including boot 563 failures. This option is highly recommended. 564 565 If unsure, say Y. 566 567config STACK_VALIDATION 568 bool "Compile-time stack metadata validation" 569 depends on HAVE_STACK_VALIDATION && UNWINDER_FRAME_POINTER 570 select OBJTOOL 571 default n 572 help 573 Validate frame pointer rules at compile-time. This helps ensure that 574 runtime stack traces are more reliable. 575 576 For more information, see 577 tools/objtool/Documentation/objtool.txt. 578 579config NOINSTR_VALIDATION 580 bool 581 depends on HAVE_NOINSTR_VALIDATION && DEBUG_ENTRY 582 select OBJTOOL 583 default y 584 585config VMLINUX_MAP 586 bool "Generate vmlinux.map file when linking" 587 depends on EXPERT 588 help 589 Selecting this option will pass "-Map=vmlinux.map" to ld 590 when linking vmlinux. That file can be useful for verifying 591 and debugging magic section games, and for seeing which 592 pieces of code get eliminated with 593 CONFIG_LD_DEAD_CODE_DATA_ELIMINATION. 594 595config BUILTIN_MODULE_RANGES 596 bool "Generate address range information for builtin modules" 597 depends on !LTO 598 depends on VMLINUX_MAP 599 help 600 When modules are built into the kernel, there will be no module name 601 associated with its symbols in /proc/kallsyms. Tracers may want to 602 identify symbols by module name and symbol name regardless of whether 603 the module is configured as loadable or not. 604 605 This option generates modules.builtin.ranges in the build tree with 606 offset ranges (per ELF section) for the module(s) they belong to. 607 It also records an anchor symbol to determine the load address of the 608 section. 609 610config DEBUG_FORCE_WEAK_PER_CPU 611 bool "Force weak per-cpu definitions" 612 depends on DEBUG_KERNEL 613 help 614 s390 and alpha require percpu variables in modules to be 615 defined weak to work around addressing range issue which 616 puts the following two restrictions on percpu variable 617 definitions. 618 619 1. percpu symbols must be unique whether static or not 620 2. percpu variables can't be defined inside a function 621 622 To ensure that generic code follows the above rules, this 623 option forces all percpu variables to be defined as weak. 624 625endmenu # "Compiler options" 626 627menu "Generic Kernel Debugging Instruments" 628 629config MAGIC_SYSRQ 630 bool "Magic SysRq key" 631 depends on !UML 632 help 633 If you say Y here, you will have some control over the system even 634 if the system crashes for example during kernel debugging (e.g., you 635 will be able to flush the buffer cache to disk, reboot the system 636 immediately or dump some status information). This is accomplished 637 by pressing various keys while holding SysRq (Alt+PrintScreen). It 638 also works on a serial console (on PC hardware at least), if you 639 send a BREAK and then within 5 seconds a command keypress. The 640 keys are documented in <file:Documentation/admin-guide/sysrq.rst>. 641 Don't say Y unless you really know what this hack does. 642 643config MAGIC_SYSRQ_DEFAULT_ENABLE 644 hex "Enable magic SysRq key functions by default" 645 depends on MAGIC_SYSRQ 646 default 0x1 647 help 648 Specifies which SysRq key functions are enabled by default. 649 This may be set to 1 or 0 to enable or disable them all, or 650 to a bitmask as described in Documentation/admin-guide/sysrq.rst. 651 652config MAGIC_SYSRQ_SERIAL 653 bool "Enable magic SysRq key over serial" 654 depends on MAGIC_SYSRQ 655 default y 656 help 657 Many embedded boards have a disconnected TTL level serial which can 658 generate some garbage that can lead to spurious false sysrq detects. 659 This option allows you to decide whether you want to enable the 660 magic SysRq key. 661 662config MAGIC_SYSRQ_SERIAL_SEQUENCE 663 string "Char sequence that enables magic SysRq over serial" 664 depends on MAGIC_SYSRQ_SERIAL 665 default "" 666 help 667 Specifies a sequence of characters that can follow BREAK to enable 668 SysRq on a serial console. 669 670 If unsure, leave an empty string and the option will not be enabled. 671 672config DEBUG_FS 673 bool "Debug Filesystem" 674 help 675 debugfs is a virtual file system that kernel developers use to put 676 debugging files into. Enable this option to be able to read and 677 write to these files. 678 679 For detailed documentation on the debugfs API, see 680 Documentation/filesystems/. 681 682 If unsure, say N. 683 684choice 685 prompt "Debugfs default access" 686 depends on DEBUG_FS 687 default DEBUG_FS_ALLOW_ALL 688 help 689 This selects the default access restrictions for debugfs. 690 It can be overridden with kernel command line option 691 debugfs=[on,no-mount,off]. The restrictions apply for API access 692 and filesystem registration. 693 694config DEBUG_FS_ALLOW_ALL 695 bool "Access normal" 696 help 697 No restrictions apply. Both API and filesystem registration 698 is on. This is the normal default operation. 699 700config DEBUG_FS_DISALLOW_MOUNT 701 bool "Do not register debugfs as filesystem" 702 help 703 The API is open but filesystem is not loaded. Clients can still do 704 their work and read with debug tools that do not need 705 debugfs filesystem. 706 707config DEBUG_FS_ALLOW_NONE 708 bool "No access" 709 help 710 Access is off. Clients get -PERM when trying to create nodes in 711 debugfs tree and debugfs is not registered as a filesystem. 712 Client can then back-off or continue without debugfs access. 713 714endchoice 715 716source "lib/Kconfig.kgdb" 717source "lib/Kconfig.ubsan" 718source "lib/Kconfig.kcsan" 719 720endmenu 721 722menu "Networking Debugging" 723 724source "net/Kconfig.debug" 725 726endmenu # "Networking Debugging" 727 728menu "Memory Debugging" 729 730source "mm/Kconfig.debug" 731 732config DEBUG_OBJECTS 733 bool "Debug object operations" 734 depends on DEBUG_KERNEL 735 help 736 If you say Y here, additional code will be inserted into the 737 kernel to track the life time of various objects and validate 738 the operations on those objects. 739 740config DEBUG_OBJECTS_SELFTEST 741 bool "Debug objects selftest" 742 depends on DEBUG_OBJECTS 743 help 744 This enables the selftest of the object debug code. 745 746config DEBUG_OBJECTS_FREE 747 bool "Debug objects in freed memory" 748 depends on DEBUG_OBJECTS 749 help 750 This enables checks whether a k/v free operation frees an area 751 which contains an object which has not been deactivated 752 properly. This can make kmalloc/kfree-intensive workloads 753 much slower. 754 755config DEBUG_OBJECTS_TIMERS 756 bool "Debug timer objects" 757 depends on DEBUG_OBJECTS 758 help 759 If you say Y here, additional code will be inserted into the 760 timer routines to track the life time of timer objects and 761 validate the timer operations. 762 763config DEBUG_OBJECTS_WORK 764 bool "Debug work objects" 765 depends on DEBUG_OBJECTS 766 help 767 If you say Y here, additional code will be inserted into the 768 work queue routines to track the life time of work objects and 769 validate the work operations. 770 771config DEBUG_OBJECTS_RCU_HEAD 772 bool "Debug RCU callbacks objects" 773 depends on DEBUG_OBJECTS 774 help 775 Enable this to turn on debugging of RCU list heads (call_rcu() usage). 776 777config DEBUG_OBJECTS_PERCPU_COUNTER 778 bool "Debug percpu counter objects" 779 depends on DEBUG_OBJECTS 780 help 781 If you say Y here, additional code will be inserted into the 782 percpu counter routines to track the life time of percpu counter 783 objects and validate the percpu counter operations. 784 785config DEBUG_OBJECTS_ENABLE_DEFAULT 786 int "debug_objects bootup default value (0-1)" 787 range 0 1 788 default "1" 789 depends on DEBUG_OBJECTS 790 help 791 Debug objects boot parameter default value 792 793config SHRINKER_DEBUG 794 bool "Enable shrinker debugging support" 795 depends on DEBUG_FS 796 help 797 Say Y to enable the shrinker debugfs interface which provides 798 visibility into the kernel memory shrinkers subsystem. 799 Disable it to avoid an extra memory footprint. 800 801config DEBUG_STACK_USAGE 802 bool "Stack utilization instrumentation" 803 depends on DEBUG_KERNEL 804 help 805 Enables the display of the minimum amount of free stack which each 806 task has ever had available in the sysrq-T and sysrq-P debug output. 807 Also emits a message to dmesg when a process exits if that process 808 used more stack space than previously exiting processes. 809 810 This option will slow down process creation somewhat. 811 812config SCHED_STACK_END_CHECK 813 bool "Detect stack corruption on calls to schedule()" 814 depends on DEBUG_KERNEL 815 default n 816 help 817 This option checks for a stack overrun on calls to schedule(). 818 If the stack end location is found to be over written always panic as 819 the content of the corrupted region can no longer be trusted. 820 This is to ensure no erroneous behaviour occurs which could result in 821 data corruption or a sporadic crash at a later stage once the region 822 is examined. The runtime overhead introduced is minimal. 823 824config ARCH_HAS_DEBUG_VM_PGTABLE 825 bool 826 help 827 An architecture should select this when it can successfully 828 build and run DEBUG_VM_PGTABLE. 829 830config DEBUG_VFS 831 bool "Debug VFS" 832 depends on DEBUG_KERNEL 833 help 834 Enable this to turn on extended checks in the VFS layer that may impact 835 performance. 836 837 If unsure, say N. 838 839config DEBUG_VM_IRQSOFF 840 def_bool DEBUG_VM && !PREEMPT_RT 841 842config DEBUG_VM 843 bool "Debug VM" 844 depends on DEBUG_KERNEL 845 help 846 Enable this to turn on extended checks in the virtual-memory system 847 that may impact performance. 848 849 If unsure, say N. 850 851config DEBUG_VM_SHOOT_LAZIES 852 bool "Debug MMU_LAZY_TLB_SHOOTDOWN implementation" 853 depends on DEBUG_VM 854 depends on MMU_LAZY_TLB_SHOOTDOWN 855 help 856 Enable additional IPIs that ensure lazy tlb mm references are removed 857 before the mm is freed. 858 859 If unsure, say N. 860 861config DEBUG_VM_MAPLE_TREE 862 bool "Debug VM maple trees" 863 depends on DEBUG_VM 864 select DEBUG_MAPLE_TREE 865 help 866 Enable VM maple tree debugging information and extra validations. 867 868 If unsure, say N. 869 870config DEBUG_VM_RB 871 bool "Debug VM red-black trees" 872 depends on DEBUG_VM 873 help 874 Enable VM red-black tree debugging information and extra validations. 875 876 If unsure, say N. 877 878config DEBUG_VM_PGFLAGS 879 bool "Debug page-flags operations" 880 depends on DEBUG_VM 881 help 882 Enables extra validation on page flags operations. 883 884 If unsure, say N. 885 886config DEBUG_VM_PGTABLE 887 bool "Debug arch page table for semantics compliance" 888 depends on MMU 889 depends on ARCH_HAS_DEBUG_VM_PGTABLE 890 default y if DEBUG_VM 891 help 892 This option provides a debug method which can be used to test 893 architecture page table helper functions on various platforms in 894 verifying if they comply with expected generic MM semantics. This 895 will help architecture code in making sure that any changes or 896 new additions of these helpers still conform to expected 897 semantics of the generic MM. Platforms will have to opt in for 898 this through ARCH_HAS_DEBUG_VM_PGTABLE. 899 900 If unsure, say N. 901 902config ARCH_HAS_DEBUG_VIRTUAL 903 bool 904 905config DEBUG_VIRTUAL 906 bool "Debug VM translations" 907 depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL 908 help 909 Enable some costly sanity checks in virtual to page code. This can 910 catch mistakes with virt_to_page() and friends. 911 912 If unsure, say N. 913 914config DEBUG_NOMMU_REGIONS 915 bool "Debug the global anon/private NOMMU mapping region tree" 916 depends on DEBUG_KERNEL && !MMU 917 help 918 This option causes the global tree of anonymous and private mapping 919 regions to be regularly checked for invalid topology. 920 921config DEBUG_MEMORY_INIT 922 bool "Debug memory initialisation" if EXPERT 923 default !EXPERT 924 help 925 Enable this for additional checks during memory initialisation. 926 The sanity checks verify aspects of the VM such as the memory model 927 and other information provided by the architecture. Verbose 928 information will be printed at KERN_DEBUG loglevel depending 929 on the mminit_loglevel= command-line option. 930 931 If unsure, say Y 932 933config MEMORY_NOTIFIER_ERROR_INJECT 934 tristate "Memory hotplug notifier error injection module" 935 depends on MEMORY_HOTPLUG && NOTIFIER_ERROR_INJECTION 936 help 937 This option provides the ability to inject artificial errors to 938 memory hotplug notifier chain callbacks. It is controlled through 939 debugfs interface under /sys/kernel/debug/notifier-error-inject/memory 940 941 If the notifier call chain should be failed with some events 942 notified, write the error code to "actions/<notifier event>/error". 943 944 Example: Inject memory hotplug offline error (-12 == -ENOMEM) 945 946 # cd /sys/kernel/debug/notifier-error-inject/memory 947 # echo -12 > actions/MEM_GOING_OFFLINE/error 948 # echo offline > /sys/devices/system/memory/memoryXXX/state 949 bash: echo: write error: Cannot allocate memory 950 951 To compile this code as a module, choose M here: the module will 952 be called memory-notifier-error-inject. 953 954 If unsure, say N. 955 956config DEBUG_PER_CPU_MAPS 957 bool "Debug access to per_cpu maps" 958 depends on DEBUG_KERNEL 959 depends on SMP 960 help 961 Say Y to verify that the per_cpu map being accessed has 962 been set up. This adds a fair amount of code to kernel memory 963 and decreases performance. 964 965 Say N if unsure. 966 967config DEBUG_KMAP_LOCAL 968 bool "Debug kmap_local temporary mappings" 969 depends on DEBUG_KERNEL && KMAP_LOCAL 970 help 971 This option enables additional error checking for the kmap_local 972 infrastructure. Disable for production use. 973 974config ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP 975 bool 976 977config DEBUG_KMAP_LOCAL_FORCE_MAP 978 bool "Enforce kmap_local temporary mappings" 979 depends on DEBUG_KERNEL && ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP 980 select KMAP_LOCAL 981 select DEBUG_KMAP_LOCAL 982 help 983 This option enforces temporary mappings through the kmap_local 984 mechanism for non-highmem pages and on non-highmem systems. 985 Disable this for production systems! 986 987config DEBUG_HIGHMEM 988 bool "Highmem debugging" 989 depends on DEBUG_KERNEL && HIGHMEM 990 select DEBUG_KMAP_LOCAL_FORCE_MAP if ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP 991 select DEBUG_KMAP_LOCAL 992 help 993 This option enables additional error checking for high memory 994 systems. Disable for production systems. 995 996config HAVE_DEBUG_STACKOVERFLOW 997 bool 998 999config DEBUG_STACKOVERFLOW 1000 bool "Check for stack overflows" 1001 depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW 1002 help 1003 Say Y here if you want to check for overflows of kernel, IRQ 1004 and exception stacks (if your architecture uses them). This 1005 option will show detailed messages if free stack space drops 1006 below a certain limit. 1007 1008 These kinds of bugs usually occur when call-chains in the 1009 kernel get too deep, especially when interrupts are 1010 involved. 1011 1012 Use this in cases where you see apparently random memory 1013 corruption, especially if it appears in 'struct thread_info' 1014 1015 If in doubt, say "N". 1016 1017config CODE_TAGGING 1018 bool 1019 select KALLSYMS 1020 1021config MEM_ALLOC_PROFILING 1022 bool "Enable memory allocation profiling" 1023 default n 1024 depends on MMU 1025 depends on PROC_FS 1026 depends on !DEBUG_FORCE_WEAK_PER_CPU 1027 select CODE_TAGGING 1028 select PAGE_EXTENSION 1029 select SLAB_OBJ_EXT 1030 help 1031 Track allocation source code and record total allocation size 1032 initiated at that code location. The mechanism can be used to track 1033 memory leaks with a low performance and memory impact. 1034 1035config MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT 1036 bool "Enable memory allocation profiling by default" 1037 default y 1038 depends on MEM_ALLOC_PROFILING 1039 1040config MEM_ALLOC_PROFILING_DEBUG 1041 bool "Memory allocation profiler debugging" 1042 default n 1043 depends on MEM_ALLOC_PROFILING 1044 select MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT 1045 help 1046 Adds warnings with helpful error messages for memory allocation 1047 profiling. 1048 1049source "lib/Kconfig.kasan" 1050source "lib/Kconfig.kfence" 1051source "lib/Kconfig.kmsan" 1052 1053endmenu # "Memory Debugging" 1054 1055config DEBUG_SHIRQ 1056 bool "Debug shared IRQ handlers" 1057 depends on DEBUG_KERNEL 1058 help 1059 Enable this to generate a spurious interrupt just before a shared 1060 interrupt handler is deregistered (generating one when registering 1061 is currently disabled). Drivers need to handle this correctly. Some 1062 don't and need to be caught. 1063 1064menu "Debug Oops, Lockups and Hangs" 1065 1066config PANIC_ON_OOPS 1067 bool "Panic on Oops" 1068 help 1069 Say Y here to enable the kernel to panic when it oopses. This 1070 has the same effect as setting oops=panic on the kernel command 1071 line. 1072 1073 This feature is useful to ensure that the kernel does not do 1074 anything erroneous after an oops which could result in data 1075 corruption or other issues. 1076 1077 Say N if unsure. 1078 1079config PANIC_TIMEOUT 1080 int "panic timeout" 1081 default 0 1082 help 1083 Set the timeout value (in seconds) until a reboot occurs when 1084 the kernel panics. If n = 0, then we wait forever. A timeout 1085 value n > 0 will wait n seconds before rebooting, while a timeout 1086 value n < 0 will reboot immediately. This setting can be overridden 1087 with the kernel command line option panic=, and from userspace via 1088 /proc/sys/kernel/panic. 1089 1090config LOCKUP_DETECTOR 1091 bool 1092 1093config SOFTLOCKUP_DETECTOR 1094 bool "Detect Soft Lockups" 1095 depends on DEBUG_KERNEL && !S390 1096 select LOCKUP_DETECTOR 1097 help 1098 Say Y here to enable the kernel to act as a watchdog to detect 1099 soft lockups. 1100 1101 Softlockups are bugs that cause the kernel to loop in kernel 1102 mode for more than 20 seconds, without giving other tasks a 1103 chance to run. The current stack trace is displayed upon 1104 detection and the system will stay locked up. 1105 1106config SOFTLOCKUP_DETECTOR_INTR_STORM 1107 bool "Detect Interrupt Storm in Soft Lockups" 1108 depends on SOFTLOCKUP_DETECTOR && IRQ_TIME_ACCOUNTING 1109 select GENERIC_IRQ_STAT_SNAPSHOT 1110 default y if NR_CPUS <= 128 1111 help 1112 Say Y here to enable the kernel to detect interrupt storm 1113 during "soft lockups". 1114 1115 "soft lockups" can be caused by a variety of reasons. If one is 1116 caused by an interrupt storm, then the storming interrupts will not 1117 be on the callstack. To detect this case, it is necessary to report 1118 the CPU stats and the interrupt counts during the "soft lockups". 1119 1120config BOOTPARAM_SOFTLOCKUP_PANIC 1121 bool "Panic (Reboot) On Soft Lockups" 1122 depends on SOFTLOCKUP_DETECTOR 1123 help 1124 Say Y here to enable the kernel to panic on "soft lockups", 1125 which are bugs that cause the kernel to loop in kernel 1126 mode for more than 20 seconds (configurable using the watchdog_thresh 1127 sysctl), without giving other tasks a chance to run. 1128 1129 The panic can be used in combination with panic_timeout, 1130 to cause the system to reboot automatically after a 1131 lockup has been detected. This feature is useful for 1132 high-availability systems that have uptime guarantees and 1133 where a lockup must be resolved ASAP. 1134 1135 Say N if unsure. 1136 1137config HAVE_HARDLOCKUP_DETECTOR_BUDDY 1138 bool 1139 depends on SMP 1140 default y 1141 1142# 1143# Global switch whether to build a hardlockup detector at all. It is available 1144# only when the architecture supports at least one implementation. There are 1145# two exceptions. The hardlockup detector is never enabled on: 1146# 1147# s390: it reported many false positives there 1148# 1149# sparc64: has a custom implementation which is not using the common 1150# hardlockup command line options and sysctl interface. 1151# 1152config HARDLOCKUP_DETECTOR 1153 bool "Detect Hard Lockups" 1154 depends on DEBUG_KERNEL && !S390 && !HARDLOCKUP_DETECTOR_SPARC64 1155 depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_BUDDY || HAVE_HARDLOCKUP_DETECTOR_ARCH 1156 imply HARDLOCKUP_DETECTOR_PERF 1157 imply HARDLOCKUP_DETECTOR_BUDDY 1158 imply HARDLOCKUP_DETECTOR_ARCH 1159 select LOCKUP_DETECTOR 1160 1161 help 1162 Say Y here to enable the kernel to act as a watchdog to detect 1163 hard lockups. 1164 1165 Hardlockups are bugs that cause the CPU to loop in kernel mode 1166 for more than 10 seconds, without letting other interrupts have a 1167 chance to run. The current stack trace is displayed upon detection 1168 and the system will stay locked up. 1169 1170# 1171# Note that arch-specific variants are always preferred. 1172# 1173config HARDLOCKUP_DETECTOR_PREFER_BUDDY 1174 bool "Prefer the buddy CPU hardlockup detector" 1175 depends on HARDLOCKUP_DETECTOR 1176 depends on HAVE_HARDLOCKUP_DETECTOR_PERF && HAVE_HARDLOCKUP_DETECTOR_BUDDY 1177 depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH 1178 help 1179 Say Y here to prefer the buddy hardlockup detector over the perf one. 1180 1181 With the buddy detector, each CPU uses its softlockup hrtimer 1182 to check that the next CPU is processing hrtimer interrupts by 1183 verifying that a counter is increasing. 1184 1185 This hardlockup detector is useful on systems that don't have 1186 an arch-specific hardlockup detector or if resources needed 1187 for the hardlockup detector are better used for other things. 1188 1189config HARDLOCKUP_DETECTOR_PERF 1190 bool 1191 depends on HARDLOCKUP_DETECTOR 1192 depends on HAVE_HARDLOCKUP_DETECTOR_PERF && !HARDLOCKUP_DETECTOR_PREFER_BUDDY 1193 depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH 1194 select HARDLOCKUP_DETECTOR_COUNTS_HRTIMER 1195 1196config HARDLOCKUP_DETECTOR_BUDDY 1197 bool 1198 depends on HARDLOCKUP_DETECTOR 1199 depends on HAVE_HARDLOCKUP_DETECTOR_BUDDY 1200 depends on !HAVE_HARDLOCKUP_DETECTOR_PERF || HARDLOCKUP_DETECTOR_PREFER_BUDDY 1201 depends on !HAVE_HARDLOCKUP_DETECTOR_ARCH 1202 select HARDLOCKUP_DETECTOR_COUNTS_HRTIMER 1203 1204config HARDLOCKUP_DETECTOR_ARCH 1205 bool 1206 depends on HARDLOCKUP_DETECTOR 1207 depends on HAVE_HARDLOCKUP_DETECTOR_ARCH 1208 help 1209 The arch-specific implementation of the hardlockup detector will 1210 be used. 1211 1212# 1213# Both the "perf" and "buddy" hardlockup detectors count hrtimer 1214# interrupts. This config enables functions managing this common code. 1215# 1216config HARDLOCKUP_DETECTOR_COUNTS_HRTIMER 1217 bool 1218 select SOFTLOCKUP_DETECTOR 1219 1220# 1221# Enables a timestamp based low pass filter to compensate for perf based 1222# hard lockup detection which runs too fast due to turbo modes. 1223# 1224config HARDLOCKUP_CHECK_TIMESTAMP 1225 bool 1226 1227config BOOTPARAM_HARDLOCKUP_PANIC 1228 bool "Panic (Reboot) On Hard Lockups" 1229 depends on HARDLOCKUP_DETECTOR 1230 help 1231 Say Y here to enable the kernel to panic on "hard lockups", 1232 which are bugs that cause the kernel to loop in kernel 1233 mode with interrupts disabled for more than 10 seconds (configurable 1234 using the watchdog_thresh sysctl). 1235 1236 Say N if unsure. 1237 1238config DETECT_HUNG_TASK 1239 bool "Detect Hung Tasks" 1240 depends on DEBUG_KERNEL 1241 default SOFTLOCKUP_DETECTOR 1242 help 1243 Say Y here to enable the kernel to detect "hung tasks", 1244 which are bugs that cause the task to be stuck in 1245 uninterruptible "D" state indefinitely. 1246 1247 When a hung task is detected, the kernel will print the 1248 current stack trace (which you should report), but the 1249 task will stay in uninterruptible state. If lockdep is 1250 enabled then all held locks will also be reported. This 1251 feature has negligible overhead. 1252 1253config DEFAULT_HUNG_TASK_TIMEOUT 1254 int "Default timeout for hung task detection (in seconds)" 1255 depends on DETECT_HUNG_TASK 1256 default 120 1257 help 1258 This option controls the default timeout (in seconds) used 1259 to determine when a task has become non-responsive and should 1260 be considered hung. 1261 1262 It can be adjusted at runtime via the kernel.hung_task_timeout_secs 1263 sysctl or by writing a value to 1264 /proc/sys/kernel/hung_task_timeout_secs. 1265 1266 A timeout of 0 disables the check. The default is two minutes. 1267 Keeping the default should be fine in most cases. 1268 1269config BOOTPARAM_HUNG_TASK_PANIC 1270 bool "Panic (Reboot) On Hung Tasks" 1271 depends on DETECT_HUNG_TASK 1272 help 1273 Say Y here to enable the kernel to panic on "hung tasks", 1274 which are bugs that cause the kernel to leave a task stuck 1275 in uninterruptible "D" state. 1276 1277 The panic can be used in combination with panic_timeout, 1278 to cause the system to reboot automatically after a 1279 hung task has been detected. This feature is useful for 1280 high-availability systems that have uptime guarantees and 1281 where a hung tasks must be resolved ASAP. 1282 1283 Say N if unsure. 1284 1285config DETECT_HUNG_TASK_BLOCKER 1286 bool "Dump Hung Tasks Blocker" 1287 depends on DETECT_HUNG_TASK 1288 depends on !PREEMPT_RT 1289 default y 1290 help 1291 Say Y here to show the blocker task's stacktrace who acquires 1292 the mutex lock which "hung tasks" are waiting. 1293 This will add overhead a bit but shows suspicious tasks and 1294 call trace if it comes from waiting a mutex. 1295 1296config WQ_WATCHDOG 1297 bool "Detect Workqueue Stalls" 1298 depends on DEBUG_KERNEL 1299 help 1300 Say Y here to enable stall detection on workqueues. If a 1301 worker pool doesn't make forward progress on a pending work 1302 item for over a given amount of time, 30s by default, a 1303 warning message is printed along with dump of workqueue 1304 state. This can be configured through kernel parameter 1305 "workqueue.watchdog_thresh" and its sysfs counterpart. 1306 1307config WQ_CPU_INTENSIVE_REPORT 1308 bool "Report per-cpu work items which hog CPU for too long" 1309 depends on DEBUG_KERNEL 1310 help 1311 Say Y here to enable reporting of concurrency-managed per-cpu work 1312 items that hog CPUs for longer than 1313 workqueue.cpu_intensive_thresh_us. Workqueue automatically 1314 detects and excludes them from concurrency management to prevent 1315 them from stalling other per-cpu work items. Occassional 1316 triggering may not necessarily indicate a problem. Repeated 1317 triggering likely indicates that the work item should be switched 1318 to use an unbound workqueue. 1319 1320config TEST_LOCKUP 1321 tristate "Test module to generate lockups" 1322 depends on m 1323 help 1324 This builds the "test_lockup" module that helps to make sure 1325 that watchdogs and lockup detectors are working properly. 1326 1327 Depending on module parameters it could emulate soft or hard 1328 lockup, "hung task", or locking arbitrary lock for a long time. 1329 Also it could generate series of lockups with cooling-down periods. 1330 1331 If unsure, say N. 1332 1333endmenu # "Debug lockups and hangs" 1334 1335menu "Scheduler Debugging" 1336 1337config SCHED_INFO 1338 bool 1339 default n 1340 1341config SCHEDSTATS 1342 bool "Collect scheduler statistics" 1343 depends on PROC_FS 1344 select SCHED_INFO 1345 help 1346 If you say Y here, additional code will be inserted into the 1347 scheduler and related routines to collect statistics about 1348 scheduler behavior and provide them in /proc/schedstat. These 1349 stats may be useful for both tuning and debugging the scheduler 1350 If you aren't debugging the scheduler or trying to tune a specific 1351 application, you can say N to avoid the very slight overhead 1352 this adds. 1353 1354endmenu 1355 1356config DEBUG_PREEMPT 1357 bool "Debug preemptible kernel" 1358 depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT 1359 help 1360 If you say Y here then the kernel will use a debug variant of the 1361 commonly used smp_processor_id() function and will print warnings 1362 if kernel code uses it in a preemption-unsafe way. Also, the kernel 1363 will detect preemption count underflows. 1364 1365 This option has potential to introduce high runtime overhead, 1366 depending on workload as it triggers debugging routines for each 1367 this_cpu operation. It should only be used for debugging purposes. 1368 1369menu "Lock Debugging (spinlocks, mutexes, etc...)" 1370 1371config LOCK_DEBUGGING_SUPPORT 1372 bool 1373 depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT 1374 default y 1375 1376config PROVE_LOCKING 1377 bool "Lock debugging: prove locking correctness" 1378 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1379 select LOCKDEP 1380 select DEBUG_SPINLOCK 1381 select DEBUG_MUTEXES if !PREEMPT_RT 1382 select DEBUG_RT_MUTEXES if RT_MUTEXES 1383 select DEBUG_RWSEMS if !PREEMPT_RT 1384 select DEBUG_WW_MUTEX_SLOWPATH 1385 select DEBUG_LOCK_ALLOC 1386 select PREEMPT_COUNT if !ARCH_NO_PREEMPT 1387 select TRACE_IRQFLAGS 1388 default n 1389 help 1390 This feature enables the kernel to prove that all locking 1391 that occurs in the kernel runtime is mathematically 1392 correct: that under no circumstance could an arbitrary (and 1393 not yet triggered) combination of observed locking 1394 sequences (on an arbitrary number of CPUs, running an 1395 arbitrary number of tasks and interrupt contexts) cause a 1396 deadlock. 1397 1398 In short, this feature enables the kernel to report locking 1399 related deadlocks before they actually occur. 1400 1401 The proof does not depend on how hard and complex a 1402 deadlock scenario would be to trigger: how many 1403 participant CPUs, tasks and irq-contexts would be needed 1404 for it to trigger. The proof also does not depend on 1405 timing: if a race and a resulting deadlock is possible 1406 theoretically (no matter how unlikely the race scenario 1407 is), it will be proven so and will immediately be 1408 reported by the kernel (once the event is observed that 1409 makes the deadlock theoretically possible). 1410 1411 If a deadlock is impossible (i.e. the locking rules, as 1412 observed by the kernel, are mathematically correct), the 1413 kernel reports nothing. 1414 1415 NOTE: this feature can also be enabled for rwlocks, mutexes 1416 and rwsems - in which case all dependencies between these 1417 different locking variants are observed and mapped too, and 1418 the proof of observed correctness is also maintained for an 1419 arbitrary combination of these separate locking variants. 1420 1421 For more details, see Documentation/locking/lockdep-design.rst. 1422 1423config PROVE_RAW_LOCK_NESTING 1424 bool "Enable raw_spinlock - spinlock nesting checks" if !ARCH_SUPPORTS_RT 1425 depends on PROVE_LOCKING 1426 default y if ARCH_SUPPORTS_RT 1427 help 1428 Enable the raw_spinlock vs. spinlock nesting checks which ensure 1429 that the lock nesting rules for PREEMPT_RT enabled kernels are 1430 not violated. 1431 1432config LOCK_STAT 1433 bool "Lock usage statistics" 1434 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1435 select LOCKDEP 1436 select DEBUG_SPINLOCK 1437 select DEBUG_MUTEXES if !PREEMPT_RT 1438 select DEBUG_RT_MUTEXES if RT_MUTEXES 1439 select DEBUG_LOCK_ALLOC 1440 default n 1441 help 1442 This feature enables tracking lock contention points 1443 1444 For more details, see Documentation/locking/lockstat.rst 1445 1446 This also enables lock events required by "perf lock", 1447 subcommand of perf. 1448 If you want to use "perf lock", you also need to turn on 1449 CONFIG_EVENT_TRACING. 1450 1451 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events. 1452 (CONFIG_LOCKDEP defines "acquire" and "release" events.) 1453 1454config DEBUG_RT_MUTEXES 1455 bool "RT Mutex debugging, deadlock detection" 1456 depends on DEBUG_KERNEL && RT_MUTEXES 1457 help 1458 This allows rt mutex semantics violations and rt mutex related 1459 deadlocks (lockups) to be detected and reported automatically. 1460 1461config DEBUG_SPINLOCK 1462 bool "Spinlock and rw-lock debugging: basic checks" 1463 depends on DEBUG_KERNEL 1464 select UNINLINE_SPIN_UNLOCK 1465 help 1466 Say Y here and build SMP to catch missing spinlock initialization 1467 and certain other kinds of spinlock errors commonly made. This is 1468 best used in conjunction with the NMI watchdog so that spinlock 1469 deadlocks are also debuggable. 1470 1471config DEBUG_MUTEXES 1472 bool "Mutex debugging: basic checks" 1473 depends on DEBUG_KERNEL && !PREEMPT_RT 1474 help 1475 This feature allows mutex semantics violations to be detected and 1476 reported. 1477 1478config DEBUG_WW_MUTEX_SLOWPATH 1479 bool "Wait/wound mutex debugging: Slowpath testing" 1480 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1481 select DEBUG_LOCK_ALLOC 1482 select DEBUG_SPINLOCK 1483 select DEBUG_MUTEXES if !PREEMPT_RT 1484 select DEBUG_RT_MUTEXES if PREEMPT_RT 1485 help 1486 This feature enables slowpath testing for w/w mutex users by 1487 injecting additional -EDEADLK wound/backoff cases. Together with 1488 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this 1489 will test all possible w/w mutex interface abuse with the 1490 exception of simply not acquiring all the required locks. 1491 Note that this feature can introduce significant overhead, so 1492 it really should not be enabled in a production or distro kernel, 1493 even a debug kernel. If you are a driver writer, enable it. If 1494 you are a distro, do not. 1495 1496config DEBUG_RWSEMS 1497 bool "RW Semaphore debugging: basic checks" 1498 depends on DEBUG_KERNEL && !PREEMPT_RT 1499 help 1500 This debugging feature allows mismatched rw semaphore locks 1501 and unlocks to be detected and reported. 1502 1503config DEBUG_LOCK_ALLOC 1504 bool "Lock debugging: detect incorrect freeing of live locks" 1505 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1506 select DEBUG_SPINLOCK 1507 select DEBUG_MUTEXES if !PREEMPT_RT 1508 select DEBUG_RT_MUTEXES if RT_MUTEXES 1509 select LOCKDEP 1510 help 1511 This feature will check whether any held lock (spinlock, rwlock, 1512 mutex or rwsem) is incorrectly freed by the kernel, via any of the 1513 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(), 1514 vfree(), etc.), whether a live lock is incorrectly reinitialized via 1515 spin_lock_init()/mutex_init()/etc., or whether there is any lock 1516 held during task exit. 1517 1518config LOCKDEP 1519 bool 1520 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1521 select STACKTRACE 1522 select KALLSYMS 1523 select KALLSYMS_ALL 1524 1525config LOCKDEP_SMALL 1526 bool 1527 1528config LOCKDEP_BITS 1529 int "Size for MAX_LOCKDEP_ENTRIES (as Nth power of 2)" 1530 depends on LOCKDEP && !LOCKDEP_SMALL 1531 range 10 24 1532 default 15 1533 help 1534 Try increasing this value if you hit "BUG: MAX_LOCKDEP_ENTRIES too low!" message. 1535 1536config LOCKDEP_CHAINS_BITS 1537 int "Size for MAX_LOCKDEP_CHAINS (as Nth power of 2)" 1538 depends on LOCKDEP && !LOCKDEP_SMALL 1539 range 10 21 1540 default 16 1541 help 1542 Try increasing this value if you hit "BUG: MAX_LOCKDEP_CHAINS too low!" message. 1543 1544config LOCKDEP_STACK_TRACE_BITS 1545 int "Size for MAX_STACK_TRACE_ENTRIES (as Nth power of 2)" 1546 depends on LOCKDEP && !LOCKDEP_SMALL 1547 range 10 26 1548 default 19 1549 help 1550 Try increasing this value if you hit "BUG: MAX_STACK_TRACE_ENTRIES too low!" message. 1551 1552config LOCKDEP_STACK_TRACE_HASH_BITS 1553 int "Size for STACK_TRACE_HASH_SIZE (as Nth power of 2)" 1554 depends on LOCKDEP && !LOCKDEP_SMALL 1555 range 10 26 1556 default 14 1557 help 1558 Try increasing this value if you need large STACK_TRACE_HASH_SIZE. 1559 1560config LOCKDEP_CIRCULAR_QUEUE_BITS 1561 int "Size for elements in circular_queue struct (as Nth power of 2)" 1562 depends on LOCKDEP 1563 range 10 26 1564 default 12 1565 help 1566 Try increasing this value if you hit "lockdep bfs error:-1" warning due to __cq_enqueue() failure. 1567 1568config DEBUG_LOCKDEP 1569 bool "Lock dependency engine debugging" 1570 depends on DEBUG_KERNEL && LOCKDEP 1571 select DEBUG_IRQFLAGS 1572 help 1573 If you say Y here, the lock dependency engine will do 1574 additional runtime checks to debug itself, at the price 1575 of more runtime overhead. 1576 1577config DEBUG_ATOMIC_SLEEP 1578 bool "Sleep inside atomic section checking" 1579 select PREEMPT_COUNT 1580 depends on DEBUG_KERNEL 1581 depends on !ARCH_NO_PREEMPT 1582 help 1583 If you say Y here, various routines which may sleep will become very 1584 noisy if they are called inside atomic sections: when a spinlock is 1585 held, inside an rcu read side critical section, inside preempt disabled 1586 sections, inside an interrupt, etc... 1587 1588config DEBUG_LOCKING_API_SELFTESTS 1589 bool "Locking API boot-time self-tests" 1590 depends on DEBUG_KERNEL 1591 help 1592 Say Y here if you want the kernel to run a short self-test during 1593 bootup. The self-test checks whether common types of locking bugs 1594 are detected by debugging mechanisms or not. (if you disable 1595 lock debugging then those bugs won't be detected of course.) 1596 The following locking APIs are covered: spinlocks, rwlocks, 1597 mutexes and rwsems. 1598 1599config LOCK_TORTURE_TEST 1600 tristate "torture tests for locking" 1601 depends on DEBUG_KERNEL 1602 select TORTURE_TEST 1603 help 1604 This option provides a kernel module that runs torture tests 1605 on kernel locking primitives. The kernel module may be built 1606 after the fact on the running kernel to be tested, if desired. 1607 1608 Say Y here if you want kernel locking-primitive torture tests 1609 to be built into the kernel. 1610 Say M if you want these torture tests to build as a module. 1611 Say N if you are unsure. 1612 1613config WW_MUTEX_SELFTEST 1614 tristate "Wait/wound mutex selftests" 1615 help 1616 This option provides a kernel module that runs tests on the 1617 on the struct ww_mutex locking API. 1618 1619 It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction 1620 with this test harness. 1621 1622 Say M if you want these self tests to build as a module. 1623 Say N if you are unsure. 1624 1625config SCF_TORTURE_TEST 1626 tristate "torture tests for smp_call_function*()" 1627 depends on DEBUG_KERNEL 1628 select TORTURE_TEST 1629 help 1630 This option provides a kernel module that runs torture tests 1631 on the smp_call_function() family of primitives. The kernel 1632 module may be built after the fact on the running kernel to 1633 be tested, if desired. 1634 1635config CSD_LOCK_WAIT_DEBUG 1636 bool "Debugging for csd_lock_wait(), called from smp_call_function*()" 1637 depends on DEBUG_KERNEL 1638 depends on SMP 1639 depends on 64BIT 1640 default n 1641 help 1642 This option enables debug prints when CPUs are slow to respond 1643 to the smp_call_function*() IPI wrappers. These debug prints 1644 include the IPI handler function currently executing (if any) 1645 and relevant stack traces. 1646 1647config CSD_LOCK_WAIT_DEBUG_DEFAULT 1648 bool "Default csd_lock_wait() debugging on at boot time" 1649 depends on CSD_LOCK_WAIT_DEBUG 1650 depends on 64BIT 1651 default n 1652 help 1653 This option causes the csdlock_debug= kernel boot parameter to 1654 default to 1 (basic debugging) instead of 0 (no debugging). 1655 1656endmenu # lock debugging 1657 1658config TRACE_IRQFLAGS 1659 depends on TRACE_IRQFLAGS_SUPPORT 1660 bool 1661 help 1662 Enables hooks to interrupt enabling and disabling for 1663 either tracing or lock debugging. 1664 1665config TRACE_IRQFLAGS_NMI 1666 def_bool y 1667 depends on TRACE_IRQFLAGS 1668 depends on TRACE_IRQFLAGS_NMI_SUPPORT 1669 1670config NMI_CHECK_CPU 1671 bool "Debugging for CPUs failing to respond to backtrace requests" 1672 depends on DEBUG_KERNEL 1673 depends on X86 1674 default n 1675 help 1676 Enables debug prints when a CPU fails to respond to a given 1677 backtrace NMI. These prints provide some reasons why a CPU 1678 might legitimately be failing to respond, for example, if it 1679 is offline of if ignore_nmis is set. 1680 1681config DEBUG_IRQFLAGS 1682 bool "Debug IRQ flag manipulation" 1683 help 1684 Enables checks for potentially unsafe enabling or disabling of 1685 interrupts, such as calling raw_local_irq_restore() when interrupts 1686 are enabled. 1687 1688config STACKTRACE 1689 bool "Stack backtrace support" 1690 depends on STACKTRACE_SUPPORT 1691 help 1692 This option causes the kernel to create a /proc/pid/stack for 1693 every process, showing its current stack trace. 1694 It is also used by various kernel debugging features that require 1695 stack trace generation. 1696 1697config WARN_ALL_UNSEEDED_RANDOM 1698 bool "Warn for all uses of unseeded randomness" 1699 default n 1700 help 1701 Some parts of the kernel contain bugs relating to their use of 1702 cryptographically secure random numbers before it's actually possible 1703 to generate those numbers securely. This setting ensures that these 1704 flaws don't go unnoticed, by enabling a message, should this ever 1705 occur. This will allow people with obscure setups to know when things 1706 are going wrong, so that they might contact developers about fixing 1707 it. 1708 1709 Unfortunately, on some models of some architectures getting 1710 a fully seeded CRNG is extremely difficult, and so this can 1711 result in dmesg getting spammed for a surprisingly long 1712 time. This is really bad from a security perspective, and 1713 so architecture maintainers really need to do what they can 1714 to get the CRNG seeded sooner after the system is booted. 1715 However, since users cannot do anything actionable to 1716 address this, by default this option is disabled. 1717 1718 Say Y here if you want to receive warnings for all uses of 1719 unseeded randomness. This will be of use primarily for 1720 those developers interested in improving the security of 1721 Linux kernels running on their architecture (or 1722 subarchitecture). 1723 1724config DEBUG_KOBJECT 1725 bool "kobject debugging" 1726 depends on DEBUG_KERNEL 1727 help 1728 If you say Y here, some extra kobject debugging messages will be sent 1729 to the syslog. 1730 1731config DEBUG_KOBJECT_RELEASE 1732 bool "kobject release debugging" 1733 depends on DEBUG_OBJECTS_TIMERS 1734 help 1735 kobjects are reference counted objects. This means that their 1736 last reference count put is not predictable, and the kobject can 1737 live on past the point at which a driver decides to drop its 1738 initial reference to the kobject gained on allocation. An 1739 example of this would be a struct device which has just been 1740 unregistered. 1741 1742 However, some buggy drivers assume that after such an operation, 1743 the memory backing the kobject can be immediately freed. This 1744 goes completely against the principles of a refcounted object. 1745 1746 If you say Y here, the kernel will delay the release of kobjects 1747 on the last reference count to improve the visibility of this 1748 kind of kobject release bug. 1749 1750config HAVE_DEBUG_BUGVERBOSE 1751 bool 1752 1753menu "Debug kernel data structures" 1754 1755config DEBUG_LIST 1756 bool "Debug linked list manipulation" 1757 depends on DEBUG_KERNEL 1758 select LIST_HARDENED 1759 help 1760 Enable this to turn on extended checks in the linked-list walking 1761 routines. 1762 1763 This option trades better quality error reports for performance, and 1764 is more suitable for kernel debugging. If you care about performance, 1765 you should only enable CONFIG_LIST_HARDENED instead. 1766 1767 If unsure, say N. 1768 1769config DEBUG_PLIST 1770 bool "Debug priority linked list manipulation" 1771 depends on DEBUG_KERNEL 1772 help 1773 Enable this to turn on extended checks in the priority-ordered 1774 linked-list (plist) walking routines. This checks the entire 1775 list multiple times during each manipulation. 1776 1777 If unsure, say N. 1778 1779config DEBUG_SG 1780 bool "Debug SG table operations" 1781 depends on DEBUG_KERNEL 1782 help 1783 Enable this to turn on checks on scatter-gather tables. This can 1784 help find problems with drivers that do not properly initialize 1785 their sg tables. 1786 1787 If unsure, say N. 1788 1789config DEBUG_NOTIFIERS 1790 bool "Debug notifier call chains" 1791 depends on DEBUG_KERNEL 1792 help 1793 Enable this to turn on sanity checking for notifier call chains. 1794 This is most useful for kernel developers to make sure that 1795 modules properly unregister themselves from notifier chains. 1796 This is a relatively cheap check but if you care about maximum 1797 performance, say N. 1798 1799config DEBUG_CLOSURES 1800 bool "Debug closures (bcache async widgits)" 1801 depends on CLOSURES 1802 select DEBUG_FS 1803 help 1804 Keeps all active closures in a linked list and provides a debugfs 1805 interface to list them, which makes it possible to see asynchronous 1806 operations that get stuck. 1807 1808config DEBUG_MAPLE_TREE 1809 bool "Debug maple trees" 1810 depends on DEBUG_KERNEL 1811 help 1812 Enable maple tree debugging information and extra validations. 1813 1814 If unsure, say N. 1815 1816endmenu 1817 1818source "kernel/rcu/Kconfig.debug" 1819 1820config DEBUG_WQ_FORCE_RR_CPU 1821 bool "Force round-robin CPU selection for unbound work items" 1822 depends on DEBUG_KERNEL 1823 default n 1824 help 1825 Workqueue used to implicitly guarantee that work items queued 1826 without explicit CPU specified are put on the local CPU. This 1827 guarantee is no longer true and while local CPU is still 1828 preferred work items may be put on foreign CPUs. Kernel 1829 parameter "workqueue.debug_force_rr_cpu" is added to force 1830 round-robin CPU selection to flush out usages which depend on the 1831 now broken guarantee. This config option enables the debug 1832 feature by default. When enabled, memory and cache locality will 1833 be impacted. 1834 1835config CPU_HOTPLUG_STATE_CONTROL 1836 bool "Enable CPU hotplug state control" 1837 depends on DEBUG_KERNEL 1838 depends on HOTPLUG_CPU 1839 default n 1840 help 1841 Allows to write steps between "offline" and "online" to the CPUs 1842 sysfs target file so states can be stepped granular. This is a debug 1843 option for now as the hotplug machinery cannot be stopped and 1844 restarted at arbitrary points yet. 1845 1846 Say N if your are unsure. 1847 1848config LATENCYTOP 1849 bool "Latency measuring infrastructure" 1850 depends on DEBUG_KERNEL 1851 depends on STACKTRACE_SUPPORT 1852 depends on PROC_FS 1853 depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86 1854 select KALLSYMS 1855 select KALLSYMS_ALL 1856 select STACKTRACE 1857 select SCHEDSTATS 1858 help 1859 Enable this option if you want to use the LatencyTOP tool 1860 to find out which userspace is blocking on what kernel operations. 1861 1862config DEBUG_CGROUP_REF 1863 bool "Disable inlining of cgroup css reference count functions" 1864 depends on DEBUG_KERNEL 1865 depends on CGROUPS 1866 depends on KPROBES 1867 default n 1868 help 1869 Force cgroup css reference count functions to not be inlined so 1870 that they can be kprobed for debugging. 1871 1872source "kernel/trace/Kconfig" 1873 1874config PROVIDE_OHCI1394_DMA_INIT 1875 bool "Remote debugging over FireWire early on boot" 1876 depends on PCI && X86 1877 help 1878 If you want to debug problems which hang or crash the kernel early 1879 on boot and the crashing machine has a FireWire port, you can use 1880 this feature to remotely access the memory of the crashed machine 1881 over FireWire. This employs remote DMA as part of the OHCI1394 1882 specification which is now the standard for FireWire controllers. 1883 1884 With remote DMA, you can monitor the printk buffer remotely using 1885 firescope and access all memory below 4GB using fireproxy from gdb. 1886 Even controlling a kernel debugger is possible using remote DMA. 1887 1888 Usage: 1889 1890 If ohci1394_dma=early is used as boot parameter, it will initialize 1891 all OHCI1394 controllers which are found in the PCI config space. 1892 1893 As all changes to the FireWire bus such as enabling and disabling 1894 devices cause a bus reset and thereby disable remote DMA for all 1895 devices, be sure to have the cable plugged and FireWire enabled on 1896 the debugging host before booting the debug target for debugging. 1897 1898 This code (~1k) is freed after boot. By then, the firewire stack 1899 in charge of the OHCI-1394 controllers should be used instead. 1900 1901 See Documentation/core-api/debugging-via-ohci1394.rst for more information. 1902 1903source "samples/Kconfig" 1904 1905config ARCH_HAS_DEVMEM_IS_ALLOWED 1906 bool 1907 1908config STRICT_DEVMEM 1909 bool "Filter access to /dev/mem" 1910 depends on MMU && DEVMEM 1911 depends on ARCH_HAS_DEVMEM_IS_ALLOWED || GENERIC_LIB_DEVMEM_IS_ALLOWED 1912 default y if PPC || X86 || ARM64 || S390 1913 help 1914 If this option is disabled, you allow userspace (root) access to all 1915 of memory, including kernel and userspace memory. Accidental 1916 access to this is obviously disastrous, but specific access can 1917 be used by people debugging the kernel. Note that with PAT support 1918 enabled, even in this case there are restrictions on /dev/mem 1919 use due to the cache aliasing requirements. 1920 1921 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem 1922 file only allows userspace access to PCI space and the BIOS code and 1923 data regions. This is sufficient for dosemu and X and all common 1924 users of /dev/mem. 1925 1926 If in doubt, say Y. 1927 1928config IO_STRICT_DEVMEM 1929 bool "Filter I/O access to /dev/mem" 1930 depends on STRICT_DEVMEM 1931 help 1932 If this option is disabled, you allow userspace (root) access to all 1933 io-memory regardless of whether a driver is actively using that 1934 range. Accidental access to this is obviously disastrous, but 1935 specific access can be used by people debugging kernel drivers. 1936 1937 If this option is switched on, the /dev/mem file only allows 1938 userspace access to *idle* io-memory ranges (see /proc/iomem) This 1939 may break traditional users of /dev/mem (dosemu, legacy X, etc...) 1940 if the driver using a given range cannot be disabled. 1941 1942 If in doubt, say Y. 1943 1944menu "$(SRCARCH) Debugging" 1945 1946source "arch/$(SRCARCH)/Kconfig.debug" 1947 1948endmenu 1949 1950menu "Kernel Testing and Coverage" 1951 1952source "lib/kunit/Kconfig" 1953 1954config NOTIFIER_ERROR_INJECTION 1955 tristate "Notifier error injection" 1956 depends on DEBUG_KERNEL 1957 select DEBUG_FS 1958 help 1959 This option provides the ability to inject artificial errors to 1960 specified notifier chain callbacks. It is useful to test the error 1961 handling of notifier call chain failures. 1962 1963 Say N if unsure. 1964 1965config PM_NOTIFIER_ERROR_INJECT 1966 tristate "PM notifier error injection module" 1967 depends on PM && NOTIFIER_ERROR_INJECTION 1968 default m if PM_DEBUG 1969 help 1970 This option provides the ability to inject artificial errors to 1971 PM notifier chain callbacks. It is controlled through debugfs 1972 interface /sys/kernel/debug/notifier-error-inject/pm 1973 1974 If the notifier call chain should be failed with some events 1975 notified, write the error code to "actions/<notifier event>/error". 1976 1977 Example: Inject PM suspend error (-12 = -ENOMEM) 1978 1979 # cd /sys/kernel/debug/notifier-error-inject/pm/ 1980 # echo -12 > actions/PM_SUSPEND_PREPARE/error 1981 # echo mem > /sys/power/state 1982 bash: echo: write error: Cannot allocate memory 1983 1984 To compile this code as a module, choose M here: the module will 1985 be called pm-notifier-error-inject. 1986 1987 If unsure, say N. 1988 1989config OF_RECONFIG_NOTIFIER_ERROR_INJECT 1990 tristate "OF reconfig notifier error injection module" 1991 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION 1992 help 1993 This option provides the ability to inject artificial errors to 1994 OF reconfig notifier chain callbacks. It is controlled 1995 through debugfs interface under 1996 /sys/kernel/debug/notifier-error-inject/OF-reconfig/ 1997 1998 If the notifier call chain should be failed with some events 1999 notified, write the error code to "actions/<notifier event>/error". 2000 2001 To compile this code as a module, choose M here: the module will 2002 be called of-reconfig-notifier-error-inject. 2003 2004 If unsure, say N. 2005 2006config NETDEV_NOTIFIER_ERROR_INJECT 2007 tristate "Netdev notifier error injection module" 2008 depends on NET && NOTIFIER_ERROR_INJECTION 2009 help 2010 This option provides the ability to inject artificial errors to 2011 netdevice notifier chain callbacks. It is controlled through debugfs 2012 interface /sys/kernel/debug/notifier-error-inject/netdev 2013 2014 If the notifier call chain should be failed with some events 2015 notified, write the error code to "actions/<notifier event>/error". 2016 2017 Example: Inject netdevice mtu change error (-22 = -EINVAL) 2018 2019 # cd /sys/kernel/debug/notifier-error-inject/netdev 2020 # echo -22 > actions/NETDEV_CHANGEMTU/error 2021 # ip link set eth0 mtu 1024 2022 RTNETLINK answers: Invalid argument 2023 2024 To compile this code as a module, choose M here: the module will 2025 be called netdev-notifier-error-inject. 2026 2027 If unsure, say N. 2028 2029config FUNCTION_ERROR_INJECTION 2030 bool "Fault-injections of functions" 2031 depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES 2032 help 2033 Add fault injections into various functions that are annotated with 2034 ALLOW_ERROR_INJECTION() in the kernel. BPF may also modify the return 2035 value of these functions. This is useful to test error paths of code. 2036 2037 If unsure, say N 2038 2039config FAULT_INJECTION 2040 bool "Fault-injection framework" 2041 depends on DEBUG_KERNEL 2042 help 2043 Provide fault-injection framework. 2044 For more details, see Documentation/fault-injection/. 2045 2046config FAILSLAB 2047 bool "Fault-injection capability for kmalloc" 2048 depends on FAULT_INJECTION 2049 help 2050 Provide fault-injection capability for kmalloc. 2051 2052config FAIL_PAGE_ALLOC 2053 bool "Fault-injection capability for alloc_pages()" 2054 depends on FAULT_INJECTION 2055 help 2056 Provide fault-injection capability for alloc_pages(). 2057 2058config FAULT_INJECTION_USERCOPY 2059 bool "Fault injection capability for usercopy functions" 2060 depends on FAULT_INJECTION 2061 help 2062 Provides fault-injection capability to inject failures 2063 in usercopy functions (copy_from_user(), get_user(), ...). 2064 2065config FAIL_MAKE_REQUEST 2066 bool "Fault-injection capability for disk IO" 2067 depends on FAULT_INJECTION && BLOCK 2068 help 2069 Provide fault-injection capability for disk IO. 2070 2071config FAIL_IO_TIMEOUT 2072 bool "Fault-injection capability for faking disk interrupts" 2073 depends on FAULT_INJECTION && BLOCK 2074 help 2075 Provide fault-injection capability on end IO handling. This 2076 will make the block layer "forget" an interrupt as configured, 2077 thus exercising the error handling. 2078 2079 Only works with drivers that use the generic timeout handling, 2080 for others it won't do anything. 2081 2082config FAIL_FUTEX 2083 bool "Fault-injection capability for futexes" 2084 select DEBUG_FS 2085 depends on FAULT_INJECTION && FUTEX 2086 help 2087 Provide fault-injection capability for futexes. 2088 2089config FAULT_INJECTION_DEBUG_FS 2090 bool "Debugfs entries for fault-injection capabilities" 2091 depends on FAULT_INJECTION && SYSFS && DEBUG_FS 2092 help 2093 Enable configuration of fault-injection capabilities via debugfs. 2094 2095config FAIL_FUNCTION 2096 bool "Fault-injection capability for functions" 2097 depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION 2098 help 2099 Provide function-based fault-injection capability. 2100 This will allow you to override a specific function with a return 2101 with given return value. As a result, function caller will see 2102 an error value and have to handle it. This is useful to test the 2103 error handling in various subsystems. 2104 2105config FAIL_MMC_REQUEST 2106 bool "Fault-injection capability for MMC IO" 2107 depends on FAULT_INJECTION_DEBUG_FS && MMC 2108 help 2109 Provide fault-injection capability for MMC IO. 2110 This will make the mmc core return data errors. This is 2111 useful to test the error handling in the mmc block device 2112 and to test how the mmc host driver handles retries from 2113 the block device. 2114 2115config FAIL_SUNRPC 2116 bool "Fault-injection capability for SunRPC" 2117 depends on FAULT_INJECTION_DEBUG_FS && SUNRPC_DEBUG 2118 help 2119 Provide fault-injection capability for SunRPC and 2120 its consumers. 2121 2122config FAIL_SKB_REALLOC 2123 bool "Fault-injection capability forcing skb to reallocate" 2124 depends on FAULT_INJECTION_DEBUG_FS 2125 help 2126 Provide fault-injection capability that forces the skb to be 2127 reallocated, catching possible invalid pointers to the skb. 2128 2129 For more information, check 2130 Documentation/fault-injection/fault-injection.rst 2131 2132config FAULT_INJECTION_CONFIGFS 2133 bool "Configfs interface for fault-injection capabilities" 2134 depends on FAULT_INJECTION 2135 select CONFIGFS_FS 2136 help 2137 This option allows configfs-based drivers to dynamically configure 2138 fault-injection via configfs. Each parameter for driver-specific 2139 fault-injection can be made visible as a configfs attribute in a 2140 configfs group. 2141 2142 2143config FAULT_INJECTION_STACKTRACE_FILTER 2144 bool "stacktrace filter for fault-injection capabilities" 2145 depends on FAULT_INJECTION 2146 depends on (FAULT_INJECTION_DEBUG_FS || FAULT_INJECTION_CONFIGFS) && STACKTRACE_SUPPORT 2147 select STACKTRACE 2148 depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86 2149 help 2150 Provide stacktrace filter for fault-injection capabilities 2151 2152config ARCH_HAS_KCOV 2153 bool 2154 help 2155 An architecture should select this when it can successfully 2156 build and run with CONFIG_KCOV. This typically requires 2157 disabling instrumentation for some early boot code. 2158 2159config KCOV 2160 bool "Code coverage for fuzzing" 2161 depends on ARCH_HAS_KCOV 2162 depends on !ARCH_WANTS_NO_INSTR || HAVE_NOINSTR_HACK || \ 2163 GCC_VERSION >= 120000 || CC_IS_CLANG 2164 select DEBUG_FS 2165 select OBJTOOL if HAVE_NOINSTR_HACK 2166 help 2167 KCOV exposes kernel code coverage information in a form suitable 2168 for coverage-guided fuzzing (randomized testing). 2169 2170 For more details, see Documentation/dev-tools/kcov.rst. 2171 2172config KCOV_ENABLE_COMPARISONS 2173 bool "Enable comparison operands collection by KCOV" 2174 depends on KCOV 2175 depends on $(cc-option,-fsanitize-coverage=trace-cmp) 2176 help 2177 KCOV also exposes operands of every comparison in the instrumented 2178 code along with operand sizes and PCs of the comparison instructions. 2179 These operands can be used by fuzzing engines to improve the quality 2180 of fuzzing coverage. 2181 2182config KCOV_INSTRUMENT_ALL 2183 bool "Instrument all code by default" 2184 depends on KCOV 2185 default y 2186 help 2187 If you are doing generic system call fuzzing (like e.g. syzkaller), 2188 then you will want to instrument the whole kernel and you should 2189 say y here. If you are doing more targeted fuzzing (like e.g. 2190 filesystem fuzzing with AFL) then you will want to enable coverage 2191 for more specific subsets of files, and should say n here. 2192 2193config KCOV_IRQ_AREA_SIZE 2194 hex "Size of interrupt coverage collection area in words" 2195 depends on KCOV 2196 default 0x40000 2197 help 2198 KCOV uses preallocated per-cpu areas to collect coverage from 2199 soft interrupts. This specifies the size of those areas in the 2200 number of unsigned long words. 2201 2202config KCOV_SELFTEST 2203 bool "Perform short selftests on boot" 2204 depends on KCOV 2205 help 2206 Run short KCOV coverage collection selftests on boot. 2207 On test failure, causes the kernel to panic. Recommended to be 2208 enabled, ensuring critical functionality works as intended. 2209 2210menuconfig RUNTIME_TESTING_MENU 2211 bool "Runtime Testing" 2212 default y 2213 2214if RUNTIME_TESTING_MENU 2215 2216config TEST_DHRY 2217 tristate "Dhrystone benchmark test" 2218 help 2219 Enable this to include the Dhrystone 2.1 benchmark. This test 2220 calculates the number of Dhrystones per second, and the number of 2221 DMIPS (Dhrystone MIPS) obtained when the Dhrystone score is divided 2222 by 1757 (the number of Dhrystones per second obtained on the VAX 2223 11/780, nominally a 1 MIPS machine). 2224 2225 To run the benchmark, it needs to be enabled explicitly, either from 2226 the kernel command line (when built-in), or from userspace (when 2227 built-in or modular). 2228 2229 Run once during kernel boot: 2230 2231 test_dhry.run 2232 2233 Set number of iterations from kernel command line: 2234 2235 test_dhry.iterations=<n> 2236 2237 Set number of iterations from userspace: 2238 2239 echo <n> > /sys/module/test_dhry/parameters/iterations 2240 2241 Trigger manual run from userspace: 2242 2243 echo y > /sys/module/test_dhry/parameters/run 2244 2245 If the number of iterations is <= 0, the test will devise a suitable 2246 number of iterations (test runs for at least 2s) automatically. 2247 This process takes ca. 4s. 2248 2249 If unsure, say N. 2250 2251config LKDTM 2252 tristate "Linux Kernel Dump Test Tool Module" 2253 depends on DEBUG_FS 2254 help 2255 This module enables testing of the different dumping mechanisms by 2256 inducing system failures at predefined crash points. 2257 If you don't need it: say N 2258 Choose M here to compile this code as a module. The module will be 2259 called lkdtm. 2260 2261 Documentation on how to use the module can be found in 2262 Documentation/fault-injection/provoke-crashes.rst 2263 2264config CPUMASK_KUNIT_TEST 2265 tristate "KUnit test for cpumask" if !KUNIT_ALL_TESTS 2266 depends on KUNIT 2267 default KUNIT_ALL_TESTS 2268 help 2269 Enable to turn on cpumask tests, running at boot or module load time. 2270 2271 For more information on KUnit and unit tests in general, please refer 2272 to the KUnit documentation in Documentation/dev-tools/kunit/. 2273 2274 If unsure, say N. 2275 2276config TEST_LIST_SORT 2277 tristate "Linked list sorting test" if !KUNIT_ALL_TESTS 2278 depends on KUNIT 2279 default KUNIT_ALL_TESTS 2280 help 2281 Enable this to turn on 'list_sort()' function test. This test is 2282 executed only once during system boot (so affects only boot time), 2283 or at module load time. 2284 2285 If unsure, say N. 2286 2287config TEST_MIN_HEAP 2288 tristate "Min heap test" 2289 depends on DEBUG_KERNEL || m 2290 help 2291 Enable this to turn on min heap function tests. This test is 2292 executed only once during system boot (so affects only boot time), 2293 or at module load time. 2294 2295 If unsure, say N. 2296 2297config TEST_SORT 2298 tristate "Array-based sort test" if !KUNIT_ALL_TESTS 2299 depends on KUNIT 2300 default KUNIT_ALL_TESTS 2301 help 2302 This option enables the self-test function of 'sort()' at boot, 2303 or at module load time. 2304 2305 If unsure, say N. 2306 2307config TEST_DIV64 2308 tristate "64bit/32bit division and modulo test" 2309 depends on DEBUG_KERNEL || m 2310 help 2311 Enable this to turn on 'do_div()' function test. This test is 2312 executed only once during system boot (so affects only boot time), 2313 or at module load time. 2314 2315 If unsure, say N. 2316 2317config TEST_MULDIV64 2318 tristate "mul_u64_u64_div_u64() test" 2319 depends on DEBUG_KERNEL || m 2320 help 2321 Enable this to turn on 'mul_u64_u64_div_u64()' function test. 2322 This test is executed only once during system boot (so affects 2323 only boot time), or at module load time. 2324 2325 If unsure, say N. 2326 2327config TEST_IOV_ITER 2328 tristate "Test iov_iter operation" if !KUNIT_ALL_TESTS 2329 depends on KUNIT 2330 depends on MMU 2331 default KUNIT_ALL_TESTS 2332 help 2333 Enable this to turn on testing of the operation of the I/O iterator 2334 (iov_iter). This test is executed only once during system boot (so 2335 affects only boot time), or at module load time. 2336 2337 If unsure, say N. 2338 2339config KPROBES_SANITY_TEST 2340 tristate "Kprobes sanity tests" if !KUNIT_ALL_TESTS 2341 depends on DEBUG_KERNEL 2342 depends on KPROBES 2343 depends on KUNIT 2344 select STACKTRACE if ARCH_CORRECT_STACKTRACE_ON_KRETPROBE 2345 default KUNIT_ALL_TESTS 2346 help 2347 This option provides for testing basic kprobes functionality on 2348 boot. Samples of kprobe and kretprobe are inserted and 2349 verified for functionality. 2350 2351 Say N if you are unsure. 2352 2353config FPROBE_SANITY_TEST 2354 bool "Self test for fprobe" 2355 depends on DEBUG_KERNEL 2356 depends on FPROBE 2357 depends on KUNIT=y 2358 help 2359 This option will enable testing the fprobe when the system boot. 2360 A series of tests are made to verify that the fprobe is functioning 2361 properly. 2362 2363 Say N if you are unsure. 2364 2365config BACKTRACE_SELF_TEST 2366 tristate "Self test for the backtrace code" 2367 depends on DEBUG_KERNEL 2368 help 2369 This option provides a kernel module that can be used to test 2370 the kernel stack backtrace code. This option is not useful 2371 for distributions or general kernels, but only for kernel 2372 developers working on architecture code. 2373 2374 Note that if you want to also test saved backtraces, you will 2375 have to enable STACKTRACE as well. 2376 2377 Say N if you are unsure. 2378 2379config TEST_REF_TRACKER 2380 tristate "Self test for reference tracker" 2381 depends on DEBUG_KERNEL && STACKTRACE_SUPPORT 2382 select REF_TRACKER 2383 help 2384 This option provides a kernel module performing tests 2385 using reference tracker infrastructure. 2386 2387 Say N if you are unsure. 2388 2389config RBTREE_TEST 2390 tristate "Red-Black tree test" 2391 depends on DEBUG_KERNEL 2392 help 2393 A benchmark measuring the performance of the rbtree library. 2394 Also includes rbtree invariant checks. 2395 2396config REED_SOLOMON_TEST 2397 tristate "Reed-Solomon library test" 2398 depends on DEBUG_KERNEL || m 2399 select REED_SOLOMON 2400 select REED_SOLOMON_ENC16 2401 select REED_SOLOMON_DEC16 2402 help 2403 This option enables the self-test function of rslib at boot, 2404 or at module load time. 2405 2406 If unsure, say N. 2407 2408config INTERVAL_TREE_TEST 2409 tristate "Interval tree test" 2410 depends on DEBUG_KERNEL 2411 select INTERVAL_TREE 2412 help 2413 A benchmark measuring the performance of the interval tree library 2414 2415config PERCPU_TEST 2416 tristate "Per cpu operations test" 2417 depends on m && DEBUG_KERNEL 2418 help 2419 Enable this option to build test module which validates per-cpu 2420 operations. 2421 2422 If unsure, say N. 2423 2424config ATOMIC64_SELFTEST 2425 tristate "Perform an atomic64_t self-test" 2426 help 2427 Enable this option to test the atomic64_t functions at boot or 2428 at module load time. 2429 2430 If unsure, say N. 2431 2432config ASYNC_RAID6_TEST 2433 tristate "Self test for hardware accelerated raid6 recovery" 2434 depends on ASYNC_RAID6_RECOV 2435 select ASYNC_MEMCPY 2436 help 2437 This is a one-shot self test that permutes through the 2438 recovery of all the possible two disk failure scenarios for a 2439 N-disk array. Recovery is performed with the asynchronous 2440 raid6 recovery routines, and will optionally use an offload 2441 engine if one is available. 2442 2443 If unsure, say N. 2444 2445config TEST_HEXDUMP 2446 tristate "Test functions located in the hexdump module at runtime" 2447 2448config PRINTF_KUNIT_TEST 2449 tristate "KUnit test printf() family of functions at runtime" if !KUNIT_ALL_TESTS 2450 depends on KUNIT 2451 default KUNIT_ALL_TESTS 2452 help 2453 Enable this option to test the printf functions at runtime. 2454 2455 If unsure, say N. 2456 2457config SCANF_KUNIT_TEST 2458 tristate "KUnit test scanf() family of functions at runtime" if !KUNIT_ALL_TESTS 2459 depends on KUNIT 2460 default KUNIT_ALL_TESTS 2461 help 2462 Enable this option to test the scanf functions at runtime. 2463 2464 If unsure, say N. 2465 2466config SEQ_BUF_KUNIT_TEST 2467 tristate "KUnit test for seq_buf" if !KUNIT_ALL_TESTS 2468 depends on KUNIT 2469 default KUNIT_ALL_TESTS 2470 help 2471 This builds unit tests for the seq_buf library. 2472 2473 If unsure, say N. 2474 2475config STRING_KUNIT_TEST 2476 tristate "KUnit test string functions at runtime" if !KUNIT_ALL_TESTS 2477 depends on KUNIT 2478 default KUNIT_ALL_TESTS 2479 2480config STRING_HELPERS_KUNIT_TEST 2481 tristate "KUnit test string helpers at runtime" if !KUNIT_ALL_TESTS 2482 depends on KUNIT 2483 default KUNIT_ALL_TESTS 2484 2485config FFS_KUNIT_TEST 2486 tristate "KUnit test ffs-family functions at runtime" if !KUNIT_ALL_TESTS 2487 depends on KUNIT 2488 default KUNIT_ALL_TESTS 2489 help 2490 This builds KUnit tests for ffs-family bit manipulation functions 2491 including ffs(), __ffs(), fls(), __fls(), fls64(), and __ffs64(). 2492 2493 These tests validate mathematical correctness, edge case handling, 2494 and cross-architecture consistency of bit scanning functions. 2495 2496 For more information on KUnit and unit tests in general, 2497 please refer to Documentation/dev-tools/kunit/. 2498 2499config TEST_KSTRTOX 2500 tristate "Test kstrto*() family of functions at runtime" 2501 2502config TEST_BITMAP 2503 tristate "Test bitmap_*() family of functions at runtime" 2504 help 2505 Enable this option to test the bitmap functions at boot. 2506 2507 If unsure, say N. 2508 2509config TEST_UUID 2510 tristate "Test functions located in the uuid module at runtime" 2511 2512config TEST_XARRAY 2513 tristate "Test the XArray code at runtime" 2514 2515config TEST_MAPLE_TREE 2516 tristate "Test the Maple Tree code at runtime or module load" 2517 help 2518 Enable this option to test the maple tree code functions at boot, or 2519 when the module is loaded. Enable "Debug Maple Trees" will enable 2520 more verbose output on failures. 2521 2522 If unsure, say N. 2523 2524config TEST_RHASHTABLE 2525 tristate "Perform selftest on resizable hash table" 2526 help 2527 Enable this option to test the rhashtable functions at boot. 2528 2529 If unsure, say N. 2530 2531config TEST_IDA 2532 tristate "Perform selftest on IDA functions" 2533 2534config TEST_MISC_MINOR 2535 bool "miscdevice KUnit test" if !KUNIT_ALL_TESTS 2536 depends on KUNIT=y 2537 default KUNIT_ALL_TESTS 2538 help 2539 Kunit test for miscdevice API, specially its behavior in respect to 2540 static and dynamic minor numbers. 2541 2542 KUnit tests run during boot and output the results to the debug log 2543 in TAP format (https://testanything.org/). Only useful for kernel devs 2544 running the KUnit test harness, and not intended for inclusion into a 2545 production build. 2546 2547 For more information on KUnit and unit tests in general please refer 2548 to the KUnit documentation in Documentation/dev-tools/kunit/. 2549 2550 If unsure, say N. 2551 2552config TEST_PARMAN 2553 tristate "Perform selftest on priority array manager" 2554 depends on PARMAN 2555 help 2556 Enable this option to test priority array manager on boot 2557 (or module load). 2558 2559 If unsure, say N. 2560 2561config TEST_IRQ_TIMINGS 2562 bool "IRQ timings selftest" 2563 depends on IRQ_TIMINGS 2564 help 2565 Enable this option to test the irq timings code on boot. 2566 2567 If unsure, say N. 2568 2569config TEST_LKM 2570 tristate "Test module loading with 'hello world' module" 2571 depends on m 2572 help 2573 This builds the "test_module" module that emits "Hello, world" 2574 on printk when loaded. It is designed to be used for basic 2575 evaluation of the module loading subsystem (for example when 2576 validating module verification). It lacks any extra dependencies, 2577 and will not normally be loaded by the system unless explicitly 2578 requested by name. 2579 2580 If unsure, say N. 2581 2582config TEST_BITOPS 2583 tristate "Test module for compilation of bitops operations" 2584 help 2585 This builds the "test_bitops" module that is much like the 2586 TEST_LKM module except that it does a basic exercise of the 2587 set/clear_bit macros and get_count_order/long to make sure there are 2588 no compiler warnings from C=1 sparse checker or -Wextra 2589 compilations. It has no dependencies and doesn't run or load unless 2590 explicitly requested by name. for example: modprobe test_bitops. 2591 2592 If unsure, say N. 2593 2594config TEST_VMALLOC 2595 tristate "Test module for stress/performance analysis of vmalloc allocator" 2596 default n 2597 depends on MMU 2598 help 2599 This builds the "test_vmalloc" module that should be used for 2600 stress and performance analysis. So, any new change for vmalloc 2601 subsystem can be evaluated from performance and stability point 2602 of view. 2603 2604 If unsure, say N. 2605 2606config TEST_BPF 2607 tristate "Test BPF filter functionality" 2608 depends on m && NET 2609 help 2610 This builds the "test_bpf" module that runs various test vectors 2611 against the BPF interpreter or BPF JIT compiler depending on the 2612 current setting. This is in particular useful for BPF JIT compiler 2613 development, but also to run regression tests against changes in 2614 the interpreter code. It also enables test stubs for eBPF maps and 2615 verifier used by user space verifier testsuite. 2616 2617 If unsure, say N. 2618 2619config FIND_BIT_BENCHMARK 2620 tristate "Test find_bit functions" 2621 help 2622 This builds the "test_find_bit" module that measure find_*_bit() 2623 functions performance. 2624 2625 If unsure, say N. 2626 2627config FIND_BIT_BENCHMARK_RUST 2628 tristate "Test find_bit functions in Rust" 2629 depends on RUST 2630 help 2631 This builds the "find_bit_benchmark_rust" module. It is a micro 2632 benchmark that measures the performance of Rust functions that 2633 correspond to the find_*_bit() operations in C. It follows the 2634 FIND_BIT_BENCHMARK closely but will in general not yield same 2635 numbers due to extra bounds checks and overhead of foreign 2636 function calls. 2637 2638 If unsure, say N. 2639 2640config TEST_FIRMWARE 2641 tristate "Test firmware loading via userspace interface" 2642 depends on FW_LOADER 2643 help 2644 This builds the "test_firmware" module that creates a userspace 2645 interface for testing firmware loading. This can be used to 2646 control the triggering of firmware loading without needing an 2647 actual firmware-using device. The contents can be rechecked by 2648 userspace. 2649 2650 If unsure, say N. 2651 2652config TEST_SYSCTL 2653 tristate "sysctl test driver" 2654 depends on PROC_SYSCTL 2655 help 2656 This builds the "test_sysctl" module. This driver enables to test the 2657 proc sysctl interfaces available to drivers safely without affecting 2658 production knobs which might alter system functionality. 2659 2660 If unsure, say N. 2661 2662config BITFIELD_KUNIT 2663 tristate "KUnit test bitfield functions at runtime" if !KUNIT_ALL_TESTS 2664 depends on KUNIT 2665 default KUNIT_ALL_TESTS 2666 help 2667 Enable this option to test the bitfield functions at boot. 2668 2669 KUnit tests run during boot and output the results to the debug log 2670 in TAP format (http://testanything.org/). Only useful for kernel devs 2671 running the KUnit test harness, and not intended for inclusion into a 2672 production build. 2673 2674 For more information on KUnit and unit tests in general please refer 2675 to the KUnit documentation in Documentation/dev-tools/kunit/. 2676 2677 If unsure, say N. 2678 2679config CHECKSUM_KUNIT 2680 tristate "KUnit test checksum functions at runtime" if !KUNIT_ALL_TESTS 2681 depends on KUNIT 2682 default KUNIT_ALL_TESTS 2683 help 2684 Enable this option to test the checksum functions at boot. 2685 2686 KUnit tests run during boot and output the results to the debug log 2687 in TAP format (http://testanything.org/). Only useful for kernel devs 2688 running the KUnit test harness, and not intended for inclusion into a 2689 production build. 2690 2691 For more information on KUnit and unit tests in general please refer 2692 to the KUnit documentation in Documentation/dev-tools/kunit/. 2693 2694 If unsure, say N. 2695 2696config UTIL_MACROS_KUNIT 2697 tristate "KUnit test util_macros.h functions at runtime" if !KUNIT_ALL_TESTS 2698 depends on KUNIT 2699 default KUNIT_ALL_TESTS 2700 help 2701 Enable this option to test the util_macros.h function at boot. 2702 2703 KUnit tests run during boot and output the results to the debug log 2704 in TAP format (http://testanything.org/). Only useful for kernel devs 2705 running the KUnit test harness, and not intended for inclusion into a 2706 production build. 2707 2708 For more information on KUnit and unit tests in general please refer 2709 to the KUnit documentation in Documentation/dev-tools/kunit/. 2710 2711 If unsure, say N. 2712 2713config HASH_KUNIT_TEST 2714 tristate "KUnit Test for integer hash functions" if !KUNIT_ALL_TESTS 2715 depends on KUNIT 2716 default KUNIT_ALL_TESTS 2717 help 2718 Enable this option to test the kernel's string (<linux/stringhash.h>), and 2719 integer (<linux/hash.h>) hash functions on boot. 2720 2721 KUnit tests run during boot and output the results to the debug log 2722 in TAP format (https://testanything.org/). Only useful for kernel devs 2723 running the KUnit test harness, and not intended for inclusion into a 2724 production build. 2725 2726 For more information on KUnit and unit tests in general please refer 2727 to the KUnit documentation in Documentation/dev-tools/kunit/. 2728 2729 This is intended to help people writing architecture-specific 2730 optimized versions. If unsure, say N. 2731 2732config RESOURCE_KUNIT_TEST 2733 tristate "KUnit test for resource API" if !KUNIT_ALL_TESTS 2734 depends on KUNIT 2735 default KUNIT_ALL_TESTS 2736 select GET_FREE_REGION 2737 help 2738 This builds the resource API unit test. 2739 Tests the logic of API provided by resource.c and ioport.h. 2740 For more information on KUnit and unit tests in general please refer 2741 to the KUnit documentation in Documentation/dev-tools/kunit/. 2742 2743 If unsure, say N. 2744 2745config SYSCTL_KUNIT_TEST 2746 tristate "KUnit test for sysctl" if !KUNIT_ALL_TESTS 2747 depends on KUNIT 2748 default KUNIT_ALL_TESTS 2749 help 2750 This builds the proc sysctl unit test, which runs on boot. 2751 Tests the API contract and implementation correctness of sysctl. 2752 For more information on KUnit and unit tests in general please refer 2753 to the KUnit documentation in Documentation/dev-tools/kunit/. 2754 2755 If unsure, say N. 2756 2757config KFIFO_KUNIT_TEST 2758 tristate "KUnit Test for the generic kernel FIFO implementation" if !KUNIT_ALL_TESTS 2759 depends on KUNIT 2760 default KUNIT_ALL_TESTS 2761 help 2762 This builds the generic FIFO implementation KUnit test suite. 2763 It tests that the API and basic functionality of the kfifo type 2764 and associated macros. 2765 2766 For more information on KUnit and unit tests in general please refer 2767 to the KUnit documentation in Documentation/dev-tools/kunit/. 2768 2769 If unsure, say N. 2770 2771config LIST_KUNIT_TEST 2772 tristate "KUnit Test for Kernel Linked-list structures" if !KUNIT_ALL_TESTS 2773 depends on KUNIT 2774 default KUNIT_ALL_TESTS 2775 help 2776 This builds the linked list KUnit test suite. 2777 It tests that the API and basic functionality of the list_head type 2778 and associated macros. 2779 2780 KUnit tests run during boot and output the results to the debug log 2781 in TAP format (https://testanything.org/). Only useful for kernel devs 2782 running the KUnit test harness, and not intended for inclusion into a 2783 production build. 2784 2785 For more information on KUnit and unit tests in general please refer 2786 to the KUnit documentation in Documentation/dev-tools/kunit/. 2787 2788 If unsure, say N. 2789 2790config HASHTABLE_KUNIT_TEST 2791 tristate "KUnit Test for Kernel Hashtable structures" if !KUNIT_ALL_TESTS 2792 depends on KUNIT 2793 default KUNIT_ALL_TESTS 2794 help 2795 This builds the hashtable KUnit test suite. 2796 It tests the basic functionality of the API defined in 2797 include/linux/hashtable.h. For more information on KUnit and 2798 unit tests in general please refer to the KUnit documentation 2799 in Documentation/dev-tools/kunit/. 2800 2801 If unsure, say N. 2802 2803config LINEAR_RANGES_TEST 2804 tristate "KUnit test for linear_ranges" 2805 depends on KUNIT 2806 select LINEAR_RANGES 2807 help 2808 This builds the linear_ranges unit test, which runs on boot. 2809 Tests the linear_ranges logic correctness. 2810 For more information on KUnit and unit tests in general please refer 2811 to the KUnit documentation in Documentation/dev-tools/kunit/. 2812 2813 If unsure, say N. 2814 2815config CMDLINE_KUNIT_TEST 2816 tristate "KUnit test for cmdline API" if !KUNIT_ALL_TESTS 2817 depends on KUNIT 2818 default KUNIT_ALL_TESTS 2819 help 2820 This builds the cmdline API unit test. 2821 Tests the logic of API provided by cmdline.c. 2822 For more information on KUnit and unit tests in general please refer 2823 to the KUnit documentation in Documentation/dev-tools/kunit/. 2824 2825 If unsure, say N. 2826 2827config BITS_TEST 2828 tristate "KUnit test for bits.h" if !KUNIT_ALL_TESTS 2829 depends on KUNIT 2830 default KUNIT_ALL_TESTS 2831 help 2832 This builds the bits unit test. 2833 Tests the logic of macros defined in bits.h. 2834 For more information on KUnit and unit tests in general please refer 2835 to the KUnit documentation in Documentation/dev-tools/kunit/. 2836 2837 If unsure, say N. 2838 2839config SLUB_KUNIT_TEST 2840 tristate "KUnit test for SLUB cache error detection" if !KUNIT_ALL_TESTS 2841 depends on SLUB_DEBUG && KUNIT 2842 default KUNIT_ALL_TESTS 2843 help 2844 This builds SLUB allocator unit test. 2845 Tests SLUB cache debugging functionality. 2846 For more information on KUnit and unit tests in general please refer 2847 to the KUnit documentation in Documentation/dev-tools/kunit/. 2848 2849 If unsure, say N. 2850 2851config RATIONAL_KUNIT_TEST 2852 tristate "KUnit test for rational.c" if !KUNIT_ALL_TESTS 2853 depends on KUNIT && RATIONAL 2854 default KUNIT_ALL_TESTS 2855 help 2856 This builds the rational math unit test. 2857 For more information on KUnit and unit tests in general please refer 2858 to the KUnit documentation in Documentation/dev-tools/kunit/. 2859 2860 If unsure, say N. 2861 2862config MEMCPY_KUNIT_TEST 2863 tristate "Test memcpy(), memmove(), and memset() functions at runtime" if !KUNIT_ALL_TESTS 2864 depends on KUNIT 2865 default KUNIT_ALL_TESTS 2866 help 2867 Builds unit tests for memcpy(), memmove(), and memset() functions. 2868 For more information on KUnit and unit tests in general please refer 2869 to the KUnit documentation in Documentation/dev-tools/kunit/. 2870 2871 If unsure, say N. 2872 2873config IS_SIGNED_TYPE_KUNIT_TEST 2874 tristate "Test is_signed_type() macro" if !KUNIT_ALL_TESTS 2875 depends on KUNIT 2876 default KUNIT_ALL_TESTS 2877 help 2878 Builds unit tests for the is_signed_type() macro. 2879 2880 For more information on KUnit and unit tests in general please refer 2881 to the KUnit documentation in Documentation/dev-tools/kunit/. 2882 2883 If unsure, say N. 2884 2885config OVERFLOW_KUNIT_TEST 2886 tristate "Test check_*_overflow() functions at runtime" if !KUNIT_ALL_TESTS 2887 depends on KUNIT 2888 default KUNIT_ALL_TESTS 2889 help 2890 Builds unit tests for the check_*_overflow(), size_*(), allocation, and 2891 related functions. 2892 2893 For more information on KUnit and unit tests in general please refer 2894 to the KUnit documentation in Documentation/dev-tools/kunit/. 2895 2896 If unsure, say N. 2897 2898config RANDSTRUCT_KUNIT_TEST 2899 tristate "Test randstruct structure layout randomization at runtime" if !KUNIT_ALL_TESTS 2900 depends on KUNIT 2901 default KUNIT_ALL_TESTS 2902 help 2903 Builds unit tests for the checking CONFIG_RANDSTRUCT=y, which 2904 randomizes structure layouts. 2905 2906config STACKINIT_KUNIT_TEST 2907 tristate "Test level of stack variable initialization" if !KUNIT_ALL_TESTS 2908 depends on KUNIT 2909 default KUNIT_ALL_TESTS 2910 help 2911 Test if the kernel is zero-initializing stack variables and 2912 padding. Coverage is controlled by compiler flags, 2913 CONFIG_INIT_STACK_ALL_PATTERN or CONFIG_INIT_STACK_ALL_ZERO. 2914 2915config FORTIFY_KUNIT_TEST 2916 tristate "Test fortified str*() and mem*() function internals at runtime" if !KUNIT_ALL_TESTS 2917 depends on KUNIT 2918 default KUNIT_ALL_TESTS 2919 help 2920 Builds unit tests for checking internals of FORTIFY_SOURCE as used 2921 by the str*() and mem*() family of functions. For testing runtime 2922 traps of FORTIFY_SOURCE, see LKDTM's "FORTIFY_*" tests. 2923 2924config LONGEST_SYM_KUNIT_TEST 2925 tristate "Test the longest symbol possible" if !KUNIT_ALL_TESTS 2926 depends on KUNIT && KPROBES 2927 depends on !PREFIX_SYMBOLS && !CFI && !GCOV_KERNEL 2928 default KUNIT_ALL_TESTS 2929 help 2930 Tests the longest symbol possible 2931 2932 If unsure, say N. 2933 2934config HW_BREAKPOINT_KUNIT_TEST 2935 bool "Test hw_breakpoint constraints accounting" if !KUNIT_ALL_TESTS 2936 depends on HAVE_HW_BREAKPOINT 2937 depends on KUNIT=y 2938 default KUNIT_ALL_TESTS 2939 help 2940 Tests for hw_breakpoint constraints accounting. 2941 2942 If unsure, say N. 2943 2944config SIPHASH_KUNIT_TEST 2945 tristate "Perform selftest on siphash functions" if !KUNIT_ALL_TESTS 2946 depends on KUNIT 2947 default KUNIT_ALL_TESTS 2948 help 2949 Enable this option to test the kernel's siphash (<linux/siphash.h>) hash 2950 functions on boot (or module load). 2951 2952 This is intended to help people writing architecture-specific 2953 optimized versions. If unsure, say N. 2954 2955config USERCOPY_KUNIT_TEST 2956 tristate "KUnit Test for user/kernel boundary protections" 2957 depends on KUNIT 2958 default KUNIT_ALL_TESTS 2959 help 2960 This builds the "usercopy_kunit" module that runs sanity checks 2961 on the copy_to/from_user infrastructure, making sure basic 2962 user/kernel boundary testing is working. 2963 2964config BLACKHOLE_DEV_KUNIT_TEST 2965 tristate "Test blackhole netdev functionality" if !KUNIT_ALL_TESTS 2966 depends on NET 2967 depends on KUNIT 2968 default KUNIT_ALL_TESTS 2969 help 2970 This builds the "blackhole_dev_kunit" module that validates the 2971 data path through this blackhole netdev. 2972 2973 If unsure, say N. 2974 2975config TEST_UDELAY 2976 tristate "udelay test driver" 2977 help 2978 This builds the "udelay_test" module that helps to make sure 2979 that udelay() is working properly. 2980 2981 If unsure, say N. 2982 2983config TEST_STATIC_KEYS 2984 tristate "Test static keys" 2985 depends on m 2986 help 2987 Test the static key interfaces. 2988 2989 If unsure, say N. 2990 2991config TEST_DYNAMIC_DEBUG 2992 tristate "Test DYNAMIC_DEBUG" 2993 depends on DYNAMIC_DEBUG 2994 help 2995 This module registers a tracer callback to count enabled 2996 pr_debugs in a 'do_debugging' function, then alters their 2997 enablements, calls the function, and compares counts. 2998 2999 If unsure, say N. 3000 3001config TEST_KMOD 3002 tristate "kmod stress tester" 3003 depends on m 3004 select TEST_LKM 3005 help 3006 Test the kernel's module loading mechanism: kmod. kmod implements 3007 support to load modules using the Linux kernel's usermode helper. 3008 This test provides a series of tests against kmod. 3009 3010 Although technically you can either build test_kmod as a module or 3011 into the kernel we disallow building it into the kernel since 3012 it stress tests request_module() and this will very likely cause 3013 some issues by taking over precious threads available from other 3014 module load requests, ultimately this could be fatal. 3015 3016 To run tests run: 3017 3018 tools/testing/selftests/kmod/kmod.sh --help 3019 3020 If unsure, say N. 3021 3022config TEST_RUNTIME 3023 bool 3024 3025config TEST_RUNTIME_MODULE 3026 bool 3027 3028config TEST_KALLSYMS 3029 tristate "module kallsyms find_symbol() test" 3030 depends on m 3031 select TEST_RUNTIME 3032 select TEST_RUNTIME_MODULE 3033 select TEST_KALLSYMS_A 3034 select TEST_KALLSYMS_B 3035 select TEST_KALLSYMS_C 3036 select TEST_KALLSYMS_D 3037 help 3038 This allows us to stress test find_symbol() through the kallsyms 3039 used to place symbols on the kernel ELF kallsyms and modules kallsyms 3040 where we place kernel symbols such as exported symbols. 3041 3042 We have four test modules: 3043 3044 A: has KALLSYSMS_NUMSYMS exported symbols 3045 B: uses one of A's symbols 3046 C: adds KALLSYMS_SCALE_FACTOR * KALLSYSMS_NUMSYMS exported 3047 D: adds 2 * the symbols than C 3048 3049 We stress test find_symbol() through two means: 3050 3051 1) Upon load of B it will trigger simplify_symbols() to look for the 3052 one symbol it uses from the module A with tons of symbols. This is an 3053 indirect way for us to have B call resolve_symbol_wait() upon module 3054 load. This will eventually call find_symbol() which will eventually 3055 try to find the symbols used with find_exported_symbol_in_section(). 3056 find_exported_symbol_in_section() uses bsearch() so a binary search 3057 for each symbol. Binary search will at worst be O(log(n)) so the 3058 larger TEST_MODULE_KALLSYSMS the worse the search. 3059 3060 2) The selftests should load C first, before B. Upon B's load towards 3061 the end right before we call module B's init routine we get 3062 complete_formation() called on the module. That will first check 3063 for duplicate symbols with the call to verify_exported_symbols(). 3064 That is when we'll force iteration on module C's insane symbol list. 3065 Since it has 10 * KALLSYMS_NUMSYMS it means we can first test 3066 just loading B without C. The amount of time it takes to load C Vs 3067 B can give us an idea of the impact growth of the symbol space and 3068 give us projection. Module A only uses one symbol from B so to allow 3069 this scaling in module C to be proportional, if it used more symbols 3070 then the first test would be doing more and increasing just the 3071 search space would be slightly different. The last module, module D 3072 will just increase the search space by twice the number of symbols in 3073 C so to allow for full projects. 3074 3075 tools/testing/selftests/module/find_symbol.sh 3076 3077 The current defaults will incur a build delay of about 7 minutes 3078 on an x86_64 with only 8 cores. Enable this only if you want to 3079 stress test find_symbol() with thousands of symbols. At the same 3080 time this is also useful to test building modules with thousands of 3081 symbols, and if BTF is enabled this also stress tests adding BTF 3082 information for each module. Currently enabling many more symbols 3083 will segfault the build system. 3084 3085 If unsure, say N. 3086 3087if TEST_KALLSYMS 3088 3089config TEST_KALLSYMS_A 3090 tristate 3091 depends on m 3092 3093config TEST_KALLSYMS_B 3094 tristate 3095 depends on m 3096 3097config TEST_KALLSYMS_C 3098 tristate 3099 depends on m 3100 3101config TEST_KALLSYMS_D 3102 tristate 3103 depends on m 3104 3105choice 3106 prompt "Kallsym test range" 3107 default TEST_KALLSYMS_LARGE 3108 help 3109 Selecting something other than "Fast" will enable tests which slow 3110 down the build and may crash your build. 3111 3112config TEST_KALLSYMS_FAST 3113 bool "Fast builds" 3114 help 3115 You won't really be testing kallsysms, so this just helps fast builds 3116 when allmodconfig is used.. 3117 3118config TEST_KALLSYMS_LARGE 3119 bool "Enable testing kallsyms with large exports" 3120 help 3121 This will enable larger number of symbols. This will slow down 3122 your build considerably. 3123 3124config TEST_KALLSYMS_MAX 3125 bool "Known kallsysms limits" 3126 help 3127 This will enable exports to the point we know we'll start crashing 3128 builds. 3129 3130endchoice 3131 3132config TEST_KALLSYMS_NUMSYMS 3133 int "test kallsyms number of symbols" 3134 range 2 10000 3135 default 2 if TEST_KALLSYMS_FAST 3136 default 100 if TEST_KALLSYMS_LARGE 3137 default 10000 if TEST_KALLSYMS_MAX 3138 help 3139 The number of symbols to create on TEST_KALLSYMS_A, only one of which 3140 module TEST_KALLSYMS_B will use. This also will be used 3141 for how many symbols TEST_KALLSYMS_C will have, scaled up by 3142 TEST_KALLSYMS_SCALE_FACTOR. Note that setting this to 10,000 will 3143 trigger a segfault today, don't use anything close to it unless 3144 you are aware that this should not be used for automated build tests. 3145 3146config TEST_KALLSYMS_SCALE_FACTOR 3147 int "test kallsyms scale factor" 3148 default 8 3149 help 3150 How many more unusued symbols will TEST_KALLSYSMS_C have than 3151 TEST_KALLSYMS_A. If 8, then module C will have 8 * syms 3152 than module A. Then TEST_KALLSYMS_D will have double the amount 3153 of symbols than C so to allow projections. 3154 3155endif # TEST_KALLSYMS 3156 3157config TEST_DEBUG_VIRTUAL 3158 tristate "Test CONFIG_DEBUG_VIRTUAL feature" 3159 depends on DEBUG_VIRTUAL 3160 help 3161 Test the kernel's ability to detect incorrect calls to 3162 virt_to_phys() done against the non-linear part of the 3163 kernel's virtual address map. 3164 3165 If unsure, say N. 3166 3167config TEST_MEMCAT_P 3168 tristate "Test memcat_p() helper function" 3169 help 3170 Test the memcat_p() helper for correctly merging two 3171 pointer arrays together. 3172 3173 If unsure, say N. 3174 3175config TEST_OBJAGG 3176 tristate "Perform selftest on object aggreration manager" 3177 default n 3178 depends on OBJAGG 3179 help 3180 Enable this option to test object aggregation manager on boot 3181 (or module load). 3182 3183config TEST_MEMINIT 3184 tristate "Test heap/page initialization" 3185 help 3186 Test if the kernel is zero-initializing heap and page allocations. 3187 This can be useful to test init_on_alloc and init_on_free features. 3188 3189 If unsure, say N. 3190 3191config TEST_HMM 3192 tristate "Test HMM (Heterogeneous Memory Management)" 3193 depends on TRANSPARENT_HUGEPAGE 3194 depends on DEVICE_PRIVATE 3195 select HMM_MIRROR 3196 select MMU_NOTIFIER 3197 help 3198 This is a pseudo device driver solely for testing HMM. 3199 Say M here if you want to build the HMM test module. 3200 Doing so will allow you to run tools/testing/selftest/vm/hmm-tests. 3201 3202 If unsure, say N. 3203 3204config TEST_FREE_PAGES 3205 tristate "Test freeing pages" 3206 help 3207 Test that a memory leak does not occur due to a race between 3208 freeing a block of pages and a speculative page reference. 3209 Loading this module is safe if your kernel has the bug fixed. 3210 If the bug is not fixed, it will leak gigabytes of memory and 3211 probably OOM your system. 3212 3213config TEST_FPU 3214 tristate "Test floating point operations in kernel space" 3215 depends on ARCH_HAS_KERNEL_FPU_SUPPORT && !KCOV_INSTRUMENT_ALL 3216 help 3217 Enable this option to add /sys/kernel/debug/selftest_helpers/test_fpu 3218 which will trigger a sequence of floating point operations. This is used 3219 for self-testing floating point control register setting in 3220 kernel_fpu_begin(). 3221 3222 If unsure, say N. 3223 3224config TEST_CLOCKSOURCE_WATCHDOG 3225 tristate "Test clocksource watchdog in kernel space" 3226 depends on CLOCKSOURCE_WATCHDOG 3227 help 3228 Enable this option to create a kernel module that will trigger 3229 a test of the clocksource watchdog. This module may be loaded 3230 via modprobe or insmod in which case it will run upon being 3231 loaded, or it may be built in, in which case it will run 3232 shortly after boot. 3233 3234 If unsure, say N. 3235 3236config TEST_OBJPOOL 3237 tristate "Test module for correctness and stress of objpool" 3238 default n 3239 depends on m && DEBUG_KERNEL 3240 help 3241 This builds the "test_objpool" module that should be used for 3242 correctness verification and concurrent testings of objects 3243 allocation and reclamation. 3244 3245 If unsure, say N. 3246 3247config TEST_KEXEC_HANDOVER 3248 bool "Test for Kexec HandOver" 3249 default n 3250 depends on KEXEC_HANDOVER 3251 help 3252 This option enables test for Kexec HandOver (KHO). 3253 The test consists of two parts: saving kernel data before kexec and 3254 restoring the data after kexec and verifying that it was properly 3255 handed over. This test module creates and saves data on the boot of 3256 the first kernel and restores and verifies the data on the boot of 3257 kexec'ed kernel. 3258 3259 For detailed documentation about KHO, see Documentation/core-api/kho. 3260 3261 To run the test run: 3262 3263 tools/testing/selftests/kho/vmtest.sh -h 3264 3265 If unsure, say N. 3266 3267config RATELIMIT_KUNIT_TEST 3268 tristate "KUnit Test for correctness and stress of ratelimit" if !KUNIT_ALL_TESTS 3269 depends on KUNIT 3270 default KUNIT_ALL_TESTS 3271 help 3272 This builds the "test_ratelimit" module that should be used 3273 for correctness verification and concurrent testings of rate 3274 limiting. 3275 3276 If unsure, say N. 3277 3278config INT_POW_KUNIT_TEST 3279 tristate "Integer exponentiation (int_pow) test" if !KUNIT_ALL_TESTS 3280 depends on KUNIT 3281 default KUNIT_ALL_TESTS 3282 help 3283 This option enables the KUnit test suite for the int_pow function, 3284 which performs integer exponentiation. The test suite is designed to 3285 verify that the implementation of int_pow correctly computes the power 3286 of a given base raised to a given exponent. 3287 3288 Enabling this option will include tests that check various scenarios 3289 and edge cases to ensure the accuracy and reliability of the exponentiation 3290 function. 3291 3292 If unsure, say N 3293 3294config INT_SQRT_KUNIT_TEST 3295 tristate "Integer square root test" if !KUNIT_ALL_TESTS 3296 depends on KUNIT 3297 default KUNIT_ALL_TESTS 3298 help 3299 This option enables the KUnit test suite for the int_sqrt() function, 3300 which performs square root calculation. The test suite checks 3301 various scenarios, including edge cases, to ensure correctness. 3302 3303 Enabling this option will include tests that check various scenarios 3304 and edge cases to ensure the accuracy and reliability of the square root 3305 function. 3306 3307 If unsure, say N 3308 3309config INT_LOG_KUNIT_TEST 3310 tristate "Integer log (int_log) test" if !KUNIT_ALL_TESTS 3311 depends on KUNIT 3312 default KUNIT_ALL_TESTS 3313 help 3314 This option enables the KUnit test suite for the int_log library, which 3315 provides two functions to compute the integer logarithm in base 2 and 3316 base 10, called respectively as intlog2 and intlog10. 3317 3318 If unsure, say N 3319 3320config GCD_KUNIT_TEST 3321 tristate "Greatest common divisor test" if !KUNIT_ALL_TESTS 3322 depends on KUNIT 3323 default KUNIT_ALL_TESTS 3324 help 3325 This option enables the KUnit test suite for the gcd() function, 3326 which computes the greatest common divisor of two numbers. 3327 3328 This test suite verifies the correctness of gcd() across various 3329 scenarios, including edge cases. 3330 3331 If unsure, say N 3332 3333config PRIME_NUMBERS_KUNIT_TEST 3334 tristate "Prime number generator test" if !KUNIT_ALL_TESTS 3335 depends on KUNIT 3336 depends on PRIME_NUMBERS 3337 default KUNIT_ALL_TESTS 3338 help 3339 This option enables the KUnit test suite for the {is,next}_prime_number 3340 functions. 3341 3342 Enabling this option will include tests that compare the prime number 3343 generator functions against a brute force implementation. 3344 3345 If unsure, say N 3346 3347endif # RUNTIME_TESTING_MENU 3348 3349config ARCH_USE_MEMTEST 3350 bool 3351 help 3352 An architecture should select this when it uses early_memtest() 3353 during boot process. 3354 3355config MEMTEST 3356 bool "Memtest" 3357 depends on ARCH_USE_MEMTEST 3358 help 3359 This option adds a kernel parameter 'memtest', which allows memtest 3360 to be set and executed. 3361 memtest=0, mean disabled; -- default 3362 memtest=1, mean do 1 test pattern; 3363 ... 3364 memtest=17, mean do 17 test patterns. 3365 If you are unsure how to answer this question, answer N. 3366 3367 3368 3369config HYPERV_TESTING 3370 bool "Microsoft Hyper-V driver testing" 3371 default n 3372 depends on HYPERV && DEBUG_FS 3373 help 3374 Select this option to enable Hyper-V vmbus testing. 3375 3376endmenu # "Kernel Testing and Coverage" 3377 3378menu "Rust hacking" 3379 3380config RUST_DEBUG_ASSERTIONS 3381 bool "Debug assertions" 3382 depends on RUST 3383 help 3384 Enables rustc's `-Cdebug-assertions` codegen option. 3385 3386 This flag lets you turn `cfg(debug_assertions)` conditional 3387 compilation on or off. This can be used to enable extra debugging 3388 code in development but not in production. For example, it controls 3389 the behavior of the standard library's `debug_assert!` macro. 3390 3391 Note that this will apply to all Rust code, including `core`. 3392 3393 If unsure, say N. 3394 3395config RUST_OVERFLOW_CHECKS 3396 bool "Overflow checks" 3397 default y 3398 depends on RUST 3399 help 3400 Enables rustc's `-Coverflow-checks` codegen option. 3401 3402 This flag allows you to control the behavior of runtime integer 3403 overflow. When overflow-checks are enabled, a Rust panic will occur 3404 on overflow. 3405 3406 Note that this will apply to all Rust code, including `core`. 3407 3408 If unsure, say Y. 3409 3410config RUST_BUILD_ASSERT_ALLOW 3411 bool "Allow unoptimized build-time assertions" 3412 depends on RUST 3413 help 3414 Controls how `build_error!` and `build_assert!` are handled during the build. 3415 3416 If calls to them exist in the binary, it may indicate a violated invariant 3417 or that the optimizer failed to verify the invariant during compilation. 3418 3419 This should not happen, thus by default the build is aborted. However, 3420 as an escape hatch, you can choose Y here to ignore them during build 3421 and let the check be carried at runtime (with `panic!` being called if 3422 the check fails). 3423 3424 If unsure, say N. 3425 3426config RUST_KERNEL_DOCTESTS 3427 bool "Doctests for the `kernel` crate" if !KUNIT_ALL_TESTS 3428 depends on RUST && KUNIT=y 3429 default KUNIT_ALL_TESTS 3430 help 3431 This builds the documentation tests of the `kernel` crate 3432 as KUnit tests. 3433 3434 For more information on KUnit and unit tests in general, 3435 please refer to the KUnit documentation in Documentation/dev-tools/kunit/. 3436 3437 If unsure, say N. 3438 3439endmenu # "Rust" 3440 3441endmenu # Kernel hacking 3442