linux/lib/Kconfig.debug
<<
>>
Prefs
   1
   2config PRINTK_TIME
   3        bool "Show timing information on printks"
   4        depends on PRINTK
   5        help
   6          Selecting this option causes timing information to be
   7          included in printk output.  This allows you to measure
   8          the interval between kernel operations, including bootup
   9          operations.  This is useful for identifying long delays
  10          in kernel startup.
  11
  12config ENABLE_WARN_DEPRECATED
  13        bool "Enable __deprecated logic"
  14        default y
  15        help
  16          Enable the __deprecated logic in the kernel build.
  17          Disable this to suppress the "warning: 'foo' is deprecated
  18          (declared at kernel/power/somefile.c:1234)" messages.
  19
  20config ENABLE_MUST_CHECK
  21        bool "Enable __must_check logic"
  22        default y
  23        help
  24          Enable the __must_check logic in the kernel build.  Disable this to
  25          suppress the "warning: ignoring return value of 'foo', declared with
  26          attribute warn_unused_result" messages.
  27
  28config FRAME_WARN
  29        int "Warn for stack frames larger than (needs gcc 4.4)"
  30        range 0 8192
  31        default 1024 if !64BIT
  32        default 2048 if 64BIT
  33        help
  34          Tell gcc to warn at build time for stack frames larger than this.
  35          Setting this too low will cause a lot of warnings.
  36          Setting it to 0 disables the warning.
  37          Requires gcc 4.4
  38
  39config MAGIC_SYSRQ
  40        bool "Magic SysRq key"
  41        depends on !UML
  42        help
  43          If you say Y here, you will have some control over the system even
  44          if the system crashes for example during kernel debugging (e.g., you
  45          will be able to flush the buffer cache to disk, reboot the system
  46          immediately or dump some status information). This is accomplished
  47          by pressing various keys while holding SysRq (Alt+PrintScreen). It
  48          also works on a serial console (on PC hardware at least), if you
  49          send a BREAK and then within 5 seconds a command keypress. The
  50          keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
  51          unless you really know what this hack does.
  52
  53config STRIP_ASM_SYMS
  54        bool "Strip assembler-generated symbols during link"
  55        default n
  56        help
  57          Strip internal assembler-generated symbols during a link (symbols
  58          that look like '.Lxxx') so they don't pollute the output of
  59          get_wchan() and suchlike.
  60
  61config UNUSED_SYMBOLS
  62        bool "Enable unused/obsolete exported symbols"
  63        default y if X86
  64        help
  65          Unused but exported symbols make the kernel needlessly bigger.  For
  66          that reason most of these unused exports will soon be removed.  This
  67          option is provided temporarily to provide a transition period in case
  68          some external kernel module needs one of these symbols anyway. If you
  69          encounter such a case in your module, consider if you are actually
  70          using the right API.  (rationale: since nobody in the kernel is using
  71          this in a module, there is a pretty good chance it's actually the
  72          wrong interface to use).  If you really need the symbol, please send a
  73          mail to the linux kernel mailing list mentioning the symbol and why
  74          you really need it, and what the merge plan to the mainline kernel for
  75          your module is.
  76
  77config DEBUG_FS
  78        bool "Debug Filesystem"
  79        help
  80          debugfs is a virtual file system that kernel developers use to put
  81          debugging files into.  Enable this option to be able to read and
  82          write to these files.
  83
  84          For detailed documentation on the debugfs API, see
  85          Documentation/DocBook/filesystems.
  86
  87          If unsure, say N.
  88
  89config HEADERS_CHECK
  90        bool "Run 'make headers_check' when building vmlinux"
  91        depends on !UML
  92        help
  93          This option will extract the user-visible kernel headers whenever
  94          building the kernel, and will run basic sanity checks on them to
  95          ensure that exported files do not attempt to include files which
  96          were not exported, etc.
  97
  98          If you're making modifications to header files which are
  99          relevant for userspace, say 'Y', and check the headers
 100          exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in
 101          your build tree), to make sure they're suitable.
 102
 103config DEBUG_SECTION_MISMATCH
 104        bool "Enable full Section mismatch analysis"
 105        depends on UNDEFINED || (BLACKFIN)
 106        default y
 107        # This option is on purpose disabled for now.
 108        # It will be enabled when we are down to a reasonable number
 109        # of section mismatch warnings (< 10 for an allyesconfig build)
 110        help
 111          The section mismatch analysis checks if there are illegal
 112          references from one section to another section.
 113          Linux will during link or during runtime drop some sections
 114          and any use of code/data previously in these sections will
 115          most likely result in an oops.
 116          In the code functions and variables are annotated with
 117          __init, __devinit etc. (see full list in include/linux/init.h)
 118          which results in the code/data being placed in specific sections.
 119          The section mismatch analysis is always done after a full
 120          kernel build but enabling this option will in addition
 121          do the following:
 122          - Add the option -fno-inline-functions-called-once to gcc
 123            When inlining a function annotated __init in a non-init
 124            function we would lose the section information and thus
 125            the analysis would not catch the illegal reference.
 126            This option tells gcc to inline less but will also
 127            result in a larger kernel.
 128          - Run the section mismatch analysis for each module/built-in.o
 129            When we run the section mismatch analysis on vmlinux.o we
 130            lose valueble information about where the mismatch was
 131            introduced.
 132            Running the analysis for each module/built-in.o file
 133            will tell where the mismatch happens much closer to the
 134            source. The drawback is that we will report the same
 135            mismatch at least twice.
 136          - Enable verbose reporting from modpost to help solving
 137            the section mismatches reported.
 138
 139config DEBUG_KERNEL
 140        bool "Kernel debugging"
 141        help
 142          Say Y here if you are developing drivers or trying to debug and
 143          identify kernel problems.
 144
 145config DEBUG_SHIRQ
 146        bool "Debug shared IRQ handlers"
 147        depends on DEBUG_KERNEL && GENERIC_HARDIRQS
 148        help
 149          Enable this to generate a spurious interrupt as soon as a shared
 150          interrupt handler is registered, and just before one is deregistered.
 151          Drivers ought to be able to handle interrupts coming in at those
 152          points; some don't and need to be caught.
 153
 154config LOCKUP_DETECTOR
 155        bool "Detect Hard and Soft Lockups"
 156        depends on DEBUG_KERNEL && !S390
 157        help
 158          Say Y here to enable the kernel to act as a watchdog to detect
 159          hard and soft lockups.
 160
 161          Softlockups are bugs that cause the kernel to loop in kernel
 162          mode for more than 60 seconds, without giving other tasks a
 163          chance to run.  The current stack trace is displayed upon
 164          detection and the system will stay locked up.
 165
 166          Hardlockups are bugs that cause the CPU to loop in kernel mode
 167          for more than 60 seconds, without letting other interrupts have a
 168          chance to run.  The current stack trace is displayed upon detection
 169          and the system will stay locked up.
 170
 171          The overhead should be minimal.  A periodic hrtimer runs to
 172          generate interrupts and kick the watchdog task every 10-12 seconds.
 173          An NMI is generated every 60 seconds or so to check for hardlockups.
 174
 175config HARDLOCKUP_DETECTOR
 176        def_bool LOCKUP_DETECTOR && PERF_EVENTS && HAVE_PERF_EVENTS_NMI && \
 177                 !ARCH_HAS_NMI_WATCHDOG
 178
 179config BOOTPARAM_SOFTLOCKUP_PANIC
 180        bool "Panic (Reboot) On Soft Lockups"
 181        depends on LOCKUP_DETECTOR
 182        help
 183          Say Y here to enable the kernel to panic on "soft lockups",
 184          which are bugs that cause the kernel to loop in kernel
 185          mode for more than 60 seconds, without giving other tasks a
 186          chance to run.
 187
 188          The panic can be used in combination with panic_timeout,
 189          to cause the system to reboot automatically after a
 190          lockup has been detected. This feature is useful for
 191          high-availability systems that have uptime guarantees and
 192          where a lockup must be resolved ASAP.
 193
 194          Say N if unsure.
 195
 196config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
 197        int
 198        depends on LOCKUP_DETECTOR
 199        range 0 1
 200        default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
 201        default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
 202
 203config DETECT_HUNG_TASK
 204        bool "Detect Hung Tasks"
 205        depends on DEBUG_KERNEL
 206        default DETECT_SOFTLOCKUP
 207        help
 208          Say Y here to enable the kernel to detect "hung tasks",
 209          which are bugs that cause the task to be stuck in
 210          uninterruptible "D" state indefinitiley.
 211
 212          When a hung task is detected, the kernel will print the
 213          current stack trace (which you should report), but the
 214          task will stay in uninterruptible state. If lockdep is
 215          enabled then all held locks will also be reported. This
 216          feature has negligible overhead.
 217
 218config BOOTPARAM_HUNG_TASK_PANIC
 219        bool "Panic (Reboot) On Hung Tasks"
 220        depends on DETECT_HUNG_TASK
 221        help
 222          Say Y here to enable the kernel to panic on "hung tasks",
 223          which are bugs that cause the kernel to leave a task stuck
 224          in uninterruptible "D" state.
 225
 226          The panic can be used in combination with panic_timeout,
 227          to cause the system to reboot automatically after a
 228          hung task has been detected. This feature is useful for
 229          high-availability systems that have uptime guarantees and
 230          where a hung tasks must be resolved ASAP.
 231
 232          Say N if unsure.
 233
 234config BOOTPARAM_HUNG_TASK_PANIC_VALUE
 235        int
 236        depends on DETECT_HUNG_TASK
 237        range 0 1
 238        default 0 if !BOOTPARAM_HUNG_TASK_PANIC
 239        default 1 if BOOTPARAM_HUNG_TASK_PANIC
 240
 241config SCHED_DEBUG
 242        bool "Collect scheduler debugging info"
 243        depends on DEBUG_KERNEL && PROC_FS
 244        default y
 245        help
 246          If you say Y here, the /proc/sched_debug file will be provided
 247          that can help debug the scheduler. The runtime overhead of this
 248          option is minimal.
 249
 250config SCHEDSTATS
 251        bool "Collect scheduler statistics"
 252        depends on DEBUG_KERNEL && PROC_FS
 253        help
 254          If you say Y here, additional code will be inserted into the
 255          scheduler and related routines to collect statistics about
 256          scheduler behavior and provide them in /proc/schedstat.  These
 257          stats may be useful for both tuning and debugging the scheduler
 258          If you aren't debugging the scheduler or trying to tune a specific
 259          application, you can say N to avoid the very slight overhead
 260          this adds.
 261
 262config TIMER_STATS
 263        bool "Collect kernel timers statistics"
 264        depends on DEBUG_KERNEL && PROC_FS
 265        help
 266          If you say Y here, additional code will be inserted into the
 267          timer routines to collect statistics about kernel timers being
 268          reprogrammed. The statistics can be read from /proc/timer_stats.
 269          The statistics collection is started by writing 1 to /proc/timer_stats,
 270          writing 0 stops it. This feature is useful to collect information
 271          about timer usage patterns in kernel and userspace. This feature
 272          is lightweight if enabled in the kernel config but not activated
 273          (it defaults to deactivated on bootup and will only be activated
 274          if some application like powertop activates it explicitly).
 275
 276config DEBUG_OBJECTS
 277        bool "Debug object operations"
 278        depends on DEBUG_KERNEL
 279        help
 280          If you say Y here, additional code will be inserted into the
 281          kernel to track the life time of various objects and validate
 282          the operations on those objects.
 283
 284config DEBUG_OBJECTS_SELFTEST
 285        bool "Debug objects selftest"
 286        depends on DEBUG_OBJECTS
 287        help
 288          This enables the selftest of the object debug code.
 289
 290config DEBUG_OBJECTS_FREE
 291        bool "Debug objects in freed memory"
 292        depends on DEBUG_OBJECTS
 293        help
 294          This enables checks whether a k/v free operation frees an area
 295          which contains an object which has not been deactivated
 296          properly. This can make kmalloc/kfree-intensive workloads
 297          much slower.
 298
 299config DEBUG_OBJECTS_TIMERS
 300        bool "Debug timer objects"
 301        depends on DEBUG_OBJECTS
 302        help
 303          If you say Y here, additional code will be inserted into the
 304          timer routines to track the life time of timer objects and
 305          validate the timer operations.
 306
 307config DEBUG_OBJECTS_WORK
 308        bool "Debug work objects"
 309        depends on DEBUG_OBJECTS
 310        help
 311          If you say Y here, additional code will be inserted into the
 312          work queue routines to track the life time of work objects and
 313          validate the work operations.
 314
 315config DEBUG_OBJECTS_RCU_HEAD
 316        bool "Debug RCU callbacks objects"
 317        depends on DEBUG_OBJECTS && PREEMPT
 318        help
 319          Enable this to turn on debugging of RCU list heads (call_rcu() usage).
 320
 321config DEBUG_OBJECTS_PERCPU_COUNTER
 322        bool "Debug percpu counter objects"
 323        depends on DEBUG_OBJECTS
 324        help
 325          If you say Y here, additional code will be inserted into the
 326          percpu counter routines to track the life time of percpu counter
 327          objects and validate the percpu counter operations.
 328
 329config DEBUG_OBJECTS_ENABLE_DEFAULT
 330        int "debug_objects bootup default value (0-1)"
 331        range 0 1
 332        default "1"
 333        depends on DEBUG_OBJECTS
 334        help
 335          Debug objects boot parameter default value
 336
 337config DEBUG_SLAB
 338        bool "Debug slab memory allocations"
 339        depends on DEBUG_KERNEL && SLAB && !KMEMCHECK
 340        help
 341          Say Y here to have the kernel do limited verification on memory
 342          allocation as well as poisoning memory on free to catch use of freed
 343          memory. This can make kmalloc/kfree-intensive workloads much slower.
 344
 345config DEBUG_SLAB_LEAK
 346        bool "Memory leak debugging"
 347        depends on DEBUG_SLAB
 348
 349config SLUB_DEBUG_ON
 350        bool "SLUB debugging on by default"
 351        depends on SLUB && SLUB_DEBUG && !KMEMCHECK
 352        default n
 353        help
 354          Boot with debugging on by default. SLUB boots by default with
 355          the runtime debug capabilities switched off. Enabling this is
 356          equivalent to specifying the "slub_debug" parameter on boot.
 357          There is no support for more fine grained debug control like
 358          possible with slub_debug=xxx. SLUB debugging may be switched
 359          off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
 360          "slub_debug=-".
 361
 362config SLUB_STATS
 363        default n
 364        bool "Enable SLUB performance statistics"
 365        depends on SLUB && SYSFS
 366        help
 367          SLUB statistics are useful to debug SLUBs allocation behavior in
 368          order find ways to optimize the allocator. This should never be
 369          enabled for production use since keeping statistics slows down
 370          the allocator by a few percentage points. The slabinfo command
 371          supports the determination of the most active slabs to figure
 372          out which slabs are relevant to a particular load.
 373          Try running: slabinfo -DA
 374
 375config DEBUG_KMEMLEAK
 376        bool "Kernel memory leak detector"
 377        depends on DEBUG_KERNEL && EXPERIMENTAL && !MEMORY_HOTPLUG && \
 378                (X86 || ARM || PPC || S390 || SPARC64 || SUPERH || MICROBLAZE || TILE)
 379
 380        select DEBUG_FS if SYSFS
 381        select STACKTRACE if STACKTRACE_SUPPORT
 382        select KALLSYMS
 383        select CRC32
 384        help
 385          Say Y here if you want to enable the memory leak
 386          detector. The memory allocation/freeing is traced in a way
 387          similar to the Boehm's conservative garbage collector, the
 388          difference being that the orphan objects are not freed but
 389          only shown in /sys/kernel/debug/kmemleak. Enabling this
 390          feature will introduce an overhead to memory
 391          allocations. See Documentation/kmemleak.txt for more
 392          details.
 393
 394          Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
 395          of finding leaks due to the slab objects poisoning.
 396
 397          In order to access the kmemleak file, debugfs needs to be
 398          mounted (usually at /sys/kernel/debug).
 399
 400config DEBUG_KMEMLEAK_EARLY_LOG_SIZE
 401        int "Maximum kmemleak early log entries"
 402        depends on DEBUG_KMEMLEAK
 403        range 200 40000
 404        default 400
 405        help
 406          Kmemleak must track all the memory allocations to avoid
 407          reporting false positives. Since memory may be allocated or
 408          freed before kmemleak is initialised, an early log buffer is
 409          used to store these actions. If kmemleak reports "early log
 410          buffer exceeded", please increase this value.
 411
 412config DEBUG_KMEMLEAK_TEST
 413        tristate "Simple test for the kernel memory leak detector"
 414        depends on DEBUG_KMEMLEAK
 415        help
 416          Say Y or M here to build a test for the kernel memory leak
 417          detector. This option enables a module that explicitly leaks
 418          memory.
 419
 420          If unsure, say N.
 421
 422config DEBUG_KMEMLEAK_DEFAULT_OFF
 423        bool "Default kmemleak to off"
 424        depends on DEBUG_KMEMLEAK
 425        help
 426          Say Y here to disable kmemleak by default. It can then be enabled
 427          on the command line via kmemleak=on.
 428
 429config DEBUG_PREEMPT
 430        bool "Debug preemptible kernel"
 431        depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
 432        default y
 433        help
 434          If you say Y here then the kernel will use a debug variant of the
 435          commonly used smp_processor_id() function and will print warnings
 436          if kernel code uses it in a preemption-unsafe way. Also, the kernel
 437          will detect preemption count underflows.
 438
 439config DEBUG_RT_MUTEXES
 440        bool "RT Mutex debugging, deadlock detection"
 441        depends on DEBUG_KERNEL && RT_MUTEXES
 442        help
 443         This allows rt mutex semantics violations and rt mutex related
 444         deadlocks (lockups) to be detected and reported automatically.
 445
 446config DEBUG_PI_LIST
 447        bool
 448        default y
 449        depends on DEBUG_RT_MUTEXES
 450
 451config RT_MUTEX_TESTER
 452        bool "Built-in scriptable tester for rt-mutexes"
 453        depends on DEBUG_KERNEL && RT_MUTEXES
 454        help
 455          This option enables a rt-mutex tester.
 456
 457config DEBUG_SPINLOCK
 458        bool "Spinlock and rw-lock debugging: basic checks"
 459        depends on DEBUG_KERNEL
 460        help
 461          Say Y here and build SMP to catch missing spinlock initialization
 462          and certain other kinds of spinlock errors commonly made.  This is
 463          best used in conjunction with the NMI watchdog so that spinlock
 464          deadlocks are also debuggable.
 465
 466config DEBUG_MUTEXES
 467        bool "Mutex debugging: basic checks"
 468        depends on DEBUG_KERNEL
 469        help
 470         This feature allows mutex semantics violations to be detected and
 471         reported.
 472
 473config BKL
 474        bool "Big Kernel Lock" if (SMP || PREEMPT)
 475        default y
 476        help
 477          This is the traditional lock that is used in old code instead
 478          of proper locking. All drivers that use the BKL should depend
 479          on this symbol.
 480          Say Y here unless you are working on removing the BKL.
 481
 482config DEBUG_LOCK_ALLOC
 483        bool "Lock debugging: detect incorrect freeing of live locks"
 484        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
 485        select DEBUG_SPINLOCK
 486        select DEBUG_MUTEXES
 487        select LOCKDEP
 488        help
 489         This feature will check whether any held lock (spinlock, rwlock,
 490         mutex or rwsem) is incorrectly freed by the kernel, via any of the
 491         memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
 492         vfree(), etc.), whether a live lock is incorrectly reinitialized via
 493         spin_lock_init()/mutex_init()/etc., or whether there is any lock
 494         held during task exit.
 495
 496config PROVE_LOCKING
 497        bool "Lock debugging: prove locking correctness"
 498        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
 499        select LOCKDEP
 500        select DEBUG_SPINLOCK
 501        select DEBUG_MUTEXES
 502        select DEBUG_LOCK_ALLOC
 503        select TRACE_IRQFLAGS
 504        default n
 505        help
 506         This feature enables the kernel to prove that all locking
 507         that occurs in the kernel runtime is mathematically
 508         correct: that under no circumstance could an arbitrary (and
 509         not yet triggered) combination of observed locking
 510         sequences (on an arbitrary number of CPUs, running an
 511         arbitrary number of tasks and interrupt contexts) cause a
 512         deadlock.
 513
 514         In short, this feature enables the kernel to report locking
 515         related deadlocks before they actually occur.
 516
 517         The proof does not depend on how hard and complex a
 518         deadlock scenario would be to trigger: how many
 519         participant CPUs, tasks and irq-contexts would be needed
 520         for it to trigger. The proof also does not depend on
 521         timing: if a race and a resulting deadlock is possible
 522         theoretically (no matter how unlikely the race scenario
 523         is), it will be proven so and will immediately be
 524         reported by the kernel (once the event is observed that
 525         makes the deadlock theoretically possible).
 526
 527         If a deadlock is impossible (i.e. the locking rules, as
 528         observed by the kernel, are mathematically correct), the
 529         kernel reports nothing.
 530
 531         NOTE: this feature can also be enabled for rwlocks, mutexes
 532         and rwsems - in which case all dependencies between these
 533         different locking variants are observed and mapped too, and
 534         the proof of observed correctness is also maintained for an
 535         arbitrary combination of these separate locking variants.
 536
 537         For more details, see Documentation/lockdep-design.txt.
 538
 539config PROVE_RCU
 540        bool "RCU debugging: prove RCU correctness"
 541        depends on PROVE_LOCKING
 542        default n
 543        help
 544         This feature enables lockdep extensions that check for correct
 545         use of RCU APIs.  This is currently under development.  Say Y
 546         if you want to debug RCU usage or help work on the PROVE_RCU
 547         feature.
 548
 549         Say N if you are unsure.
 550
 551config PROVE_RCU_REPEATEDLY
 552        bool "RCU debugging: don't disable PROVE_RCU on first splat"
 553        depends on PROVE_RCU
 554        default n
 555        help
 556         By itself, PROVE_RCU will disable checking upon issuing the
 557         first warning (or "splat").  This feature prevents such
 558         disabling, allowing multiple RCU-lockdep warnings to be printed
 559         on a single reboot.
 560
 561         Say Y to allow multiple RCU-lockdep warnings per boot.
 562
 563         Say N if you are unsure.
 564
 565config SPARSE_RCU_POINTER
 566        bool "RCU debugging: sparse-based checks for pointer usage"
 567        default n
 568        help
 569         This feature enables the __rcu sparse annotation for
 570         RCU-protected pointers.  This annotation will cause sparse
 571         to flag any non-RCU used of annotated pointers.  This can be
 572         helpful when debugging RCU usage.  Please note that this feature
 573         is not intended to enforce code cleanliness; it is instead merely
 574         a debugging aid.
 575
 576         Say Y to make sparse flag questionable use of RCU-protected pointers
 577
 578         Say N if you are unsure.
 579
 580config LOCKDEP
 581        bool
 582        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
 583        select STACKTRACE
 584        select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE
 585        select KALLSYMS
 586        select KALLSYMS_ALL
 587
 588config LOCK_STAT
 589        bool "Lock usage statistics"
 590        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
 591        select LOCKDEP
 592        select DEBUG_SPINLOCK
 593        select DEBUG_MUTEXES
 594        select DEBUG_LOCK_ALLOC
 595        default n
 596        help
 597         This feature enables tracking lock contention points
 598
 599         For more details, see Documentation/lockstat.txt
 600
 601         This also enables lock events required by "perf lock",
 602         subcommand of perf.
 603         If you want to use "perf lock", you also need to turn on
 604         CONFIG_EVENT_TRACING.
 605
 606         CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
 607         (CONFIG_LOCKDEP defines "acquire" and "release" events.)
 608
 609config DEBUG_LOCKDEP
 610        bool "Lock dependency engine debugging"
 611        depends on DEBUG_KERNEL && LOCKDEP
 612        help
 613          If you say Y here, the lock dependency engine will do
 614          additional runtime checks to debug itself, at the price
 615          of more runtime overhead.
 616
 617config TRACE_IRQFLAGS
 618        bool
 619        help
 620          Enables hooks to interrupt enabling and disabling for
 621          either tracing or lock debugging.
 622
 623config DEBUG_SPINLOCK_SLEEP
 624        bool "Spinlock debugging: sleep-inside-spinlock checking"
 625        depends on DEBUG_KERNEL
 626        help
 627          If you say Y here, various routines which may sleep will become very
 628          noisy if they are called with a spinlock held.
 629
 630config DEBUG_LOCKING_API_SELFTESTS
 631        bool "Locking API boot-time self-tests"
 632        depends on DEBUG_KERNEL
 633        help
 634          Say Y here if you want the kernel to run a short self-test during
 635          bootup. The self-test checks whether common types of locking bugs
 636          are detected by debugging mechanisms or not. (if you disable
 637          lock debugging then those bugs wont be detected of course.)
 638          The following locking APIs are covered: spinlocks, rwlocks,
 639          mutexes and rwsems.
 640
 641config STACKTRACE
 642        bool
 643        depends on STACKTRACE_SUPPORT
 644
 645config DEBUG_KOBJECT
 646        bool "kobject debugging"
 647        depends on DEBUG_KERNEL
 648        help
 649          If you say Y here, some extra kobject debugging messages will be sent
 650          to the syslog. 
 651
 652config DEBUG_HIGHMEM
 653        bool "Highmem debugging"
 654        depends on DEBUG_KERNEL && HIGHMEM
 655        help
 656          This options enables addition error checking for high memory systems.
 657          Disable for production systems.
 658
 659config DEBUG_BUGVERBOSE
 660        bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
 661        depends on BUG
 662        depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \
 663                   FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300
 664        default y
 665        help
 666          Say Y here to make BUG() panics output the file name and line number
 667          of the BUG call as well as the EIP and oops trace.  This aids
 668          debugging but costs about 70-100K of memory.
 669
 670config DEBUG_INFO
 671        bool "Compile the kernel with debug info"
 672        depends on DEBUG_KERNEL
 673        help
 674          If you say Y here the resulting kernel image will include
 675          debugging info resulting in a larger kernel image.
 676          This adds debug symbols to the kernel and modules (gcc -g), and
 677          is needed if you intend to use kernel crashdump or binary object
 678          tools like crash, kgdb, LKCD, gdb, etc on the kernel.
 679          Say Y here only if you plan to debug the kernel.
 680
 681          If unsure, say N.
 682
 683config DEBUG_INFO_REDUCED
 684        bool "Reduce debugging information"
 685        depends on DEBUG_INFO
 686        help
 687          If you say Y here gcc is instructed to generate less debugging
 688          information for structure types. This means that tools that
 689          need full debugging information (like kgdb or systemtap) won't
 690          be happy. But if you merely need debugging information to
 691          resolve line numbers there is no loss. Advantage is that
 692          build directory object sizes shrink dramatically over a full
 693          DEBUG_INFO build and compile times are reduced too.
 694          Only works with newer gcc versions.
 695
 696config DEBUG_VM
 697        bool "Debug VM"
 698        depends on DEBUG_KERNEL
 699        help
 700          Enable this to turn on extended checks in the virtual-memory system
 701          that may impact performance.
 702
 703          If unsure, say N.
 704
 705config DEBUG_VIRTUAL
 706        bool "Debug VM translations"
 707        depends on DEBUG_KERNEL && X86
 708        help
 709          Enable some costly sanity checks in virtual to page code. This can
 710          catch mistakes with virt_to_page() and friends.
 711
 712          If unsure, say N.
 713
 714config DEBUG_NOMMU_REGIONS
 715        bool "Debug the global anon/private NOMMU mapping region tree"
 716        depends on DEBUG_KERNEL && !MMU
 717        help
 718          This option causes the global tree of anonymous and private mapping
 719          regions to be regularly checked for invalid topology.
 720
 721config DEBUG_WRITECOUNT
 722        bool "Debug filesystem writers count"
 723        depends on DEBUG_KERNEL
 724        help
 725          Enable this to catch wrong use of the writers count in struct
 726          vfsmount.  This will increase the size of each file struct by
 727          32 bits.
 728
 729          If unsure, say N.
 730
 731config DEBUG_MEMORY_INIT
 732        bool "Debug memory initialisation" if EXPERT
 733        default !EXPERT
 734        help
 735          Enable this for additional checks during memory initialisation.
 736          The sanity checks verify aspects of the VM such as the memory model
 737          and other information provided by the architecture. Verbose
 738          information will be printed at KERN_DEBUG loglevel depending
 739          on the mminit_loglevel= command-line option.
 740
 741          If unsure, say Y
 742
 743config DEBUG_LIST
 744        bool "Debug linked list manipulation"
 745        depends on DEBUG_KERNEL
 746        help
 747          Enable this to turn on extended checks in the linked-list
 748          walking routines.
 749
 750          If unsure, say N.
 751
 752config TEST_LIST_SORT
 753        bool "Linked list sorting test"
 754        depends on DEBUG_KERNEL
 755        help
 756          Enable this to turn on 'list_sort()' function test. This test is
 757          executed only once during system boot, so affects only boot time.
 758
 759          If unsure, say N.
 760
 761config DEBUG_SG
 762        bool "Debug SG table operations"
 763        depends on DEBUG_KERNEL
 764        help
 765          Enable this to turn on checks on scatter-gather tables. This can
 766          help find problems with drivers that do not properly initialize
 767          their sg tables.
 768
 769          If unsure, say N.
 770
 771config DEBUG_NOTIFIERS
 772        bool "Debug notifier call chains"
 773        depends on DEBUG_KERNEL
 774        help
 775          Enable this to turn on sanity checking for notifier call chains.
 776          This is most useful for kernel developers to make sure that
 777          modules properly unregister themselves from notifier chains.
 778          This is a relatively cheap check but if you care about maximum
 779          performance, say N.
 780
 781config DEBUG_CREDENTIALS
 782        bool "Debug credential management"
 783        depends on DEBUG_KERNEL
 784        help
 785          Enable this to turn on some debug checking for credential
 786          management.  The additional code keeps track of the number of
 787          pointers from task_structs to any given cred struct, and checks to
 788          see that this number never exceeds the usage count of the cred
 789          struct.
 790
 791          Furthermore, if SELinux is enabled, this also checks that the
 792          security pointer in the cred struct is never seen to be invalid.
 793
 794          If unsure, say N.
 795
 796#
 797# Select this config option from the architecture Kconfig, if it
 798# it is preferred to always offer frame pointers as a config
 799# option on the architecture (regardless of KERNEL_DEBUG):
 800#
 801config ARCH_WANT_FRAME_POINTERS
 802        bool
 803        help
 804
 805config FRAME_POINTER
 806        bool "Compile the kernel with frame pointers"
 807        depends on DEBUG_KERNEL && \
 808                (CRIS || M68K || FRV || UML || \
 809                 AVR32 || SUPERH || BLACKFIN || MN10300) || \
 810                ARCH_WANT_FRAME_POINTERS
 811        default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
 812        help
 813          If you say Y here the resulting kernel image will be slightly
 814          larger and slower, but it gives very useful debugging information
 815          in case of kernel bugs. (precise oopses/stacktraces/warnings)
 816
 817config BOOT_PRINTK_DELAY
 818        bool "Delay each boot printk message by N milliseconds"
 819        depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
 820        help
 821          This build option allows you to read kernel boot messages
 822          by inserting a short delay after each one.  The delay is
 823          specified in milliseconds on the kernel command line,
 824          using "boot_delay=N".
 825
 826          It is likely that you would also need to use "lpj=M" to preset
 827          the "loops per jiffie" value.
 828          See a previous boot log for the "lpj" value to use for your
 829          system, and then set "lpj=M" before setting "boot_delay=N".
 830          NOTE:  Using this option may adversely affect SMP systems.
 831          I.e., processors other than the first one may not boot up.
 832          BOOT_PRINTK_DELAY also may cause DETECT_SOFTLOCKUP to detect
 833          what it believes to be lockup conditions.
 834
 835config RCU_TORTURE_TEST
 836        tristate "torture tests for RCU"
 837        depends on DEBUG_KERNEL
 838        default n
 839        help
 840          This option provides a kernel module that runs torture tests
 841          on the RCU infrastructure.  The kernel module may be built
 842          after the fact on the running kernel to be tested, if desired.
 843
 844          Say Y here if you want RCU torture tests to be built into
 845          the kernel.
 846          Say M if you want the RCU torture tests to build as a module.
 847          Say N if you are unsure.
 848
 849config RCU_TORTURE_TEST_RUNNABLE
 850        bool "torture tests for RCU runnable by default"
 851        depends on RCU_TORTURE_TEST = y
 852        default n
 853        help
 854          This option provides a way to build the RCU torture tests
 855          directly into the kernel without them starting up at boot
 856          time.  You can use /proc/sys/kernel/rcutorture_runnable
 857          to manually override this setting.  This /proc file is
 858          available only when the RCU torture tests have been built
 859          into the kernel.
 860
 861          Say Y here if you want the RCU torture tests to start during
 862          boot (you probably don't).
 863          Say N here if you want the RCU torture tests to start only
 864          after being manually enabled via /proc.
 865
 866config RCU_CPU_STALL_DETECTOR
 867        bool "Check for stalled CPUs delaying RCU grace periods"
 868        depends on TREE_RCU || TREE_PREEMPT_RCU
 869        default y
 870        help
 871          This option causes RCU to printk information on which
 872          CPUs are delaying the current grace period, but only when
 873          the grace period extends for excessive time periods.
 874
 875          Say N if you want to disable such checks.
 876
 877          Say Y if you are unsure.
 878
 879config RCU_CPU_STALL_TIMEOUT
 880        int "RCU CPU stall timeout in seconds"
 881        depends on RCU_CPU_STALL_DETECTOR
 882        range 3 300
 883        default 60
 884        help
 885          If a given RCU grace period extends more than the specified
 886          number of seconds, a CPU stall warning is printed.  If the
 887          RCU grace period persists, additional CPU stall warnings are
 888          printed at more widely spaced intervals.
 889
 890config RCU_CPU_STALL_DETECTOR_RUNNABLE
 891        bool "RCU CPU stall checking starts automatically at boot"
 892        depends on RCU_CPU_STALL_DETECTOR
 893        default y
 894        help
 895          If set, start checking for RCU CPU stalls immediately on
 896          boot.  Otherwise, RCU CPU stall checking must be manually
 897          enabled.
 898
 899          Say Y if you are unsure.
 900
 901          Say N if you wish to suppress RCU CPU stall checking during boot.
 902
 903config RCU_CPU_STALL_VERBOSE
 904        bool "Print additional per-task information for RCU_CPU_STALL_DETECTOR"
 905        depends on RCU_CPU_STALL_DETECTOR && TREE_PREEMPT_RCU
 906        default y
 907        help
 908          This option causes RCU to printk detailed per-task information
 909          for any tasks that are stalling the current RCU grace period.
 910
 911          Say N if you are unsure.
 912
 913          Say Y if you want to enable such checks.
 914
 915config KPROBES_SANITY_TEST
 916        bool "Kprobes sanity tests"
 917        depends on DEBUG_KERNEL
 918        depends on KPROBES
 919        default n
 920        help
 921          This option provides for testing basic kprobes functionality on
 922          boot. A sample kprobe, jprobe and kretprobe are inserted and
 923          verified for functionality.
 924
 925          Say N if you are unsure.
 926
 927config BACKTRACE_SELF_TEST
 928        tristate "Self test for the backtrace code"
 929        depends on DEBUG_KERNEL
 930        default n
 931        help
 932          This option provides a kernel module that can be used to test
 933          the kernel stack backtrace code. This option is not useful
 934          for distributions or general kernels, but only for kernel
 935          developers working on architecture code.
 936
 937          Note that if you want to also test saved backtraces, you will
 938          have to enable STACKTRACE as well.
 939
 940          Say N if you are unsure.
 941
 942config DEBUG_BLOCK_EXT_DEVT
 943        bool "Force extended block device numbers and spread them"
 944        depends on DEBUG_KERNEL
 945        depends on BLOCK
 946        default n
 947        help
 948          BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
 949          SOME DISTRIBUTIONS.  DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
 950          YOU ARE DOING.  Distros, please enable this and fix whatever
 951          is broken.
 952
 953          Conventionally, block device numbers are allocated from
 954          predetermined contiguous area.  However, extended block area
 955          may introduce non-contiguous block device numbers.  This
 956          option forces most block device numbers to be allocated from
 957          the extended space and spreads them to discover kernel or
 958          userland code paths which assume predetermined contiguous
 959          device number allocation.
 960
 961          Note that turning on this debug option shuffles all the
 962          device numbers for all IDE and SCSI devices including libata
 963          ones, so root partition specified using device number
 964          directly (via rdev or root=MAJ:MIN) won't work anymore.
 965          Textual device names (root=/dev/sdXn) will continue to work.
 966
 967          Say N if you are unsure.
 968
 969config DEBUG_FORCE_WEAK_PER_CPU
 970        bool "Force weak per-cpu definitions"
 971        depends on DEBUG_KERNEL
 972        help
 973          s390 and alpha require percpu variables in modules to be
 974          defined weak to work around addressing range issue which
 975          puts the following two restrictions on percpu variable
 976          definitions.
 977
 978          1. percpu symbols must be unique whether static or not
 979          2. percpu variables can't be defined inside a function
 980
 981          To ensure that generic code follows the above rules, this
 982          option forces all percpu variables to be defined as weak.
 983
 984config LKDTM
 985        tristate "Linux Kernel Dump Test Tool Module"
 986        depends on DEBUG_FS
 987        depends on BLOCK
 988        default n
 989        help
 990        This module enables testing of the different dumping mechanisms by
 991        inducing system failures at predefined crash points.
 992        If you don't need it: say N
 993        Choose M here to compile this code as a module. The module will be
 994        called lkdtm.
 995
 996        Documentation on how to use the module can be found in
 997        Documentation/fault-injection/provoke-crashes.txt
 998
 999config CPU_NOTIFIER_ERROR_INJECT
1000        tristate "CPU notifier error injection module"
1001        depends on HOTPLUG_CPU && DEBUG_KERNEL
1002        help
1003          This option provides a kernel module that can be used to test
1004          the error handling of the cpu notifiers
1005
1006          To compile this code as a module, choose M here: the module will
1007          be called cpu-notifier-error-inject.
1008
1009          If unsure, say N.
1010
1011config FAULT_INJECTION
1012        bool "Fault-injection framework"
1013        depends on DEBUG_KERNEL
1014        help
1015          Provide fault-injection framework.
1016          For more details, see Documentation/fault-injection/.
1017
1018config FAILSLAB
1019        bool "Fault-injection capability for kmalloc"
1020        depends on FAULT_INJECTION
1021        depends on SLAB || SLUB
1022        help
1023          Provide fault-injection capability for kmalloc.
1024
1025config FAIL_PAGE_ALLOC
1026        bool "Fault-injection capabilitiy for alloc_pages()"
1027        depends on FAULT_INJECTION
1028        help
1029          Provide fault-injection capability for alloc_pages().
1030
1031config FAIL_MAKE_REQUEST
1032        bool "Fault-injection capability for disk IO"
1033        depends on FAULT_INJECTION && BLOCK
1034        help
1035          Provide fault-injection capability for disk IO.
1036
1037config FAIL_IO_TIMEOUT
1038        bool "Fault-injection capability for faking disk interrupts"
1039        depends on FAULT_INJECTION && BLOCK
1040        help
1041          Provide fault-injection capability on end IO handling. This
1042          will make the block layer "forget" an interrupt as configured,
1043          thus exercising the error handling.
1044
1045          Only works with drivers that use the generic timeout handling,
1046          for others it wont do anything.
1047
1048config FAULT_INJECTION_DEBUG_FS
1049        bool "Debugfs entries for fault-injection capabilities"
1050        depends on FAULT_INJECTION && SYSFS && DEBUG_FS
1051        help
1052          Enable configuration of fault-injection capabilities via debugfs.
1053
1054config FAULT_INJECTION_STACKTRACE_FILTER
1055        bool "stacktrace filter for fault-injection capabilities"
1056        depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
1057        depends on !X86_64
1058        select STACKTRACE
1059        select FRAME_POINTER if !PPC && !S390 && !MICROBLAZE
1060        help
1061          Provide stacktrace filter for fault-injection capabilities
1062
1063config LATENCYTOP
1064        bool "Latency measuring infrastructure"
1065        depends on HAVE_LATENCYTOP_SUPPORT
1066        depends on DEBUG_KERNEL
1067        depends on STACKTRACE_SUPPORT
1068        depends on PROC_FS
1069        select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE
1070        select KALLSYMS
1071        select KALLSYMS_ALL
1072        select STACKTRACE
1073        select SCHEDSTATS
1074        select SCHED_DEBUG
1075        help
1076          Enable this option if you want to use the LatencyTOP tool
1077          to find out which userspace is blocking on what kernel operations.
1078
1079config SYSCTL_SYSCALL_CHECK
1080        bool "Sysctl checks"
1081        depends on SYSCTL
1082        ---help---
1083          sys_sysctl uses binary paths that have been found challenging
1084          to properly maintain and use. This enables checks that help
1085          you to keep things correct.
1086
1087source mm/Kconfig.debug
1088source kernel/trace/Kconfig
1089
1090config PROVIDE_OHCI1394_DMA_INIT
1091        bool "Remote debugging over FireWire early on boot"
1092        depends on PCI && X86
1093        help
1094          If you want to debug problems which hang or crash the kernel early
1095          on boot and the crashing machine has a FireWire port, you can use
1096          this feature to remotely access the memory of the crashed machine
1097          over FireWire. This employs remote DMA as part of the OHCI1394
1098          specification which is now the standard for FireWire controllers.
1099
1100          With remote DMA, you can monitor the printk buffer remotely using
1101          firescope and access all memory below 4GB using fireproxy from gdb.
1102          Even controlling a kernel debugger is possible using remote DMA.
1103
1104          Usage:
1105
1106          If ohci1394_dma=early is used as boot parameter, it will initialize
1107          all OHCI1394 controllers which are found in the PCI config space.
1108
1109          As all changes to the FireWire bus such as enabling and disabling
1110          devices cause a bus reset and thereby disable remote DMA for all
1111          devices, be sure to have the cable plugged and FireWire enabled on
1112          the debugging host before booting the debug target for debugging.
1113
1114          This code (~1k) is freed after boot. By then, the firewire stack
1115          in charge of the OHCI-1394 controllers should be used instead.
1116
1117          See Documentation/debugging-via-ohci1394.txt for more information.
1118
1119config FIREWIRE_OHCI_REMOTE_DMA
1120        bool "Remote debugging over FireWire with firewire-ohci"
1121        depends on FIREWIRE_OHCI
1122        help
1123          This option lets you use the FireWire bus for remote debugging
1124          with help of the firewire-ohci driver. It enables unfiltered
1125          remote DMA in firewire-ohci.
1126          See Documentation/debugging-via-ohci1394.txt for more information.
1127
1128          If unsure, say N.
1129
1130config BUILD_DOCSRC
1131        bool "Build targets in Documentation/ tree"
1132        depends on HEADERS_CHECK
1133        help
1134          This option attempts to build objects from the source files in the
1135          kernel Documentation/ tree.
1136
1137          Say N if you are unsure.
1138
1139config DYNAMIC_DEBUG
1140        bool "Enable dynamic printk() support"
1141        default n
1142        depends on PRINTK
1143        depends on DEBUG_FS
1144        help
1145
1146          Compiles debug level messages into the kernel, which would not
1147          otherwise be available at runtime. These messages can then be
1148          enabled/disabled based on various levels of scope - per source file,
1149          function, module, format string, and line number. This mechanism
1150          implicitly enables all pr_debug() and dev_dbg() calls. The impact of
1151          this compile option is a larger kernel text size of about 2%.
1152
1153          Usage:
1154
1155          Dynamic debugging is controlled via the 'dynamic_debug/control' file,
1156          which is contained in the 'debugfs' filesystem. Thus, the debugfs
1157          filesystem must first be mounted before making use of this feature.
1158          We refer the control file as: <debugfs>/dynamic_debug/control. This
1159          file contains a list of the debug statements that can be enabled. The
1160          format for each line of the file is:
1161
1162                filename:lineno [module]function flags format
1163
1164          filename : source file of the debug statement
1165          lineno : line number of the debug statement
1166          module : module that contains the debug statement
1167          function : function that contains the debug statement
1168          flags : 'p' means the line is turned 'on' for printing
1169          format : the format used for the debug statement
1170
1171          From a live system:
1172
1173                nullarbor:~ # cat <debugfs>/dynamic_debug/control
1174                # filename:lineno [module]function flags format
1175                fs/aio.c:222 [aio]__put_ioctx - "__put_ioctx:\040freeing\040%p\012"
1176                fs/aio.c:248 [aio]ioctx_alloc - "ENOMEM:\040nr_events\040too\040high\012"
1177                fs/aio.c:1770 [aio]sys_io_cancel - "calling\040cancel\012"
1178
1179          Example usage:
1180
1181                // enable the message at line 1603 of file svcsock.c
1182                nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
1183                                                <debugfs>/dynamic_debug/control
1184
1185                // enable all the messages in file svcsock.c
1186                nullarbor:~ # echo -n 'file svcsock.c +p' >
1187                                                <debugfs>/dynamic_debug/control
1188
1189                // enable all the messages in the NFS server module
1190                nullarbor:~ # echo -n 'module nfsd +p' >
1191                                                <debugfs>/dynamic_debug/control
1192
1193                // enable all 12 messages in the function svc_process()
1194                nullarbor:~ # echo -n 'func svc_process +p' >
1195                                                <debugfs>/dynamic_debug/control
1196
1197                // disable all 12 messages in the function svc_process()
1198                nullarbor:~ # echo -n 'func svc_process -p' >
1199                                                <debugfs>/dynamic_debug/control
1200
1201          See Documentation/dynamic-debug-howto.txt for additional information.
1202
1203config DMA_API_DEBUG
1204        bool "Enable debugging of DMA-API usage"
1205        depends on HAVE_DMA_API_DEBUG
1206        help
1207          Enable this option to debug the use of the DMA API by device drivers.
1208          With this option you will be able to detect common bugs in device
1209          drivers like double-freeing of DMA mappings or freeing mappings that
1210          were never allocated.
1211          This option causes a performance degredation.  Use only if you want
1212          to debug device drivers. If unsure, say N.
1213
1214config ATOMIC64_SELFTEST
1215        bool "Perform an atomic64_t self-test at boot"
1216        help
1217          Enable this option to test the atomic64_t functions at boot.
1218
1219          If unsure, say N.
1220
1221config ASYNC_RAID6_TEST
1222        tristate "Self test for hardware accelerated raid6 recovery"
1223        depends on ASYNC_RAID6_RECOV
1224        select ASYNC_MEMCPY
1225        ---help---
1226          This is a one-shot self test that permutes through the
1227          recovery of all the possible two disk failure scenarios for a
1228          N-disk array.  Recovery is performed with the asynchronous
1229          raid6 recovery routines, and will optionally use an offload
1230          engine if one is available.
1231
1232          If unsure, say N.
1233
1234source "samples/Kconfig"
1235
1236source "lib/Kconfig.kgdb"
1237
1238source "lib/Kconfig.kmemcheck"
1239