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 jiffie" 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 211menu "Compile-time checks and compiler options" 212 213config DEBUG_INFO 214 bool "Compile the kernel with debug info" 215 depends on DEBUG_KERNEL && !COMPILE_TEST 216 help 217 If you say Y here the resulting kernel image will include 218 debugging info resulting in a larger kernel image. 219 This adds debug symbols to the kernel and modules (gcc -g), and 220 is needed if you intend to use kernel crashdump or binary object 221 tools like crash, kgdb, LKCD, gdb, etc on the kernel. 222 Say Y here only if you plan to debug the kernel. 223 224 If unsure, say N. 225 226if DEBUG_INFO 227 228config DEBUG_INFO_REDUCED 229 bool "Reduce debugging information" 230 help 231 If you say Y here gcc is instructed to generate less debugging 232 information for structure types. This means that tools that 233 need full debugging information (like kgdb or systemtap) won't 234 be happy. But if you merely need debugging information to 235 resolve line numbers there is no loss. Advantage is that 236 build directory object sizes shrink dramatically over a full 237 DEBUG_INFO build and compile times are reduced too. 238 Only works with newer gcc versions. 239 240config DEBUG_INFO_COMPRESSED 241 bool "Compressed debugging information" 242 depends on $(cc-option,-gz=zlib) 243 depends on $(ld-option,--compress-debug-sections=zlib) 244 help 245 Compress the debug information using zlib. Requires GCC 5.0+ or Clang 246 5.0+, binutils 2.26+, and zlib. 247 248 Users of dpkg-deb via scripts/package/builddeb may find an increase in 249 size of their debug .deb packages with this config set, due to the 250 debug info being compressed with zlib, then the object files being 251 recompressed with a different compression scheme. But this is still 252 preferable to setting $KDEB_COMPRESS to "none" which would be even 253 larger. 254 255config DEBUG_INFO_SPLIT 256 bool "Produce split debuginfo in .dwo files" 257 depends on $(cc-option,-gsplit-dwarf) 258 help 259 Generate debug info into separate .dwo files. This significantly 260 reduces the build directory size for builds with DEBUG_INFO, 261 because it stores the information only once on disk in .dwo 262 files instead of multiple times in object files and executables. 263 In addition the debug information is also compressed. 264 265 Requires recent gcc (4.7+) and recent gdb/binutils. 266 Any tool that packages or reads debug information would need 267 to know about the .dwo files and include them. 268 Incompatible with older versions of ccache. 269 270choice 271 prompt "DWARF version" 272 help 273 Which version of DWARF debug info to emit. 274 275config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT 276 bool "Rely on the toolchain's implicit default DWARF version" 277 help 278 The implicit default version of DWARF debug info produced by a 279 toolchain changes over time. 280 281 This can break consumers of the debug info that haven't upgraded to 282 support newer revisions, and prevent testing newer versions, but 283 those should be less common scenarios. 284 285 If unsure, say Y. 286 287config DEBUG_INFO_DWARF4 288 bool "Generate DWARF Version 4 debuginfo" 289 help 290 Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+. 291 292 If you have consumers of DWARF debug info that are not ready for 293 newer revisions of DWARF, you may wish to choose this or have your 294 config select this. 295 296config DEBUG_INFO_DWARF5 297 bool "Generate DWARF Version 5 debuginfo" 298 depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502))) 299 depends on !DEBUG_INFO_BTF 300 help 301 Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc 302 5.0+ accepts the -gdwarf-5 flag but only had partial support for some 303 draft features until 7.0), and gdb 8.0+. 304 305 Changes to the structure of debug info in Version 5 allow for around 306 15-18% savings in resulting image and debug info section sizes as 307 compared to DWARF Version 4. DWARF Version 5 standardizes previous 308 extensions such as accelerators for symbol indexing and the format 309 for fission (.dwo/.dwp) files. Users may not want to select this 310 config if they rely on tooling that has not yet been updated to 311 support DWARF Version 5. 312 313endchoice # "DWARF version" 314 315config DEBUG_INFO_BTF 316 bool "Generate BTF typeinfo" 317 depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED 318 depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST 319 depends on BPF_SYSCALL 320 help 321 Generate deduplicated BTF type information from DWARF debug info. 322 Turning this on expects presence of pahole tool, which will convert 323 DWARF type info into equivalent deduplicated BTF type info. 324 325config PAHOLE_HAS_SPLIT_BTF 326 def_bool $(success, test `$(PAHOLE) --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/'` -ge "119") 327 328config DEBUG_INFO_BTF_MODULES 329 def_bool y 330 depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF 331 help 332 Generate compact split BTF type information for kernel modules. 333 334config GDB_SCRIPTS 335 bool "Provide GDB scripts for kernel debugging" 336 help 337 This creates the required links to GDB helper scripts in the 338 build directory. If you load vmlinux into gdb, the helper 339 scripts will be automatically imported by gdb as well, and 340 additional functions are available to analyze a Linux kernel 341 instance. See Documentation/dev-tools/gdb-kernel-debugging.rst 342 for further details. 343 344endif # DEBUG_INFO 345 346config FRAME_WARN 347 int "Warn for stack frames larger than" 348 range 0 8192 349 default 2048 if GCC_PLUGIN_LATENT_ENTROPY 350 default 2048 if PARISC 351 default 1536 if (!64BIT && XTENSA) 352 default 1024 if !64BIT 353 default 2048 if 64BIT 354 help 355 Tell gcc to warn at build time for stack frames larger than this. 356 Setting this too low will cause a lot of warnings. 357 Setting it to 0 disables the warning. 358 359config STRIP_ASM_SYMS 360 bool "Strip assembler-generated symbols during link" 361 default n 362 help 363 Strip internal assembler-generated symbols during a link (symbols 364 that look like '.Lxxx') so they don't pollute the output of 365 get_wchan() and suchlike. 366 367config READABLE_ASM 368 bool "Generate readable assembler code" 369 depends on DEBUG_KERNEL 370 depends on CC_IS_GCC 371 help 372 Disable some compiler optimizations that tend to generate human unreadable 373 assembler output. This may make the kernel slightly slower, but it helps 374 to keep kernel developers who have to stare a lot at assembler listings 375 sane. 376 377config HEADERS_INSTALL 378 bool "Install uapi headers to usr/include" 379 depends on !UML 380 help 381 This option will install uapi headers (headers exported to user-space) 382 into the usr/include directory for use during the kernel build. 383 This is unneeded for building the kernel itself, but needed for some 384 user-space program samples. It is also needed by some features such 385 as uapi header sanity checks. 386 387config DEBUG_SECTION_MISMATCH 388 bool "Enable full Section mismatch analysis" 389 depends on CC_IS_GCC 390 help 391 The section mismatch analysis checks if there are illegal 392 references from one section to another section. 393 During linktime or runtime, some sections are dropped; 394 any use of code/data previously in these sections would 395 most likely result in an oops. 396 In the code, functions and variables are annotated with 397 __init,, etc. (see the full list in include/linux/init.h), 398 which results in the code/data being placed in specific sections. 399 The section mismatch analysis is always performed after a full 400 kernel build, and enabling this option causes the following 401 additional step to occur: 402 - Add the option -fno-inline-functions-called-once to gcc commands. 403 When inlining a function annotated with __init in a non-init 404 function, we would lose the section information and thus 405 the analysis would not catch the illegal reference. 406 This option tells gcc to inline less (but it does result in 407 a larger kernel). 408 409config SECTION_MISMATCH_WARN_ONLY 410 bool "Make section mismatch errors non-fatal" 411 default y 412 help 413 If you say N here, the build process will fail if there are any 414 section mismatch, instead of just throwing warnings. 415 416 If unsure, say Y. 417 418config DEBUG_FORCE_FUNCTION_ALIGN_64B 419 bool "Force all function address 64B aligned" if EXPERT 420 help 421 There are cases that a commit from one domain changes the function 422 address alignment of other domains, and cause magic performance 423 bump (regression or improvement). Enable this option will help to 424 verify if the bump is caused by function alignment changes, while 425 it will slightly increase the kernel size and affect icache usage. 426 427 It is mainly for debug and performance tuning use. 428 429# 430# Select this config option from the architecture Kconfig, if it 431# is preferred to always offer frame pointers as a config 432# option on the architecture (regardless of KERNEL_DEBUG): 433# 434config ARCH_WANT_FRAME_POINTERS 435 bool 436 437config FRAME_POINTER 438 bool "Compile the kernel with frame pointers" 439 depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS 440 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS 441 help 442 If you say Y here the resulting kernel image will be slightly 443 larger and slower, but it gives very useful debugging information 444 in case of kernel bugs. (precise oopses/stacktraces/warnings) 445 446config STACK_VALIDATION 447 bool "Compile-time stack metadata validation" 448 depends on HAVE_STACK_VALIDATION 449 default n 450 help 451 Add compile-time checks to validate stack metadata, including frame 452 pointers (if CONFIG_FRAME_POINTER is enabled). This helps ensure 453 that runtime stack traces are more reliable. 454 455 This is also a prerequisite for generation of ORC unwind data, which 456 is needed for CONFIG_UNWINDER_ORC. 457 458 For more information, see 459 tools/objtool/Documentation/stack-validation.txt. 460 461config VMLINUX_VALIDATION 462 bool 463 depends on STACK_VALIDATION && DEBUG_ENTRY 464 default y 465 466config VMLINUX_MAP 467 bool "Generate vmlinux.map file when linking" 468 depends on EXPERT 469 help 470 Selecting this option will pass "-Map=vmlinux.map" to ld 471 when linking vmlinux. That file can be useful for verifying 472 and debugging magic section games, and for seeing which 473 pieces of code get eliminated with 474 CONFIG_LD_DEAD_CODE_DATA_ELIMINATION. 475 476config DEBUG_FORCE_WEAK_PER_CPU 477 bool "Force weak per-cpu definitions" 478 depends on DEBUG_KERNEL 479 help 480 s390 and alpha require percpu variables in modules to be 481 defined weak to work around addressing range issue which 482 puts the following two restrictions on percpu variable 483 definitions. 484 485 1. percpu symbols must be unique whether static or not 486 2. percpu variables can't be defined inside a function 487 488 To ensure that generic code follows the above rules, this 489 option forces all percpu variables to be defined as weak. 490 491endmenu # "Compiler options" 492 493menu "Generic Kernel Debugging Instruments" 494 495config MAGIC_SYSRQ 496 bool "Magic SysRq key" 497 depends on !UML 498 help 499 If you say Y here, you will have some control over the system even 500 if the system crashes for example during kernel debugging (e.g., you 501 will be able to flush the buffer cache to disk, reboot the system 502 immediately or dump some status information). This is accomplished 503 by pressing various keys while holding SysRq (Alt+PrintScreen). It 504 also works on a serial console (on PC hardware at least), if you 505 send a BREAK and then within 5 seconds a command keypress. The 506 keys are documented in <file:Documentation/admin-guide/sysrq.rst>. 507 Don't say Y unless you really know what this hack does. 508 509config MAGIC_SYSRQ_DEFAULT_ENABLE 510 hex "Enable magic SysRq key functions by default" 511 depends on MAGIC_SYSRQ 512 default 0x1 513 help 514 Specifies which SysRq key functions are enabled by default. 515 This may be set to 1 or 0 to enable or disable them all, or 516 to a bitmask as described in Documentation/admin-guide/sysrq.rst. 517 518config MAGIC_SYSRQ_SERIAL 519 bool "Enable magic SysRq key over serial" 520 depends on MAGIC_SYSRQ 521 default y 522 help 523 Many embedded boards have a disconnected TTL level serial which can 524 generate some garbage that can lead to spurious false sysrq detects. 525 This option allows you to decide whether you want to enable the 526 magic SysRq key. 527 528config MAGIC_SYSRQ_SERIAL_SEQUENCE 529 string "Char sequence that enables magic SysRq over serial" 530 depends on MAGIC_SYSRQ_SERIAL 531 default "" 532 help 533 Specifies a sequence of characters that can follow BREAK to enable 534 SysRq on a serial console. 535 536 If unsure, leave an empty string and the option will not be enabled. 537 538config DEBUG_FS 539 bool "Debug Filesystem" 540 help 541 debugfs is a virtual file system that kernel developers use to put 542 debugging files into. Enable this option to be able to read and 543 write to these files. 544 545 For detailed documentation on the debugfs API, see 546 Documentation/filesystems/. 547 548 If unsure, say N. 549 550choice 551 prompt "Debugfs default access" 552 depends on DEBUG_FS 553 default DEBUG_FS_ALLOW_ALL 554 help 555 This selects the default access restrictions for debugfs. 556 It can be overridden with kernel command line option 557 debugfs=[on,no-mount,off]. The restrictions apply for API access 558 and filesystem registration. 559 560config DEBUG_FS_ALLOW_ALL 561 bool "Access normal" 562 help 563 No restrictions apply. Both API and filesystem registration 564 is on. This is the normal default operation. 565 566config DEBUG_FS_DISALLOW_MOUNT 567 bool "Do not register debugfs as filesystem" 568 help 569 The API is open but filesystem is not loaded. Clients can still do 570 their work and read with debug tools that do not need 571 debugfs filesystem. 572 573config DEBUG_FS_ALLOW_NONE 574 bool "No access" 575 help 576 Access is off. Clients get -PERM when trying to create nodes in 577 debugfs tree and debugfs is not registered as a filesystem. 578 Client can then back-off or continue without debugfs access. 579 580endchoice 581 582source "lib/Kconfig.kgdb" 583source "lib/Kconfig.ubsan" 584source "lib/Kconfig.kcsan" 585 586endmenu 587 588config DEBUG_KERNEL 589 bool "Kernel debugging" 590 help 591 Say Y here if you are developing drivers or trying to debug and 592 identify kernel problems. 593 594config DEBUG_MISC 595 bool "Miscellaneous debug code" 596 default DEBUG_KERNEL 597 depends on DEBUG_KERNEL 598 help 599 Say Y here if you need to enable miscellaneous debug code that should 600 be under a more specific debug option but isn't. 601 602 603menu "Memory Debugging" 604 605source "mm/Kconfig.debug" 606 607config DEBUG_OBJECTS 608 bool "Debug object operations" 609 depends on DEBUG_KERNEL 610 help 611 If you say Y here, additional code will be inserted into the 612 kernel to track the life time of various objects and validate 613 the operations on those objects. 614 615config DEBUG_OBJECTS_SELFTEST 616 bool "Debug objects selftest" 617 depends on DEBUG_OBJECTS 618 help 619 This enables the selftest of the object debug code. 620 621config DEBUG_OBJECTS_FREE 622 bool "Debug objects in freed memory" 623 depends on DEBUG_OBJECTS 624 help 625 This enables checks whether a k/v free operation frees an area 626 which contains an object which has not been deactivated 627 properly. This can make kmalloc/kfree-intensive workloads 628 much slower. 629 630config DEBUG_OBJECTS_TIMERS 631 bool "Debug timer objects" 632 depends on DEBUG_OBJECTS 633 help 634 If you say Y here, additional code will be inserted into the 635 timer routines to track the life time of timer objects and 636 validate the timer operations. 637 638config DEBUG_OBJECTS_WORK 639 bool "Debug work objects" 640 depends on DEBUG_OBJECTS 641 help 642 If you say Y here, additional code will be inserted into the 643 work queue routines to track the life time of work objects and 644 validate the work operations. 645 646config DEBUG_OBJECTS_RCU_HEAD 647 bool "Debug RCU callbacks objects" 648 depends on DEBUG_OBJECTS 649 help 650 Enable this to turn on debugging of RCU list heads (call_rcu() usage). 651 652config DEBUG_OBJECTS_PERCPU_COUNTER 653 bool "Debug percpu counter objects" 654 depends on DEBUG_OBJECTS 655 help 656 If you say Y here, additional code will be inserted into the 657 percpu counter routines to track the life time of percpu counter 658 objects and validate the percpu counter operations. 659 660config DEBUG_OBJECTS_ENABLE_DEFAULT 661 int "debug_objects bootup default value (0-1)" 662 range 0 1 663 default "1" 664 depends on DEBUG_OBJECTS 665 help 666 Debug objects boot parameter default value 667 668config DEBUG_SLAB 669 bool "Debug slab memory allocations" 670 depends on DEBUG_KERNEL && SLAB 671 help 672 Say Y here to have the kernel do limited verification on memory 673 allocation as well as poisoning memory on free to catch use of freed 674 memory. This can make kmalloc/kfree-intensive workloads much slower. 675 676config SLUB_DEBUG_ON 677 bool "SLUB debugging on by default" 678 depends on SLUB && SLUB_DEBUG 679 default n 680 help 681 Boot with debugging on by default. SLUB boots by default with 682 the runtime debug capabilities switched off. Enabling this is 683 equivalent to specifying the "slub_debug" parameter on boot. 684 There is no support for more fine grained debug control like 685 possible with slub_debug=xxx. SLUB debugging may be switched 686 off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying 687 "slub_debug=-". 688 689config SLUB_STATS 690 default n 691 bool "Enable SLUB performance statistics" 692 depends on SLUB && SYSFS 693 help 694 SLUB statistics are useful to debug SLUBs allocation behavior in 695 order find ways to optimize the allocator. This should never be 696 enabled for production use since keeping statistics slows down 697 the allocator by a few percentage points. The slabinfo command 698 supports the determination of the most active slabs to figure 699 out which slabs are relevant to a particular load. 700 Try running: slabinfo -DA 701 702config HAVE_DEBUG_KMEMLEAK 703 bool 704 705config DEBUG_KMEMLEAK 706 bool "Kernel memory leak detector" 707 depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK 708 select DEBUG_FS 709 select STACKTRACE if STACKTRACE_SUPPORT 710 select KALLSYMS 711 select CRC32 712 help 713 Say Y here if you want to enable the memory leak 714 detector. The memory allocation/freeing is traced in a way 715 similar to the Boehm's conservative garbage collector, the 716 difference being that the orphan objects are not freed but 717 only shown in /sys/kernel/debug/kmemleak. Enabling this 718 feature will introduce an overhead to memory 719 allocations. See Documentation/dev-tools/kmemleak.rst for more 720 details. 721 722 Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances 723 of finding leaks due to the slab objects poisoning. 724 725 In order to access the kmemleak file, debugfs needs to be 726 mounted (usually at /sys/kernel/debug). 727 728config DEBUG_KMEMLEAK_MEM_POOL_SIZE 729 int "Kmemleak memory pool size" 730 depends on DEBUG_KMEMLEAK 731 range 200 1000000 732 default 16000 733 help 734 Kmemleak must track all the memory allocations to avoid 735 reporting false positives. Since memory may be allocated or 736 freed before kmemleak is fully initialised, use a static pool 737 of metadata objects to track such callbacks. After kmemleak is 738 fully initialised, this memory pool acts as an emergency one 739 if slab allocations fail. 740 741config DEBUG_KMEMLEAK_TEST 742 tristate "Simple test for the kernel memory leak detector" 743 depends on DEBUG_KMEMLEAK && m 744 help 745 This option enables a module that explicitly leaks memory. 746 747 If unsure, say N. 748 749config DEBUG_KMEMLEAK_DEFAULT_OFF 750 bool "Default kmemleak to off" 751 depends on DEBUG_KMEMLEAK 752 help 753 Say Y here to disable kmemleak by default. It can then be enabled 754 on the command line via kmemleak=on. 755 756config DEBUG_KMEMLEAK_AUTO_SCAN 757 bool "Enable kmemleak auto scan thread on boot up" 758 default y 759 depends on DEBUG_KMEMLEAK 760 help 761 Depending on the cpu, kmemleak scan may be cpu intensive and can 762 stall user tasks at times. This option enables/disables automatic 763 kmemleak scan at boot up. 764 765 Say N here to disable kmemleak auto scan thread to stop automatic 766 scanning. Disabling this option disables automatic reporting of 767 memory leaks. 768 769 If unsure, say Y. 770 771config DEBUG_STACK_USAGE 772 bool "Stack utilization instrumentation" 773 depends on DEBUG_KERNEL && !IA64 774 help 775 Enables the display of the minimum amount of free stack which each 776 task has ever had available in the sysrq-T and sysrq-P debug output. 777 778 This option will slow down process creation somewhat. 779 780config SCHED_STACK_END_CHECK 781 bool "Detect stack corruption on calls to schedule()" 782 depends on DEBUG_KERNEL 783 default n 784 help 785 This option checks for a stack overrun on calls to schedule(). 786 If the stack end location is found to be over written always panic as 787 the content of the corrupted region can no longer be trusted. 788 This is to ensure no erroneous behaviour occurs which could result in 789 data corruption or a sporadic crash at a later stage once the region 790 is examined. The runtime overhead introduced is minimal. 791 792config ARCH_HAS_DEBUG_VM_PGTABLE 793 bool 794 help 795 An architecture should select this when it can successfully 796 build and run DEBUG_VM_PGTABLE. 797 798config DEBUG_VM 799 bool "Debug VM" 800 depends on DEBUG_KERNEL 801 help 802 Enable this to turn on extended checks in the virtual-memory system 803 that may impact performance. 804 805 If unsure, say N. 806 807config DEBUG_VM_VMACACHE 808 bool "Debug VMA caching" 809 depends on DEBUG_VM 810 help 811 Enable this to turn on VMA caching debug information. Doing so 812 can cause significant overhead, so only enable it in non-production 813 environments. 814 815 If unsure, say N. 816 817config DEBUG_VM_RB 818 bool "Debug VM red-black trees" 819 depends on DEBUG_VM 820 help 821 Enable VM red-black tree debugging information and extra validations. 822 823 If unsure, say N. 824 825config DEBUG_VM_PGFLAGS 826 bool "Debug page-flags operations" 827 depends on DEBUG_VM 828 help 829 Enables extra validation on page flags operations. 830 831 If unsure, say N. 832 833config DEBUG_VM_PGTABLE 834 bool "Debug arch page table for semantics compliance" 835 depends on MMU 836 depends on ARCH_HAS_DEBUG_VM_PGTABLE 837 default y if DEBUG_VM 838 help 839 This option provides a debug method which can be used to test 840 architecture page table helper functions on various platforms in 841 verifying if they comply with expected generic MM semantics. This 842 will help architecture code in making sure that any changes or 843 new additions of these helpers still conform to expected 844 semantics of the generic MM. Platforms will have to opt in for 845 this through ARCH_HAS_DEBUG_VM_PGTABLE. 846 847 If unsure, say N. 848 849config ARCH_HAS_DEBUG_VIRTUAL 850 bool 851 852config DEBUG_VIRTUAL 853 bool "Debug VM translations" 854 depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL 855 help 856 Enable some costly sanity checks in virtual to page code. This can 857 catch mistakes with virt_to_page() and friends. 858 859 If unsure, say N. 860 861config DEBUG_NOMMU_REGIONS 862 bool "Debug the global anon/private NOMMU mapping region tree" 863 depends on DEBUG_KERNEL && !MMU 864 help 865 This option causes the global tree of anonymous and private mapping 866 regions to be regularly checked for invalid topology. 867 868config DEBUG_MEMORY_INIT 869 bool "Debug memory initialisation" if EXPERT 870 default !EXPERT 871 help 872 Enable this for additional checks during memory initialisation. 873 The sanity checks verify aspects of the VM such as the memory model 874 and other information provided by the architecture. Verbose 875 information will be printed at KERN_DEBUG loglevel depending 876 on the mminit_loglevel= command-line option. 877 878 If unsure, say Y 879 880config MEMORY_NOTIFIER_ERROR_INJECT 881 tristate "Memory hotplug notifier error injection module" 882 depends on MEMORY_HOTPLUG && NOTIFIER_ERROR_INJECTION 883 help 884 This option provides the ability to inject artificial errors to 885 memory hotplug notifier chain callbacks. It is controlled through 886 debugfs interface under /sys/kernel/debug/notifier-error-inject/memory 887 888 If the notifier call chain should be failed with some events 889 notified, write the error code to "actions/<notifier event>/error". 890 891 Example: Inject memory hotplug offline error (-12 == -ENOMEM) 892 893 # cd /sys/kernel/debug/notifier-error-inject/memory 894 # echo -12 > actions/MEM_GOING_OFFLINE/error 895 # echo offline > /sys/devices/system/memory/memoryXXX/state 896 bash: echo: write error: Cannot allocate memory 897 898 To compile this code as a module, choose M here: the module will 899 be called memory-notifier-error-inject. 900 901 If unsure, say N. 902 903config DEBUG_PER_CPU_MAPS 904 bool "Debug access to per_cpu maps" 905 depends on DEBUG_KERNEL 906 depends on SMP 907 help 908 Say Y to verify that the per_cpu map being accessed has 909 been set up. This adds a fair amount of code to kernel memory 910 and decreases performance. 911 912 Say N if unsure. 913 914config DEBUG_KMAP_LOCAL 915 bool "Debug kmap_local temporary mappings" 916 depends on DEBUG_KERNEL && KMAP_LOCAL 917 help 918 This option enables additional error checking for the kmap_local 919 infrastructure. Disable for production use. 920 921config ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP 922 bool 923 924config DEBUG_KMAP_LOCAL_FORCE_MAP 925 bool "Enforce kmap_local temporary mappings" 926 depends on DEBUG_KERNEL && ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP 927 select KMAP_LOCAL 928 select DEBUG_KMAP_LOCAL 929 help 930 This option enforces temporary mappings through the kmap_local 931 mechanism for non-highmem pages and on non-highmem systems. 932 Disable this for production systems! 933 934config DEBUG_HIGHMEM 935 bool "Highmem debugging" 936 depends on DEBUG_KERNEL && HIGHMEM 937 select DEBUG_KMAP_LOCAL_FORCE_MAP if ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP 938 select DEBUG_KMAP_LOCAL 939 help 940 This option enables additional error checking for high memory 941 systems. Disable for production systems. 942 943config HAVE_DEBUG_STACKOVERFLOW 944 bool 945 946config DEBUG_STACKOVERFLOW 947 bool "Check for stack overflows" 948 depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW 949 help 950 Say Y here if you want to check for overflows of kernel, IRQ 951 and exception stacks (if your architecture uses them). This 952 option will show detailed messages if free stack space drops 953 below a certain limit. 954 955 These kinds of bugs usually occur when call-chains in the 956 kernel get too deep, especially when interrupts are 957 involved. 958 959 Use this in cases where you see apparently random memory 960 corruption, especially if it appears in 'struct thread_info' 961 962 If in doubt, say "N". 963 964source "lib/Kconfig.kasan" 965source "lib/Kconfig.kfence" 966 967endmenu # "Memory Debugging" 968 969config DEBUG_SHIRQ 970 bool "Debug shared IRQ handlers" 971 depends on DEBUG_KERNEL 972 help 973 Enable this to generate a spurious interrupt just before a shared 974 interrupt handler is deregistered (generating one when registering 975 is currently disabled). Drivers need to handle this correctly. Some 976 don't and need to be caught. 977 978menu "Debug Oops, Lockups and Hangs" 979 980config PANIC_ON_OOPS 981 bool "Panic on Oops" 982 help 983 Say Y here to enable the kernel to panic when it oopses. This 984 has the same effect as setting oops=panic on the kernel command 985 line. 986 987 This feature is useful to ensure that the kernel does not do 988 anything erroneous after an oops which could result in data 989 corruption or other issues. 990 991 Say N if unsure. 992 993config PANIC_ON_OOPS_VALUE 994 int 995 range 0 1 996 default 0 if !PANIC_ON_OOPS 997 default 1 if PANIC_ON_OOPS 998 999config PANIC_TIMEOUT 1000 int "panic timeout" 1001 default 0 1002 help 1003 Set the timeout value (in seconds) until a reboot occurs when 1004 the kernel panics. If n = 0, then we wait forever. A timeout 1005 value n > 0 will wait n seconds before rebooting, while a timeout 1006 value n < 0 will reboot immediately. 1007 1008config LOCKUP_DETECTOR 1009 bool 1010 1011config SOFTLOCKUP_DETECTOR 1012 bool "Detect Soft Lockups" 1013 depends on DEBUG_KERNEL && !S390 1014 select LOCKUP_DETECTOR 1015 help 1016 Say Y here to enable the kernel to act as a watchdog to detect 1017 soft lockups. 1018 1019 Softlockups are bugs that cause the kernel to loop in kernel 1020 mode for more than 20 seconds, without giving other tasks a 1021 chance to run. The current stack trace is displayed upon 1022 detection and the system will stay locked up. 1023 1024config BOOTPARAM_SOFTLOCKUP_PANIC 1025 bool "Panic (Reboot) On Soft Lockups" 1026 depends on SOFTLOCKUP_DETECTOR 1027 help 1028 Say Y here to enable the kernel to panic on "soft lockups", 1029 which are bugs that cause the kernel to loop in kernel 1030 mode for more than 20 seconds (configurable using the watchdog_thresh 1031 sysctl), without giving other tasks a chance to run. 1032 1033 The panic can be used in combination with panic_timeout, 1034 to cause the system to reboot automatically after a 1035 lockup has been detected. This feature is useful for 1036 high-availability systems that have uptime guarantees and 1037 where a lockup must be resolved ASAP. 1038 1039 Say N if unsure. 1040 1041config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE 1042 int 1043 depends on SOFTLOCKUP_DETECTOR 1044 range 0 1 1045 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC 1046 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC 1047 1048config HARDLOCKUP_DETECTOR_PERF 1049 bool 1050 select SOFTLOCKUP_DETECTOR 1051 1052# 1053# Enables a timestamp based low pass filter to compensate for perf based 1054# hard lockup detection which runs too fast due to turbo modes. 1055# 1056config HARDLOCKUP_CHECK_TIMESTAMP 1057 bool 1058 1059# 1060# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard 1061# lockup detector rather than the perf based detector. 1062# 1063config HARDLOCKUP_DETECTOR 1064 bool "Detect Hard Lockups" 1065 depends on DEBUG_KERNEL && !S390 1066 depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH 1067 select LOCKUP_DETECTOR 1068 select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF 1069 help 1070 Say Y here to enable the kernel to act as a watchdog to detect 1071 hard lockups. 1072 1073 Hardlockups are bugs that cause the CPU to loop in kernel mode 1074 for more than 10 seconds, without letting other interrupts have a 1075 chance to run. The current stack trace is displayed upon detection 1076 and the system will stay locked up. 1077 1078config BOOTPARAM_HARDLOCKUP_PANIC 1079 bool "Panic (Reboot) On Hard Lockups" 1080 depends on HARDLOCKUP_DETECTOR 1081 help 1082 Say Y here to enable the kernel to panic on "hard lockups", 1083 which are bugs that cause the kernel to loop in kernel 1084 mode with interrupts disabled for more than 10 seconds (configurable 1085 using the watchdog_thresh sysctl). 1086 1087 Say N if unsure. 1088 1089config BOOTPARAM_HARDLOCKUP_PANIC_VALUE 1090 int 1091 depends on HARDLOCKUP_DETECTOR 1092 range 0 1 1093 default 0 if !BOOTPARAM_HARDLOCKUP_PANIC 1094 default 1 if BOOTPARAM_HARDLOCKUP_PANIC 1095 1096config DETECT_HUNG_TASK 1097 bool "Detect Hung Tasks" 1098 depends on DEBUG_KERNEL 1099 default SOFTLOCKUP_DETECTOR 1100 help 1101 Say Y here to enable the kernel to detect "hung tasks", 1102 which are bugs that cause the task to be stuck in 1103 uninterruptible "D" state indefinitely. 1104 1105 When a hung task is detected, the kernel will print the 1106 current stack trace (which you should report), but the 1107 task will stay in uninterruptible state. If lockdep is 1108 enabled then all held locks will also be reported. This 1109 feature has negligible overhead. 1110 1111config DEFAULT_HUNG_TASK_TIMEOUT 1112 int "Default timeout for hung task detection (in seconds)" 1113 depends on DETECT_HUNG_TASK 1114 default 120 1115 help 1116 This option controls the default timeout (in seconds) used 1117 to determine when a task has become non-responsive and should 1118 be considered hung. 1119 1120 It can be adjusted at runtime via the kernel.hung_task_timeout_secs 1121 sysctl or by writing a value to 1122 /proc/sys/kernel/hung_task_timeout_secs. 1123 1124 A timeout of 0 disables the check. The default is two minutes. 1125 Keeping the default should be fine in most cases. 1126 1127config BOOTPARAM_HUNG_TASK_PANIC 1128 bool "Panic (Reboot) On Hung Tasks" 1129 depends on DETECT_HUNG_TASK 1130 help 1131 Say Y here to enable the kernel to panic on "hung tasks", 1132 which are bugs that cause the kernel to leave a task stuck 1133 in uninterruptible "D" state. 1134 1135 The panic can be used in combination with panic_timeout, 1136 to cause the system to reboot automatically after a 1137 hung task has been detected. This feature is useful for 1138 high-availability systems that have uptime guarantees and 1139 where a hung tasks must be resolved ASAP. 1140 1141 Say N if unsure. 1142 1143config BOOTPARAM_HUNG_TASK_PANIC_VALUE 1144 int 1145 depends on DETECT_HUNG_TASK 1146 range 0 1 1147 default 0 if !BOOTPARAM_HUNG_TASK_PANIC 1148 default 1 if BOOTPARAM_HUNG_TASK_PANIC 1149 1150config WQ_WATCHDOG 1151 bool "Detect Workqueue Stalls" 1152 depends on DEBUG_KERNEL 1153 help 1154 Say Y here to enable stall detection on workqueues. If a 1155 worker pool doesn't make forward progress on a pending work 1156 item for over a given amount of time, 30s by default, a 1157 warning message is printed along with dump of workqueue 1158 state. This can be configured through kernel parameter 1159 "workqueue.watchdog_thresh" and its sysfs counterpart. 1160 1161config TEST_LOCKUP 1162 tristate "Test module to generate lockups" 1163 depends on m 1164 help 1165 This builds the "test_lockup" module that helps to make sure 1166 that watchdogs and lockup detectors are working properly. 1167 1168 Depending on module parameters it could emulate soft or hard 1169 lockup, "hung task", or locking arbitrary lock for a long time. 1170 Also it could generate series of lockups with cooling-down periods. 1171 1172 If unsure, say N. 1173 1174endmenu # "Debug lockups and hangs" 1175 1176menu "Scheduler Debugging" 1177 1178config SCHED_DEBUG 1179 bool "Collect scheduler debugging info" 1180 depends on DEBUG_KERNEL && PROC_FS 1181 default y 1182 help 1183 If you say Y here, the /proc/sched_debug file will be provided 1184 that can help debug the scheduler. The runtime overhead of this 1185 option is minimal. 1186 1187config SCHED_INFO 1188 bool 1189 default n 1190 1191config SCHEDSTATS 1192 bool "Collect scheduler statistics" 1193 depends on DEBUG_KERNEL && PROC_FS 1194 select SCHED_INFO 1195 help 1196 If you say Y here, additional code will be inserted into the 1197 scheduler and related routines to collect statistics about 1198 scheduler behavior and provide them in /proc/schedstat. These 1199 stats may be useful for both tuning and debugging the scheduler 1200 If you aren't debugging the scheduler or trying to tune a specific 1201 application, you can say N to avoid the very slight overhead 1202 this adds. 1203 1204endmenu 1205 1206config DEBUG_TIMEKEEPING 1207 bool "Enable extra timekeeping sanity checking" 1208 help 1209 This option will enable additional timekeeping sanity checks 1210 which may be helpful when diagnosing issues where timekeeping 1211 problems are suspected. 1212 1213 This may include checks in the timekeeping hotpaths, so this 1214 option may have a (very small) performance impact to some 1215 workloads. 1216 1217 If unsure, say N. 1218 1219config DEBUG_PREEMPT 1220 bool "Debug preemptible kernel" 1221 depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT 1222 default y 1223 help 1224 If you say Y here then the kernel will use a debug variant of the 1225 commonly used smp_processor_id() function and will print warnings 1226 if kernel code uses it in a preemption-unsafe way. Also, the kernel 1227 will detect preemption count underflows. 1228 1229menu "Lock Debugging (spinlocks, mutexes, etc...)" 1230 1231config LOCK_DEBUGGING_SUPPORT 1232 bool 1233 depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT 1234 default y 1235 1236config PROVE_LOCKING 1237 bool "Lock debugging: prove locking correctness" 1238 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1239 select LOCKDEP 1240 select DEBUG_SPINLOCK 1241 select DEBUG_MUTEXES if !PREEMPT_RT 1242 select DEBUG_RT_MUTEXES if RT_MUTEXES 1243 select DEBUG_RWSEMS 1244 select DEBUG_WW_MUTEX_SLOWPATH 1245 select DEBUG_LOCK_ALLOC 1246 select PREEMPT_COUNT if !ARCH_NO_PREEMPT 1247 select TRACE_IRQFLAGS 1248 default n 1249 help 1250 This feature enables the kernel to prove that all locking 1251 that occurs in the kernel runtime is mathematically 1252 correct: that under no circumstance could an arbitrary (and 1253 not yet triggered) combination of observed locking 1254 sequences (on an arbitrary number of CPUs, running an 1255 arbitrary number of tasks and interrupt contexts) cause a 1256 deadlock. 1257 1258 In short, this feature enables the kernel to report locking 1259 related deadlocks before they actually occur. 1260 1261 The proof does not depend on how hard and complex a 1262 deadlock scenario would be to trigger: how many 1263 participant CPUs, tasks and irq-contexts would be needed 1264 for it to trigger. The proof also does not depend on 1265 timing: if a race and a resulting deadlock is possible 1266 theoretically (no matter how unlikely the race scenario 1267 is), it will be proven so and will immediately be 1268 reported by the kernel (once the event is observed that 1269 makes the deadlock theoretically possible). 1270 1271 If a deadlock is impossible (i.e. the locking rules, as 1272 observed by the kernel, are mathematically correct), the 1273 kernel reports nothing. 1274 1275 NOTE: this feature can also be enabled for rwlocks, mutexes 1276 and rwsems - in which case all dependencies between these 1277 different locking variants are observed and mapped too, and 1278 the proof of observed correctness is also maintained for an 1279 arbitrary combination of these separate locking variants. 1280 1281 For more details, see Documentation/locking/lockdep-design.rst. 1282 1283config PROVE_RAW_LOCK_NESTING 1284 bool "Enable raw_spinlock - spinlock nesting checks" 1285 depends on PROVE_LOCKING 1286 default n 1287 help 1288 Enable the raw_spinlock vs. spinlock nesting checks which ensure 1289 that the lock nesting rules for PREEMPT_RT enabled kernels are 1290 not violated. 1291 1292 NOTE: There are known nesting problems. So if you enable this 1293 option expect lockdep splats until these problems have been fully 1294 addressed which is work in progress. This config switch allows to 1295 identify and analyze these problems. It will be removed and the 1296 check permanently enabled once the main issues have been fixed. 1297 1298 If unsure, select N. 1299 1300config LOCK_STAT 1301 bool "Lock usage statistics" 1302 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1303 select LOCKDEP 1304 select DEBUG_SPINLOCK 1305 select DEBUG_MUTEXES if !PREEMPT_RT 1306 select DEBUG_RT_MUTEXES if RT_MUTEXES 1307 select DEBUG_LOCK_ALLOC 1308 default n 1309 help 1310 This feature enables tracking lock contention points 1311 1312 For more details, see Documentation/locking/lockstat.rst 1313 1314 This also enables lock events required by "perf lock", 1315 subcommand of perf. 1316 If you want to use "perf lock", you also need to turn on 1317 CONFIG_EVENT_TRACING. 1318 1319 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events. 1320 (CONFIG_LOCKDEP defines "acquire" and "release" events.) 1321 1322config DEBUG_RT_MUTEXES 1323 bool "RT Mutex debugging, deadlock detection" 1324 depends on DEBUG_KERNEL && RT_MUTEXES 1325 help 1326 This allows rt mutex semantics violations and rt mutex related 1327 deadlocks (lockups) to be detected and reported automatically. 1328 1329config DEBUG_SPINLOCK 1330 bool "Spinlock and rw-lock debugging: basic checks" 1331 depends on DEBUG_KERNEL 1332 select UNINLINE_SPIN_UNLOCK 1333 help 1334 Say Y here and build SMP to catch missing spinlock initialization 1335 and certain other kinds of spinlock errors commonly made. This is 1336 best used in conjunction with the NMI watchdog so that spinlock 1337 deadlocks are also debuggable. 1338 1339config DEBUG_MUTEXES 1340 bool "Mutex debugging: basic checks" 1341 depends on DEBUG_KERNEL && !PREEMPT_RT 1342 help 1343 This feature allows mutex semantics violations to be detected and 1344 reported. 1345 1346config DEBUG_WW_MUTEX_SLOWPATH 1347 bool "Wait/wound mutex debugging: Slowpath testing" 1348 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1349 select DEBUG_LOCK_ALLOC 1350 select DEBUG_SPINLOCK 1351 select DEBUG_MUTEXES if !PREEMPT_RT 1352 select DEBUG_RT_MUTEXES if PREEMPT_RT 1353 help 1354 This feature enables slowpath testing for w/w mutex users by 1355 injecting additional -EDEADLK wound/backoff cases. Together with 1356 the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this 1357 will test all possible w/w mutex interface abuse with the 1358 exception of simply not acquiring all the required locks. 1359 Note that this feature can introduce significant overhead, so 1360 it really should not be enabled in a production or distro kernel, 1361 even a debug kernel. If you are a driver writer, enable it. If 1362 you are a distro, do not. 1363 1364config DEBUG_RWSEMS 1365 bool "RW Semaphore debugging: basic checks" 1366 depends on DEBUG_KERNEL 1367 help 1368 This debugging feature allows mismatched rw semaphore locks 1369 and unlocks to be detected and reported. 1370 1371config DEBUG_LOCK_ALLOC 1372 bool "Lock debugging: detect incorrect freeing of live locks" 1373 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1374 select DEBUG_SPINLOCK 1375 select DEBUG_MUTEXES if !PREEMPT_RT 1376 select DEBUG_RT_MUTEXES if RT_MUTEXES 1377 select LOCKDEP 1378 help 1379 This feature will check whether any held lock (spinlock, rwlock, 1380 mutex or rwsem) is incorrectly freed by the kernel, via any of the 1381 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(), 1382 vfree(), etc.), whether a live lock is incorrectly reinitialized via 1383 spin_lock_init()/mutex_init()/etc., or whether there is any lock 1384 held during task exit. 1385 1386config LOCKDEP 1387 bool 1388 depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT 1389 select STACKTRACE 1390 select KALLSYMS 1391 select KALLSYMS_ALL 1392 1393config LOCKDEP_SMALL 1394 bool 1395 1396config LOCKDEP_BITS 1397 int "Bitsize for MAX_LOCKDEP_ENTRIES" 1398 depends on LOCKDEP && !LOCKDEP_SMALL 1399 range 10 30 1400 default 15 1401 help 1402 Try increasing this value if you hit "BUG: MAX_LOCKDEP_ENTRIES too low!" message. 1403 1404config LOCKDEP_CHAINS_BITS 1405 int "Bitsize for MAX_LOCKDEP_CHAINS" 1406 depends on LOCKDEP && !LOCKDEP_SMALL 1407 range 10 30 1408 default 16 1409 help 1410 Try increasing this value if you hit "BUG: MAX_LOCKDEP_CHAINS too low!" message. 1411 1412config LOCKDEP_STACK_TRACE_BITS 1413 int "Bitsize for MAX_STACK_TRACE_ENTRIES" 1414 depends on LOCKDEP && !LOCKDEP_SMALL 1415 range 10 30 1416 default 19 1417 help 1418 Try increasing this value if you hit "BUG: MAX_STACK_TRACE_ENTRIES too low!" message. 1419 1420config LOCKDEP_STACK_TRACE_HASH_BITS 1421 int "Bitsize for STACK_TRACE_HASH_SIZE" 1422 depends on LOCKDEP && !LOCKDEP_SMALL 1423 range 10 30 1424 default 14 1425 help 1426 Try increasing this value if you need large MAX_STACK_TRACE_ENTRIES. 1427 1428config LOCKDEP_CIRCULAR_QUEUE_BITS 1429 int "Bitsize for elements in circular_queue struct" 1430 depends on LOCKDEP 1431 range 10 30 1432 default 12 1433 help 1434 Try increasing this value if you hit "lockdep bfs error:-1" warning due to __cq_enqueue() failure. 1435 1436config DEBUG_LOCKDEP 1437 bool "Lock dependency engine debugging" 1438 depends on DEBUG_KERNEL && LOCKDEP 1439 select DEBUG_IRQFLAGS 1440 help 1441 If you say Y here, the lock dependency engine will do 1442 additional runtime checks to debug itself, at the price 1443 of more runtime overhead. 1444 1445config DEBUG_ATOMIC_SLEEP 1446 bool "Sleep inside atomic section checking" 1447 select PREEMPT_COUNT 1448 depends on DEBUG_KERNEL 1449 depends on !ARCH_NO_PREEMPT 1450 help 1451 If you say Y here, various routines which may sleep will become very 1452 noisy if they are called inside atomic sections: when a spinlock is 1453 held, inside an rcu read side critical section, inside preempt disabled 1454 sections, inside an interrupt, etc... 1455 1456config DEBUG_LOCKING_API_SELFTESTS 1457 bool "Locking API boot-time self-tests" 1458 depends on DEBUG_KERNEL 1459 help 1460 Say Y here if you want the kernel to run a short self-test during 1461 bootup. The self-test checks whether common types of locking bugs 1462 are detected by debugging mechanisms or not. (if you disable 1463 lock debugging then those bugs won't be detected of course.) 1464 The following locking APIs are covered: spinlocks, rwlocks, 1465 mutexes and rwsems. 1466 1467config LOCK_TORTURE_TEST 1468 tristate "torture tests for locking" 1469 depends on DEBUG_KERNEL 1470 select TORTURE_TEST 1471 help 1472 This option provides a kernel module that runs torture tests 1473 on kernel locking primitives. The kernel module may be built 1474 after the fact on the running kernel to be tested, if desired. 1475 1476 Say Y here if you want kernel locking-primitive torture tests 1477 to be built into the kernel. 1478 Say M if you want these torture tests to build as a module. 1479 Say N if you are unsure. 1480 1481config WW_MUTEX_SELFTEST 1482 tristate "Wait/wound mutex selftests" 1483 help 1484 This option provides a kernel module that runs tests on the 1485 on the struct ww_mutex locking API. 1486 1487 It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction 1488 with this test harness. 1489 1490 Say M if you want these self tests to build as a module. 1491 Say N if you are unsure. 1492 1493config SCF_TORTURE_TEST 1494 tristate "torture tests for smp_call_function*()" 1495 depends on DEBUG_KERNEL 1496 select TORTURE_TEST 1497 help 1498 This option provides a kernel module that runs torture tests 1499 on the smp_call_function() family of primitives. The kernel 1500 module may be built after the fact on the running kernel to 1501 be tested, if desired. 1502 1503config CSD_LOCK_WAIT_DEBUG 1504 bool "Debugging for csd_lock_wait(), called from smp_call_function*()" 1505 depends on DEBUG_KERNEL 1506 depends on 64BIT 1507 default n 1508 help 1509 This option enables debug prints when CPUs are slow to respond 1510 to the smp_call_function*() IPI wrappers. These debug prints 1511 include the IPI handler function currently executing (if any) 1512 and relevant stack traces. 1513 1514endmenu # lock debugging 1515 1516config TRACE_IRQFLAGS 1517 depends on TRACE_IRQFLAGS_SUPPORT 1518 bool 1519 help 1520 Enables hooks to interrupt enabling and disabling for 1521 either tracing or lock debugging. 1522 1523config TRACE_IRQFLAGS_NMI 1524 def_bool y 1525 depends on TRACE_IRQFLAGS 1526 depends on TRACE_IRQFLAGS_NMI_SUPPORT 1527 1528config DEBUG_IRQFLAGS 1529 bool "Debug IRQ flag manipulation" 1530 help 1531 Enables checks for potentially unsafe enabling or disabling of 1532 interrupts, such as calling raw_local_irq_restore() when interrupts 1533 are enabled. 1534 1535config STACKTRACE 1536 bool "Stack backtrace support" 1537 depends on STACKTRACE_SUPPORT 1538 help 1539 This option causes the kernel to create a /proc/pid/stack for 1540 every process, showing its current stack trace. 1541 It is also used by various kernel debugging features that require 1542 stack trace generation. 1543 1544config WARN_ALL_UNSEEDED_RANDOM 1545 bool "Warn for all uses of unseeded randomness" 1546 default n 1547 help 1548 Some parts of the kernel contain bugs relating to their use of 1549 cryptographically secure random numbers before it's actually possible 1550 to generate those numbers securely. This setting ensures that these 1551 flaws don't go unnoticed, by enabling a message, should this ever 1552 occur. This will allow people with obscure setups to know when things 1553 are going wrong, so that they might contact developers about fixing 1554 it. 1555 1556 Unfortunately, on some models of some architectures getting 1557 a fully seeded CRNG is extremely difficult, and so this can 1558 result in dmesg getting spammed for a surprisingly long 1559 time. This is really bad from a security perspective, and 1560 so architecture maintainers really need to do what they can 1561 to get the CRNG seeded sooner after the system is booted. 1562 However, since users cannot do anything actionable to 1563 address this, by default the kernel will issue only a single 1564 warning for the first use of unseeded randomness. 1565 1566 Say Y here if you want to receive warnings for all uses of 1567 unseeded randomness. This will be of use primarily for 1568 those developers interested in improving the security of 1569 Linux kernels running on their architecture (or 1570 subarchitecture). 1571 1572config DEBUG_KOBJECT 1573 bool "kobject debugging" 1574 depends on DEBUG_KERNEL 1575 help 1576 If you say Y here, some extra kobject debugging messages will be sent 1577 to the syslog. 1578 1579config DEBUG_KOBJECT_RELEASE 1580 bool "kobject release debugging" 1581 depends on DEBUG_OBJECTS_TIMERS 1582 help 1583 kobjects are reference counted objects. This means that their 1584 last reference count put is not predictable, and the kobject can 1585 live on past the point at which a driver decides to drop it's 1586 initial reference to the kobject gained on allocation. An 1587 example of this would be a struct device which has just been 1588 unregistered. 1589 1590 However, some buggy drivers assume that after such an operation, 1591 the memory backing the kobject can be immediately freed. This 1592 goes completely against the principles of a refcounted object. 1593 1594 If you say Y here, the kernel will delay the release of kobjects 1595 on the last reference count to improve the visibility of this 1596 kind of kobject release bug. 1597 1598config HAVE_DEBUG_BUGVERBOSE 1599 bool 1600 1601menu "Debug kernel data structures" 1602 1603config DEBUG_LIST 1604 bool "Debug linked list manipulation" 1605 depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION 1606 help 1607 Enable this to turn on extended checks in the linked-list 1608 walking routines. 1609 1610 If unsure, say N. 1611 1612config DEBUG_PLIST 1613 bool "Debug priority linked list manipulation" 1614 depends on DEBUG_KERNEL 1615 help 1616 Enable this to turn on extended checks in the priority-ordered 1617 linked-list (plist) walking routines. This checks the entire 1618 list multiple times during each manipulation. 1619 1620 If unsure, say N. 1621 1622config DEBUG_SG 1623 bool "Debug SG table operations" 1624 depends on DEBUG_KERNEL 1625 help 1626 Enable this to turn on checks on scatter-gather tables. This can 1627 help find problems with drivers that do not properly initialize 1628 their sg tables. 1629 1630 If unsure, say N. 1631 1632config DEBUG_NOTIFIERS 1633 bool "Debug notifier call chains" 1634 depends on DEBUG_KERNEL 1635 help 1636 Enable this to turn on sanity checking for notifier call chains. 1637 This is most useful for kernel developers to make sure that 1638 modules properly unregister themselves from notifier chains. 1639 This is a relatively cheap check but if you care about maximum 1640 performance, say N. 1641 1642config BUG_ON_DATA_CORRUPTION 1643 bool "Trigger a BUG when data corruption is detected" 1644 select DEBUG_LIST 1645 help 1646 Select this option if the kernel should BUG when it encounters 1647 data corruption in kernel memory structures when they get checked 1648 for validity. 1649 1650 If unsure, say N. 1651 1652endmenu 1653 1654config DEBUG_CREDENTIALS 1655 bool "Debug credential management" 1656 depends on DEBUG_KERNEL 1657 help 1658 Enable this to turn on some debug checking for credential 1659 management. The additional code keeps track of the number of 1660 pointers from task_structs to any given cred struct, and checks to 1661 see that this number never exceeds the usage count of the cred 1662 struct. 1663 1664 Furthermore, if SELinux is enabled, this also checks that the 1665 security pointer in the cred struct is never seen to be invalid. 1666 1667 If unsure, say N. 1668 1669source "kernel/rcu/Kconfig.debug" 1670 1671config DEBUG_WQ_FORCE_RR_CPU 1672 bool "Force round-robin CPU selection for unbound work items" 1673 depends on DEBUG_KERNEL 1674 default n 1675 help 1676 Workqueue used to implicitly guarantee that work items queued 1677 without explicit CPU specified are put on the local CPU. This 1678 guarantee is no longer true and while local CPU is still 1679 preferred work items may be put on foreign CPUs. Kernel 1680 parameter "workqueue.debug_force_rr_cpu" is added to force 1681 round-robin CPU selection to flush out usages which depend on the 1682 now broken guarantee. This config option enables the debug 1683 feature by default. When enabled, memory and cache locality will 1684 be impacted. 1685 1686config CPU_HOTPLUG_STATE_CONTROL 1687 bool "Enable CPU hotplug state control" 1688 depends on DEBUG_KERNEL 1689 depends on HOTPLUG_CPU 1690 default n 1691 help 1692 Allows to write steps between "offline" and "online" to the CPUs 1693 sysfs target file so states can be stepped granular. This is a debug 1694 option for now as the hotplug machinery cannot be stopped and 1695 restarted at arbitrary points yet. 1696 1697 Say N if your are unsure. 1698 1699config LATENCYTOP 1700 bool "Latency measuring infrastructure" 1701 depends on DEBUG_KERNEL 1702 depends on STACKTRACE_SUPPORT 1703 depends on PROC_FS 1704 depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86 1705 select KALLSYMS 1706 select KALLSYMS_ALL 1707 select STACKTRACE 1708 select SCHEDSTATS 1709 help 1710 Enable this option if you want to use the LatencyTOP tool 1711 to find out which userspace is blocking on what kernel operations. 1712 1713source "kernel/trace/Kconfig" 1714 1715config PROVIDE_OHCI1394_DMA_INIT 1716 bool "Remote debugging over FireWire early on boot" 1717 depends on PCI && X86 1718 help 1719 If you want to debug problems which hang or crash the kernel early 1720 on boot and the crashing machine has a FireWire port, you can use 1721 this feature to remotely access the memory of the crashed machine 1722 over FireWire. This employs remote DMA as part of the OHCI1394 1723 specification which is now the standard for FireWire controllers. 1724 1725 With remote DMA, you can monitor the printk buffer remotely using 1726 firescope and access all memory below 4GB using fireproxy from gdb. 1727 Even controlling a kernel debugger is possible using remote DMA. 1728 1729 Usage: 1730 1731 If ohci1394_dma=early is used as boot parameter, it will initialize 1732 all OHCI1394 controllers which are found in the PCI config space. 1733 1734 As all changes to the FireWire bus such as enabling and disabling 1735 devices cause a bus reset and thereby disable remote DMA for all 1736 devices, be sure to have the cable plugged and FireWire enabled on 1737 the debugging host before booting the debug target for debugging. 1738 1739 This code (~1k) is freed after boot. By then, the firewire stack 1740 in charge of the OHCI-1394 controllers should be used instead. 1741 1742 See Documentation/core-api/debugging-via-ohci1394.rst for more information. 1743 1744source "samples/Kconfig" 1745 1746config ARCH_HAS_DEVMEM_IS_ALLOWED 1747 bool 1748 1749config STRICT_DEVMEM 1750 bool "Filter access to /dev/mem" 1751 depends on MMU && DEVMEM 1752 depends on ARCH_HAS_DEVMEM_IS_ALLOWED || GENERIC_LIB_DEVMEM_IS_ALLOWED 1753 default y if PPC || X86 || ARM64 1754 help 1755 If this option is disabled, you allow userspace (root) access to all 1756 of memory, including kernel and userspace memory. Accidental 1757 access to this is obviously disastrous, but specific access can 1758 be used by people debugging the kernel. Note that with PAT support 1759 enabled, even in this case there are restrictions on /dev/mem 1760 use due to the cache aliasing requirements. 1761 1762 If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem 1763 file only allows userspace access to PCI space and the BIOS code and 1764 data regions. This is sufficient for dosemu and X and all common 1765 users of /dev/mem. 1766 1767 If in doubt, say Y. 1768 1769config IO_STRICT_DEVMEM 1770 bool "Filter I/O access to /dev/mem" 1771 depends on STRICT_DEVMEM 1772 help 1773 If this option is disabled, you allow userspace (root) access to all 1774 io-memory regardless of whether a driver is actively using that 1775 range. Accidental access to this is obviously disastrous, but 1776 specific access can be used by people debugging kernel drivers. 1777 1778 If this option is switched on, the /dev/mem file only allows 1779 userspace access to *idle* io-memory ranges (see /proc/iomem) This 1780 may break traditional users of /dev/mem (dosemu, legacy X, etc...) 1781 if the driver using a given range cannot be disabled. 1782 1783 If in doubt, say Y. 1784 1785menu "$(SRCARCH) Debugging" 1786 1787source "arch/$(SRCARCH)/Kconfig.debug" 1788 1789endmenu 1790 1791menu "Kernel Testing and Coverage" 1792 1793source "lib/kunit/Kconfig" 1794 1795config NOTIFIER_ERROR_INJECTION 1796 tristate "Notifier error injection" 1797 depends on DEBUG_KERNEL 1798 select DEBUG_FS 1799 help 1800 This option provides the ability to inject artificial errors to 1801 specified notifier chain callbacks. It is useful to test the error 1802 handling of notifier call chain failures. 1803 1804 Say N if unsure. 1805 1806config PM_NOTIFIER_ERROR_INJECT 1807 tristate "PM notifier error injection module" 1808 depends on PM && NOTIFIER_ERROR_INJECTION 1809 default m if PM_DEBUG 1810 help 1811 This option provides the ability to inject artificial errors to 1812 PM notifier chain callbacks. It is controlled through debugfs 1813 interface /sys/kernel/debug/notifier-error-inject/pm 1814 1815 If the notifier call chain should be failed with some events 1816 notified, write the error code to "actions/<notifier event>/error". 1817 1818 Example: Inject PM suspend error (-12 = -ENOMEM) 1819 1820 # cd /sys/kernel/debug/notifier-error-inject/pm/ 1821 # echo -12 > actions/PM_SUSPEND_PREPARE/error 1822 # echo mem > /sys/power/state 1823 bash: echo: write error: Cannot allocate memory 1824 1825 To compile this code as a module, choose M here: the module will 1826 be called pm-notifier-error-inject. 1827 1828 If unsure, say N. 1829 1830config OF_RECONFIG_NOTIFIER_ERROR_INJECT 1831 tristate "OF reconfig notifier error injection module" 1832 depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION 1833 help 1834 This option provides the ability to inject artificial errors to 1835 OF reconfig notifier chain callbacks. It is controlled 1836 through debugfs interface under 1837 /sys/kernel/debug/notifier-error-inject/OF-reconfig/ 1838 1839 If the notifier call chain should be failed with some events 1840 notified, write the error code to "actions/<notifier event>/error". 1841 1842 To compile this code as a module, choose M here: the module will 1843 be called of-reconfig-notifier-error-inject. 1844 1845 If unsure, say N. 1846 1847config NETDEV_NOTIFIER_ERROR_INJECT 1848 tristate "Netdev notifier error injection module" 1849 depends on NET && NOTIFIER_ERROR_INJECTION 1850 help 1851 This option provides the ability to inject artificial errors to 1852 netdevice notifier chain callbacks. It is controlled through debugfs 1853 interface /sys/kernel/debug/notifier-error-inject/netdev 1854 1855 If the notifier call chain should be failed with some events 1856 notified, write the error code to "actions/<notifier event>/error". 1857 1858 Example: Inject netdevice mtu change error (-22 = -EINVAL) 1859 1860 # cd /sys/kernel/debug/notifier-error-inject/netdev 1861 # echo -22 > actions/NETDEV_CHANGEMTU/error 1862 # ip link set eth0 mtu 1024 1863 RTNETLINK answers: Invalid argument 1864 1865 To compile this code as a module, choose M here: the module will 1866 be called netdev-notifier-error-inject. 1867 1868 If unsure, say N. 1869 1870config FUNCTION_ERROR_INJECTION 1871 def_bool y 1872 depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES 1873 1874config FAULT_INJECTION 1875 bool "Fault-injection framework" 1876 depends on DEBUG_KERNEL 1877 help 1878 Provide fault-injection framework. 1879 For more details, see Documentation/fault-injection/. 1880 1881config FAILSLAB 1882 bool "Fault-injection capability for kmalloc" 1883 depends on FAULT_INJECTION 1884 depends on SLAB || SLUB 1885 help 1886 Provide fault-injection capability for kmalloc. 1887 1888config FAIL_PAGE_ALLOC 1889 bool "Fault-injection capability for alloc_pages()" 1890 depends on FAULT_INJECTION 1891 help 1892 Provide fault-injection capability for alloc_pages(). 1893 1894config FAULT_INJECTION_USERCOPY 1895 bool "Fault injection capability for usercopy functions" 1896 depends on FAULT_INJECTION 1897 help 1898 Provides fault-injection capability to inject failures 1899 in usercopy functions (copy_from_user(), get_user(), ...). 1900 1901config FAIL_MAKE_REQUEST 1902 bool "Fault-injection capability for disk IO" 1903 depends on FAULT_INJECTION && BLOCK 1904 help 1905 Provide fault-injection capability for disk IO. 1906 1907config FAIL_IO_TIMEOUT 1908 bool "Fault-injection capability for faking disk interrupts" 1909 depends on FAULT_INJECTION && BLOCK 1910 help 1911 Provide fault-injection capability on end IO handling. This 1912 will make the block layer "forget" an interrupt as configured, 1913 thus exercising the error handling. 1914 1915 Only works with drivers that use the generic timeout handling, 1916 for others it won't do anything. 1917 1918config FAIL_FUTEX 1919 bool "Fault-injection capability for futexes" 1920 select DEBUG_FS 1921 depends on FAULT_INJECTION && FUTEX 1922 help 1923 Provide fault-injection capability for futexes. 1924 1925config FAULT_INJECTION_DEBUG_FS 1926 bool "Debugfs entries for fault-injection capabilities" 1927 depends on FAULT_INJECTION && SYSFS && DEBUG_FS 1928 help 1929 Enable configuration of fault-injection capabilities via debugfs. 1930 1931config FAIL_FUNCTION 1932 bool "Fault-injection capability for functions" 1933 depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION 1934 help 1935 Provide function-based fault-injection capability. 1936 This will allow you to override a specific function with a return 1937 with given return value. As a result, function caller will see 1938 an error value and have to handle it. This is useful to test the 1939 error handling in various subsystems. 1940 1941config FAIL_MMC_REQUEST 1942 bool "Fault-injection capability for MMC IO" 1943 depends on FAULT_INJECTION_DEBUG_FS && MMC 1944 help 1945 Provide fault-injection capability for MMC IO. 1946 This will make the mmc core return data errors. This is 1947 useful to test the error handling in the mmc block device 1948 and to test how the mmc host driver handles retries from 1949 the block device. 1950 1951config FAIL_SUNRPC 1952 bool "Fault-injection capability for SunRPC" 1953 depends on FAULT_INJECTION_DEBUG_FS && SUNRPC_DEBUG 1954 help 1955 Provide fault-injection capability for SunRPC and 1956 its consumers. 1957 1958config FAULT_INJECTION_STACKTRACE_FILTER 1959 bool "stacktrace filter for fault-injection capabilities" 1960 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT 1961 depends on !X86_64 1962 select STACKTRACE 1963 depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86 1964 help 1965 Provide stacktrace filter for fault-injection capabilities 1966 1967config ARCH_HAS_KCOV 1968 bool 1969 help 1970 An architecture should select this when it can successfully 1971 build and run with CONFIG_KCOV. This typically requires 1972 disabling instrumentation for some early boot code. 1973 1974config CC_HAS_SANCOV_TRACE_PC 1975 def_bool $(cc-option,-fsanitize-coverage=trace-pc) 1976 1977 1978config KCOV 1979 bool "Code coverage for fuzzing" 1980 depends on ARCH_HAS_KCOV 1981 depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS 1982 select DEBUG_FS 1983 select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC 1984 help 1985 KCOV exposes kernel code coverage information in a form suitable 1986 for coverage-guided fuzzing (randomized testing). 1987 1988 If RANDOMIZE_BASE is enabled, PC values will not be stable across 1989 different machines and across reboots. If you need stable PC values, 1990 disable RANDOMIZE_BASE. 1991 1992 For more details, see Documentation/dev-tools/kcov.rst. 1993 1994config KCOV_ENABLE_COMPARISONS 1995 bool "Enable comparison operands collection by KCOV" 1996 depends on KCOV 1997 depends on $(cc-option,-fsanitize-coverage=trace-cmp) 1998 help 1999 KCOV also exposes operands of every comparison in the instrumented 2000 code along with operand sizes and PCs of the comparison instructions. 2001 These operands can be used by fuzzing engines to improve the quality 2002 of fuzzing coverage. 2003 2004config KCOV_INSTRUMENT_ALL 2005 bool "Instrument all code by default" 2006 depends on KCOV 2007 default y 2008 help 2009 If you are doing generic system call fuzzing (like e.g. syzkaller), 2010 then you will want to instrument the whole kernel and you should 2011 say y here. If you are doing more targeted fuzzing (like e.g. 2012 filesystem fuzzing with AFL) then you will want to enable coverage 2013 for more specific subsets of files, and should say n here. 2014 2015config KCOV_IRQ_AREA_SIZE 2016 hex "Size of interrupt coverage collection area in words" 2017 depends on KCOV 2018 default 0x40000 2019 help 2020 KCOV uses preallocated per-cpu areas to collect coverage from 2021 soft interrupts. This specifies the size of those areas in the 2022 number of unsigned long words. 2023 2024menuconfig RUNTIME_TESTING_MENU 2025 bool "Runtime Testing" 2026 def_bool y 2027 2028if RUNTIME_TESTING_MENU 2029 2030config LKDTM 2031 tristate "Linux Kernel Dump Test Tool Module" 2032 depends on DEBUG_FS 2033 help 2034 This module enables testing of the different dumping mechanisms by 2035 inducing system failures at predefined crash points. 2036 If you don't need it: say N 2037 Choose M here to compile this code as a module. The module will be 2038 called lkdtm. 2039 2040 Documentation on how to use the module can be found in 2041 Documentation/fault-injection/provoke-crashes.rst 2042 2043config TEST_LIST_SORT 2044 tristate "Linked list sorting test" if !KUNIT_ALL_TESTS 2045 depends on KUNIT 2046 default KUNIT_ALL_TESTS 2047 help 2048 Enable this to turn on 'list_sort()' function test. This test is 2049 executed only once during system boot (so affects only boot time), 2050 or at module load time. 2051 2052 If unsure, say N. 2053 2054config TEST_MIN_HEAP 2055 tristate "Min heap test" 2056 depends on DEBUG_KERNEL || m 2057 help 2058 Enable this to turn on min heap function tests. This test is 2059 executed only once during system boot (so affects only boot time), 2060 or at module load time. 2061 2062 If unsure, say N. 2063 2064config TEST_SORT 2065 tristate "Array-based sort test" if !KUNIT_ALL_TESTS 2066 depends on KUNIT 2067 default KUNIT_ALL_TESTS 2068 help 2069 This option enables the self-test function of 'sort()' at boot, 2070 or at module load time. 2071 2072 If unsure, say N. 2073 2074config TEST_DIV64 2075 tristate "64bit/32bit division and modulo test" 2076 depends on DEBUG_KERNEL || m 2077 help 2078 Enable this to turn on 'do_div()' function test. This test is 2079 executed only once during system boot (so affects only boot time), 2080 or at module load time. 2081 2082 If unsure, say N. 2083 2084config KPROBES_SANITY_TEST 2085 tristate "Kprobes sanity tests" 2086 depends on DEBUG_KERNEL 2087 depends on KPROBES 2088 depends on KUNIT 2089 help 2090 This option provides for testing basic kprobes functionality on 2091 boot. Samples of kprobe and kretprobe are inserted and 2092 verified for functionality. 2093 2094 Say N if you are unsure. 2095 2096config BACKTRACE_SELF_TEST 2097 tristate "Self test for the backtrace code" 2098 depends on DEBUG_KERNEL 2099 help 2100 This option provides a kernel module that can be used to test 2101 the kernel stack backtrace code. This option is not useful 2102 for distributions or general kernels, but only for kernel 2103 developers working on architecture code. 2104 2105 Note that if you want to also test saved backtraces, you will 2106 have to enable STACKTRACE as well. 2107 2108 Say N if you are unsure. 2109 2110config RBTREE_TEST 2111 tristate "Red-Black tree test" 2112 depends on DEBUG_KERNEL 2113 help 2114 A benchmark measuring the performance of the rbtree library. 2115 Also includes rbtree invariant checks. 2116 2117config REED_SOLOMON_TEST 2118 tristate "Reed-Solomon library test" 2119 depends on DEBUG_KERNEL || m 2120 select REED_SOLOMON 2121 select REED_SOLOMON_ENC16 2122 select REED_SOLOMON_DEC16 2123 help 2124 This option enables the self-test function of rslib at boot, 2125 or at module load time. 2126 2127 If unsure, say N. 2128 2129config INTERVAL_TREE_TEST 2130 tristate "Interval tree test" 2131 depends on DEBUG_KERNEL 2132 select INTERVAL_TREE 2133 help 2134 A benchmark measuring the performance of the interval tree library 2135 2136config PERCPU_TEST 2137 tristate "Per cpu operations test" 2138 depends on m && DEBUG_KERNEL 2139 help 2140 Enable this option to build test module which validates per-cpu 2141 operations. 2142 2143 If unsure, say N. 2144 2145config ATOMIC64_SELFTEST 2146 tristate "Perform an atomic64_t self-test" 2147 help 2148 Enable this option to test the atomic64_t functions at boot or 2149 at module load time. 2150 2151 If unsure, say N. 2152 2153config ASYNC_RAID6_TEST 2154 tristate "Self test for hardware accelerated raid6 recovery" 2155 depends on ASYNC_RAID6_RECOV 2156 select ASYNC_MEMCPY 2157 help 2158 This is a one-shot self test that permutes through the 2159 recovery of all the possible two disk failure scenarios for a 2160 N-disk array. Recovery is performed with the asynchronous 2161 raid6 recovery routines, and will optionally use an offload 2162 engine if one is available. 2163 2164 If unsure, say N. 2165 2166config TEST_HEXDUMP 2167 tristate "Test functions located in the hexdump module at runtime" 2168 2169config STRING_SELFTEST 2170 tristate "Test string functions at runtime" 2171 2172config TEST_STRING_HELPERS 2173 tristate "Test functions located in the string_helpers module at runtime" 2174 2175config TEST_STRSCPY 2176 tristate "Test strscpy*() family of functions at runtime" 2177 2178config TEST_KSTRTOX 2179 tristate "Test kstrto*() family of functions at runtime" 2180 2181config TEST_PRINTF 2182 tristate "Test printf() family of functions at runtime" 2183 2184config TEST_SCANF 2185 tristate "Test scanf() family of functions at runtime" 2186 2187config TEST_BITMAP 2188 tristate "Test bitmap_*() family of functions at runtime" 2189 help 2190 Enable this option to test the bitmap functions at boot. 2191 2192 If unsure, say N. 2193 2194config TEST_UUID 2195 tristate "Test functions located in the uuid module at runtime" 2196 2197config TEST_XARRAY 2198 tristate "Test the XArray code at runtime" 2199 2200config TEST_OVERFLOW 2201 tristate "Test check_*_overflow() functions at runtime" 2202 2203config TEST_RHASHTABLE 2204 tristate "Perform selftest on resizable hash table" 2205 help 2206 Enable this option to test the rhashtable functions at boot. 2207 2208 If unsure, say N. 2209 2210config TEST_HASH 2211 tristate "Perform selftest on hash functions" 2212 help 2213 Enable this option to test the kernel's integer (<linux/hash.h>), 2214 string (<linux/stringhash.h>), and siphash (<linux/siphash.h>) 2215 hash functions on boot (or module load). 2216 2217 This is intended to help people writing architecture-specific 2218 optimized versions. If unsure, say N. 2219 2220config TEST_IDA 2221 tristate "Perform selftest on IDA functions" 2222 2223config TEST_PARMAN 2224 tristate "Perform selftest on priority array manager" 2225 depends on PARMAN 2226 help 2227 Enable this option to test priority array manager on boot 2228 (or module load). 2229 2230 If unsure, say N. 2231 2232config TEST_IRQ_TIMINGS 2233 bool "IRQ timings selftest" 2234 depends on IRQ_TIMINGS 2235 help 2236 Enable this option to test the irq timings code on boot. 2237 2238 If unsure, say N. 2239 2240config TEST_LKM 2241 tristate "Test module loading with 'hello world' module" 2242 depends on m 2243 help 2244 This builds the "test_module" module that emits "Hello, world" 2245 on printk when loaded. It is designed to be used for basic 2246 evaluation of the module loading subsystem (for example when 2247 validating module verification). It lacks any extra dependencies, 2248 and will not normally be loaded by the system unless explicitly 2249 requested by name. 2250 2251 If unsure, say N. 2252 2253config TEST_BITOPS 2254 tristate "Test module for compilation of bitops operations" 2255 depends on m 2256 help 2257 This builds the "test_bitops" module that is much like the 2258 TEST_LKM module except that it does a basic exercise of the 2259 set/clear_bit macros and get_count_order/long to make sure there are 2260 no compiler warnings from C=1 sparse checker or -Wextra 2261 compilations. It has no dependencies and doesn't run or load unless 2262 explicitly requested by name. for example: modprobe test_bitops. 2263 2264 If unsure, say N. 2265 2266config TEST_VMALLOC 2267 tristate "Test module for stress/performance analysis of vmalloc allocator" 2268 default n 2269 depends on MMU 2270 depends on m 2271 help 2272 This builds the "test_vmalloc" module that should be used for 2273 stress and performance analysis. So, any new change for vmalloc 2274 subsystem can be evaluated from performance and stability point 2275 of view. 2276 2277 If unsure, say N. 2278 2279config TEST_USER_COPY 2280 tristate "Test user/kernel boundary protections" 2281 depends on m 2282 help 2283 This builds the "test_user_copy" module that runs sanity checks 2284 on the copy_to/from_user infrastructure, making sure basic 2285 user/kernel boundary testing is working. If it fails to load, 2286 a regression has been detected in the user/kernel memory boundary 2287 protections. 2288 2289 If unsure, say N. 2290 2291config TEST_BPF 2292 tristate "Test BPF filter functionality" 2293 depends on m && NET 2294 help 2295 This builds the "test_bpf" module that runs various test vectors 2296 against the BPF interpreter or BPF JIT compiler depending on the 2297 current setting. This is in particular useful for BPF JIT compiler 2298 development, but also to run regression tests against changes in 2299 the interpreter code. It also enables test stubs for eBPF maps and 2300 verifier used by user space verifier testsuite. 2301 2302 If unsure, say N. 2303 2304config TEST_BLACKHOLE_DEV 2305 tristate "Test blackhole netdev functionality" 2306 depends on m && NET 2307 help 2308 This builds the "test_blackhole_dev" module that validates the 2309 data path through this blackhole netdev. 2310 2311 If unsure, say N. 2312 2313config FIND_BIT_BENCHMARK 2314 tristate "Test find_bit functions" 2315 help 2316 This builds the "test_find_bit" module that measure find_*_bit() 2317 functions performance. 2318 2319 If unsure, say N. 2320 2321config TEST_FIRMWARE 2322 tristate "Test firmware loading via userspace interface" 2323 depends on FW_LOADER 2324 help 2325 This builds the "test_firmware" module that creates a userspace 2326 interface for testing firmware loading. This can be used to 2327 control the triggering of firmware loading without needing an 2328 actual firmware-using device. The contents can be rechecked by 2329 userspace. 2330 2331 If unsure, say N. 2332 2333config TEST_SYSCTL 2334 tristate "sysctl test driver" 2335 depends on PROC_SYSCTL 2336 help 2337 This builds the "test_sysctl" module. This driver enables to test the 2338 proc sysctl interfaces available to drivers safely without affecting 2339 production knobs which might alter system functionality. 2340 2341 If unsure, say N. 2342 2343config BITFIELD_KUNIT 2344 tristate "KUnit test bitfield functions at runtime" 2345 depends on KUNIT 2346 help 2347 Enable this option to test the bitfield functions at boot. 2348 2349 KUnit tests run during boot and output the results to the debug log 2350 in TAP format (http://testanything.org/). Only useful for kernel devs 2351 running the KUnit test harness, and not intended for inclusion into a 2352 production build. 2353 2354 For more information on KUnit and unit tests in general please refer 2355 to the KUnit documentation in Documentation/dev-tools/kunit/. 2356 2357 If unsure, say N. 2358 2359config RESOURCE_KUNIT_TEST 2360 tristate "KUnit test for resource API" 2361 depends on KUNIT 2362 help 2363 This builds the resource API unit test. 2364 Tests the logic of API provided by resource.c and ioport.h. 2365 For more information on KUnit and unit tests in general please refer 2366 to the KUnit documentation in Documentation/dev-tools/kunit/. 2367 2368 If unsure, say N. 2369 2370config SYSCTL_KUNIT_TEST 2371 tristate "KUnit test for sysctl" if !KUNIT_ALL_TESTS 2372 depends on KUNIT 2373 default KUNIT_ALL_TESTS 2374 help 2375 This builds the proc sysctl unit test, which runs on boot. 2376 Tests the API contract and implementation correctness of sysctl. 2377 For more information on KUnit and unit tests in general please refer 2378 to the KUnit documentation in Documentation/dev-tools/kunit/. 2379 2380 If unsure, say N. 2381 2382config LIST_KUNIT_TEST 2383 tristate "KUnit Test for Kernel Linked-list structures" if !KUNIT_ALL_TESTS 2384 depends on KUNIT 2385 default KUNIT_ALL_TESTS 2386 help 2387 This builds the linked list KUnit test suite. 2388 It tests that the API and basic functionality of the list_head type 2389 and associated macros. 2390 2391 KUnit tests run during boot and output the results to the debug log 2392 in TAP format (https://testanything.org/). Only useful for kernel devs 2393 running the KUnit test harness, and not intended for inclusion into a 2394 production build. 2395 2396 For more information on KUnit and unit tests in general please refer 2397 to the KUnit documentation in Documentation/dev-tools/kunit/. 2398 2399 If unsure, say N. 2400 2401config LINEAR_RANGES_TEST 2402 tristate "KUnit test for linear_ranges" 2403 depends on KUNIT 2404 select LINEAR_RANGES 2405 help 2406 This builds the linear_ranges unit test, which runs on boot. 2407 Tests the linear_ranges logic correctness. 2408 For more information on KUnit and unit tests in general please refer 2409 to the KUnit documentation in Documentation/dev-tools/kunit/. 2410 2411 If unsure, say N. 2412 2413config CMDLINE_KUNIT_TEST 2414 tristate "KUnit test for cmdline API" 2415 depends on KUNIT 2416 help 2417 This builds the cmdline API unit test. 2418 Tests the logic of API provided by cmdline.c. 2419 For more information on KUnit and unit tests in general please refer 2420 to the KUnit documentation in Documentation/dev-tools/kunit/. 2421 2422 If unsure, say N. 2423 2424config BITS_TEST 2425 tristate "KUnit test for bits.h" 2426 depends on KUNIT 2427 help 2428 This builds the bits unit test. 2429 Tests the logic of macros defined in bits.h. 2430 For more information on KUnit and unit tests in general please refer 2431 to the KUnit documentation in Documentation/dev-tools/kunit/. 2432 2433 If unsure, say N. 2434 2435config SLUB_KUNIT_TEST 2436 tristate "KUnit test for SLUB cache error detection" if !KUNIT_ALL_TESTS 2437 depends on SLUB_DEBUG && KUNIT 2438 default KUNIT_ALL_TESTS 2439 help 2440 This builds SLUB allocator unit test. 2441 Tests SLUB cache debugging functionality. 2442 For more information on KUnit and unit tests in general please refer 2443 to the KUnit documentation in Documentation/dev-tools/kunit/. 2444 2445 If unsure, say N. 2446 2447config RATIONAL_KUNIT_TEST 2448 tristate "KUnit test for rational.c" if !KUNIT_ALL_TESTS 2449 depends on KUNIT && RATIONAL 2450 default KUNIT_ALL_TESTS 2451 help 2452 This builds the rational math unit test. 2453 For more information on KUnit and unit tests in general please refer 2454 to the KUnit documentation in Documentation/dev-tools/kunit/. 2455 2456 If unsure, say N. 2457 2458config MEMCPY_KUNIT_TEST 2459 tristate "Test memcpy(), memmove(), and memset() functions at runtime" if !KUNIT_ALL_TESTS 2460 depends on KUNIT 2461 default KUNIT_ALL_TESTS 2462 help 2463 Builds unit tests for memcpy(), memmove(), and memset() functions. 2464 For more information on KUnit and unit tests in general please refer 2465 to the KUnit documentation in Documentation/dev-tools/kunit/. 2466 2467 If unsure, say N. 2468 2469config TEST_UDELAY 2470 tristate "udelay test driver" 2471 help 2472 This builds the "udelay_test" module that helps to make sure 2473 that udelay() is working properly. 2474 2475 If unsure, say N. 2476 2477config TEST_STATIC_KEYS 2478 tristate "Test static keys" 2479 depends on m 2480 help 2481 Test the static key interfaces. 2482 2483 If unsure, say N. 2484 2485config TEST_KMOD 2486 tristate "kmod stress tester" 2487 depends on m 2488 depends on NETDEVICES && NET_CORE && INET # for TUN 2489 depends on BLOCK 2490 select TEST_LKM 2491 select XFS_FS 2492 select TUN 2493 select BTRFS_FS 2494 help 2495 Test the kernel's module loading mechanism: kmod. kmod implements 2496 support to load modules using the Linux kernel's usermode helper. 2497 This test provides a series of tests against kmod. 2498 2499 Although technically you can either build test_kmod as a module or 2500 into the kernel we disallow building it into the kernel since 2501 it stress tests request_module() and this will very likely cause 2502 some issues by taking over precious threads available from other 2503 module load requests, ultimately this could be fatal. 2504 2505 To run tests run: 2506 2507 tools/testing/selftests/kmod/kmod.sh --help 2508 2509 If unsure, say N. 2510 2511config TEST_DEBUG_VIRTUAL 2512 tristate "Test CONFIG_DEBUG_VIRTUAL feature" 2513 depends on DEBUG_VIRTUAL 2514 help 2515 Test the kernel's ability to detect incorrect calls to 2516 virt_to_phys() done against the non-linear part of the 2517 kernel's virtual address map. 2518 2519 If unsure, say N. 2520 2521config TEST_MEMCAT_P 2522 tristate "Test memcat_p() helper function" 2523 help 2524 Test the memcat_p() helper for correctly merging two 2525 pointer arrays together. 2526 2527 If unsure, say N. 2528 2529config TEST_LIVEPATCH 2530 tristate "Test livepatching" 2531 default n 2532 depends on DYNAMIC_DEBUG 2533 depends on LIVEPATCH 2534 depends on m 2535 help 2536 Test kernel livepatching features for correctness. The tests will 2537 load test modules that will be livepatched in various scenarios. 2538 2539 To run all the livepatching tests: 2540 2541 make -C tools/testing/selftests TARGETS=livepatch run_tests 2542 2543 Alternatively, individual tests may be invoked: 2544 2545 tools/testing/selftests/livepatch/test-callbacks.sh 2546 tools/testing/selftests/livepatch/test-livepatch.sh 2547 tools/testing/selftests/livepatch/test-shadow-vars.sh 2548 2549 If unsure, say N. 2550 2551config TEST_OBJAGG 2552 tristate "Perform selftest on object aggreration manager" 2553 default n 2554 depends on OBJAGG 2555 help 2556 Enable this option to test object aggregation manager on boot 2557 (or module load). 2558 2559 2560config TEST_STACKINIT 2561 tristate "Test level of stack variable initialization" 2562 help 2563 Test if the kernel is zero-initializing stack variables and 2564 padding. Coverage is controlled by compiler flags, 2565 CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF, 2566 or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL. 2567 2568 If unsure, say N. 2569 2570config TEST_MEMINIT 2571 tristate "Test heap/page initialization" 2572 help 2573 Test if the kernel is zero-initializing heap and page allocations. 2574 This can be useful to test init_on_alloc and init_on_free features. 2575 2576 If unsure, say N. 2577 2578config TEST_HMM 2579 tristate "Test HMM (Heterogeneous Memory Management)" 2580 depends on TRANSPARENT_HUGEPAGE 2581 depends on DEVICE_PRIVATE 2582 select HMM_MIRROR 2583 select MMU_NOTIFIER 2584 help 2585 This is a pseudo device driver solely for testing HMM. 2586 Say M here if you want to build the HMM test module. 2587 Doing so will allow you to run tools/testing/selftest/vm/hmm-tests. 2588 2589 If unsure, say N. 2590 2591config TEST_FREE_PAGES 2592 tristate "Test freeing pages" 2593 help 2594 Test that a memory leak does not occur due to a race between 2595 freeing a block of pages and a speculative page reference. 2596 Loading this module is safe if your kernel has the bug fixed. 2597 If the bug is not fixed, it will leak gigabytes of memory and 2598 probably OOM your system. 2599 2600config TEST_FPU 2601 tristate "Test floating point operations in kernel space" 2602 depends on X86 && !KCOV_INSTRUMENT_ALL 2603 help 2604 Enable this option to add /sys/kernel/debug/selftest_helpers/test_fpu 2605 which will trigger a sequence of floating point operations. This is used 2606 for self-testing floating point control register setting in 2607 kernel_fpu_begin(). 2608 2609 If unsure, say N. 2610 2611config TEST_CLOCKSOURCE_WATCHDOG 2612 tristate "Test clocksource watchdog in kernel space" 2613 depends on CLOCKSOURCE_WATCHDOG 2614 help 2615 Enable this option to create a kernel module that will trigger 2616 a test of the clocksource watchdog. This module may be loaded 2617 via modprobe or insmod in which case it will run upon being 2618 loaded, or it may be built in, in which case it will run 2619 shortly after boot. 2620 2621 If unsure, say N. 2622 2623endif # RUNTIME_TESTING_MENU 2624 2625config ARCH_USE_MEMTEST 2626 bool 2627 help 2628 An architecture should select this when it uses early_memtest() 2629 during boot process. 2630 2631config MEMTEST 2632 bool "Memtest" 2633 depends on ARCH_USE_MEMTEST 2634 help 2635 This option adds a kernel parameter 'memtest', which allows memtest 2636 to be set and executed. 2637 memtest=0, mean disabled; -- default 2638 memtest=1, mean do 1 test pattern; 2639 ... 2640 memtest=17, mean do 17 test patterns. 2641 If you are unsure how to answer this question, answer N. 2642 2643 2644 2645config HYPERV_TESTING 2646 bool "Microsoft Hyper-V driver testing" 2647 default n 2648 depends on HYPERV && DEBUG_FS 2649 help 2650 Select this option to enable Hyper-V vmbus testing. 2651 2652endmenu # "Kernel Testing and Coverage" 2653 2654source "Documentation/Kconfig" 2655 2656endmenu # Kernel hacking 2657