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