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