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