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