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