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