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