f9ae75cc014566b95609983b803e0ef6282723f8
[linux-2.6.git] / lib / Kconfig.debug
1
2 config PRINTK_TIME
3         bool "Show timing information on printks"
4         help
5           Selecting this option causes timing information to be
6           included in printk output.  This allows you to measure
7           the interval between kernel operations, including bootup
8           operations.  This is useful for identifying long delays
9           in kernel startup.
10
11 config ENABLE_MUST_CHECK
12         bool "Enable __must_check logic"
13         default y
14         help
15           Enable the __must_check logic in the kernel build.  Disable this to
16           suppress the "warning: ignoring return value of 'foo', declared with
17           attribute warn_unused_result" messages.
18
19 config MAGIC_SYSRQ
20         bool "Magic SysRq key"
21         depends on !UML
22         help
23           If you say Y here, you will have some control over the system even
24           if the system crashes for example during kernel debugging (e.g., you
25           will be able to flush the buffer cache to disk, reboot the system
26           immediately or dump some status information). This is accomplished
27           by pressing various keys while holding SysRq (Alt+PrintScreen). It
28           also works on a serial console (on PC hardware at least), if you
29           send a BREAK and then within 5 seconds a command keypress. The
30           keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
31           unless you really know what this hack does.
32
33 config UNUSED_SYMBOLS
34         bool "Enable unused/obsolete exported symbols"
35         default y if X86
36         help
37           Unused but exported symbols make the kernel needlessly bigger.  For
38           that reason most of these unused exports will soon be removed.  This
39           option is provided temporarily to provide a transition period in case
40           some external kernel module needs one of these symbols anyway. If you
41           encounter such a case in your module, consider if you are actually
42           using the right API.  (rationale: since nobody in the kernel is using
43           this in a module, there is a pretty good chance it's actually the
44           wrong interface to use).  If you really need the symbol, please send a
45           mail to the linux kernel mailing list mentioning the symbol and why
46           you really need it, and what the merge plan to the mainline kernel for
47           your module is.
48
49 config DEBUG_KERNEL
50         bool "Kernel debugging"
51         help
52           Say Y here if you are developing drivers or trying to debug and
53           identify kernel problems.
54
55 config LOG_BUF_SHIFT
56         int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" if DEBUG_KERNEL
57         range 12 21
58         default 17 if S390 || LOCKDEP
59         default 16 if X86_NUMAQ || IA64
60         default 15 if SMP
61         default 14
62         help
63           Select kernel log buffer size as a power of 2.
64           Defaults and Examples:
65                      17 => 128 KB for S/390
66                      16 => 64 KB for x86 NUMAQ or IA-64
67                      15 => 32 KB for SMP
68                      14 => 16 KB for uniprocessor
69                      13 =>  8 KB
70                      12 =>  4 KB
71
72 config DETECT_SOFTLOCKUP
73         bool "Detect Soft Lockups"
74         depends on DEBUG_KERNEL
75         default y
76         help
77           Say Y here to enable the kernel to detect "soft lockups",
78           which are bugs that cause the kernel to loop in kernel
79           mode for more than 10 seconds, without giving other tasks a
80           chance to run.
81
82           When a soft-lockup is detected, the kernel will print the
83           current stack trace (which you should report), but the
84           system will stay locked up. This feature has negligible
85           overhead.
86
87           (Note that "hard lockups" are separate type of bugs that
88            can be detected via the NMI-watchdog, on platforms that
89            support it.)
90
91 config SCHEDSTATS
92         bool "Collect scheduler statistics"
93         depends on DEBUG_KERNEL && PROC_FS
94         help
95           If you say Y here, additional code will be inserted into the
96           scheduler and related routines to collect statistics about
97           scheduler behavior and provide them in /proc/schedstat.  These
98           stats may be useful for both tuning and debugging the scheduler
99           If you aren't debugging the scheduler or trying to tune a specific
100           application, you can say N to avoid the very slight overhead
101           this adds.
102
103 config DEBUG_SLAB
104         bool "Debug slab memory allocations"
105         depends on DEBUG_KERNEL && SLAB
106         help
107           Say Y here to have the kernel do limited verification on memory
108           allocation as well as poisoning memory on free to catch use of freed
109           memory. This can make kmalloc/kfree-intensive workloads much slower.
110
111 config DEBUG_SLAB_LEAK
112         bool "Memory leak debugging"
113         depends on DEBUG_SLAB
114
115 config DEBUG_PREEMPT
116         bool "Debug preemptible kernel"
117         depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
118         default y
119         help
120           If you say Y here then the kernel will use a debug variant of the
121           commonly used smp_processor_id() function and will print warnings
122           if kernel code uses it in a preemption-unsafe way. Also, the kernel
123           will detect preemption count underflows.
124
125 config DEBUG_RT_MUTEXES
126         bool "RT Mutex debugging, deadlock detection"
127         depends on DEBUG_KERNEL && RT_MUTEXES
128         help
129          This allows rt mutex semantics violations and rt mutex related
130          deadlocks (lockups) to be detected and reported automatically.
131
132 config DEBUG_PI_LIST
133         bool
134         default y
135         depends on DEBUG_RT_MUTEXES
136
137 config RT_MUTEX_TESTER
138         bool "Built-in scriptable tester for rt-mutexes"
139         depends on DEBUG_KERNEL && RT_MUTEXES
140         help
141           This option enables a rt-mutex tester.
142
143 config DEBUG_SPINLOCK
144         bool "Spinlock and rw-lock debugging: basic checks"
145         depends on DEBUG_KERNEL
146         help
147           Say Y here and build SMP to catch missing spinlock initialization
148           and certain other kinds of spinlock errors commonly made.  This is
149           best used in conjunction with the NMI watchdog so that spinlock
150           deadlocks are also debuggable.
151
152 config DEBUG_MUTEXES
153         bool "Mutex debugging: basic checks"
154         depends on DEBUG_KERNEL
155         help
156          This feature allows mutex semantics violations to be detected and
157          reported.
158
159 config DEBUG_RWSEMS
160         bool "RW-sem debugging: basic checks"
161         depends on DEBUG_KERNEL
162         help
163          This feature allows read-write semaphore semantics violations to
164          be detected and reported.
165
166 config DEBUG_LOCK_ALLOC
167         bool "Lock debugging: detect incorrect freeing of live locks"
168         depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
169         select DEBUG_SPINLOCK
170         select DEBUG_MUTEXES
171         select DEBUG_RWSEMS
172         select LOCKDEP
173         help
174          This feature will check whether any held lock (spinlock, rwlock,
175          mutex or rwsem) is incorrectly freed by the kernel, via any of the
176          memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
177          vfree(), etc.), whether a live lock is incorrectly reinitialized via
178          spin_lock_init()/mutex_init()/etc., or whether there is any lock
179          held during task exit.
180
181 config PROVE_LOCKING
182         bool "Lock debugging: prove locking correctness"
183         depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
184         select LOCKDEP
185         select DEBUG_SPINLOCK
186         select DEBUG_MUTEXES
187         select DEBUG_RWSEMS
188         select DEBUG_LOCK_ALLOC
189         default n
190         help
191          This feature enables the kernel to prove that all locking
192          that occurs in the kernel runtime is mathematically
193          correct: that under no circumstance could an arbitrary (and
194          not yet triggered) combination of observed locking
195          sequences (on an arbitrary number of CPUs, running an
196          arbitrary number of tasks and interrupt contexts) cause a
197          deadlock.
198
199          In short, this feature enables the kernel to report locking
200          related deadlocks before they actually occur.
201
202          The proof does not depend on how hard and complex a
203          deadlock scenario would be to trigger: how many
204          participant CPUs, tasks and irq-contexts would be needed
205          for it to trigger. The proof also does not depend on
206          timing: if a race and a resulting deadlock is possible
207          theoretically (no matter how unlikely the race scenario
208          is), it will be proven so and will immediately be
209          reported by the kernel (once the event is observed that
210          makes the deadlock theoretically possible).
211
212          If a deadlock is impossible (i.e. the locking rules, as
213          observed by the kernel, are mathematically correct), the
214          kernel reports nothing.
215
216          NOTE: this feature can also be enabled for rwlocks, mutexes
217          and rwsems - in which case all dependencies between these
218          different locking variants are observed and mapped too, and
219          the proof of observed correctness is also maintained for an
220          arbitrary combination of these separate locking variants.
221
222          For more details, see Documentation/lockdep-design.txt.
223
224 config LOCKDEP
225         bool
226         depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
227         select STACKTRACE
228         select FRAME_POINTER if !X86
229         select KALLSYMS
230         select KALLSYMS_ALL
231
232 config DEBUG_LOCKDEP
233         bool "Lock dependency engine debugging"
234         depends on DEBUG_KERNEL && LOCKDEP
235         help
236           If you say Y here, the lock dependency engine will do
237           additional runtime checks to debug itself, at the price
238           of more runtime overhead.
239
240 config TRACE_IRQFLAGS
241         depends on DEBUG_KERNEL
242         bool
243         default y
244         depends on TRACE_IRQFLAGS_SUPPORT
245         depends on PROVE_LOCKING
246
247 config DEBUG_SPINLOCK_SLEEP
248         bool "Spinlock debugging: sleep-inside-spinlock checking"
249         depends on DEBUG_KERNEL
250         help
251           If you say Y here, various routines which may sleep will become very
252           noisy if they are called with a spinlock held.
253
254 config DEBUG_LOCKING_API_SELFTESTS
255         bool "Locking API boot-time self-tests"
256         depends on DEBUG_KERNEL
257         help
258           Say Y here if you want the kernel to run a short self-test during
259           bootup. The self-test checks whether common types of locking bugs
260           are detected by debugging mechanisms or not. (if you disable
261           lock debugging then those bugs wont be detected of course.)
262           The following locking APIs are covered: spinlocks, rwlocks,
263           mutexes and rwsems.
264
265 config STACKTRACE
266         bool
267         depends on DEBUG_KERNEL
268         depends on STACKTRACE_SUPPORT
269
270 config DEBUG_KOBJECT
271         bool "kobject debugging"
272         depends on DEBUG_KERNEL
273         help
274           If you say Y here, some extra kobject debugging messages will be sent
275           to the syslog. 
276
277 config DEBUG_HIGHMEM
278         bool "Highmem debugging"
279         depends on DEBUG_KERNEL && HIGHMEM
280         help
281           This options enables addition error checking for high memory systems.
282           Disable for production systems.
283
284 config DEBUG_BUGVERBOSE
285         bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED
286         depends on BUG
287         depends on ARM || ARM26 || AVR32 || M32R || M68K || SPARC32 || SPARC64 || X86_32 || FRV || SUPERH
288         default !EMBEDDED
289         help
290           Say Y here to make BUG() panics output the file name and line number
291           of the BUG call as well as the EIP and oops trace.  This aids
292           debugging but costs about 70-100K of memory.
293
294 config DEBUG_INFO
295         bool "Compile the kernel with debug info"
296         depends on DEBUG_KERNEL
297         help
298           If you say Y here the resulting kernel image will include
299           debugging info resulting in a larger kernel image.
300           Say Y here only if you plan to debug the kernel.
301
302           If unsure, say N.
303
304 config DEBUG_FS
305         bool "Debug Filesystem"
306         depends on SYSFS
307         help
308           debugfs is a virtual file system that kernel developers use to put
309           debugging files into.  Enable this option to be able to read and
310           write to these files.
311
312           If unsure, say N.
313
314 config DEBUG_VM
315         bool "Debug VM"
316         depends on DEBUG_KERNEL
317         help
318           Enable this to turn on extended checks in the virtual-memory system
319           that may impact performance.
320
321           If unsure, say N.
322
323 config DEBUG_LIST
324         bool "Debug linked list manipulation"
325         depends on DEBUG_KERNEL
326         help
327           Enable this to turn on extended checks in the linked-list
328           walking routines.
329
330           If unsure, say N.
331
332 config FRAME_POINTER
333         bool "Compile the kernel with frame pointers"
334         depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390 || AVR32 || SUPERH)
335         default y if DEBUG_INFO && UML
336         help
337           If you say Y here the resulting kernel image will be slightly larger
338           and slower, but it might give very useful debugging information on
339           some architectures or if you use external debuggers.
340           If you don't debug the kernel, you can say N.
341
342 config UNWIND_INFO
343         bool "Compile the kernel with frame unwind information"
344         depends on !IA64 && !PARISC
345         depends on !MODULES || !(MIPS || PPC || SUPERH || V850)
346         help
347           If you say Y here the resulting kernel image will be slightly larger
348           but not slower, and it will give very useful debugging information.
349           If you don't debug the kernel, you can say N, but we may not be able
350           to solve problems without frame unwind information or frame pointers.
351
352 config STACK_UNWIND
353         bool "Stack unwind support"
354         depends on UNWIND_INFO
355         depends on X86
356         help
357           This enables more precise stack traces, omitting all unrelated
358           occurrences of pointers into kernel code from the dump.
359
360 config FORCED_INLINING
361         bool "Force gcc to inline functions marked 'inline'"
362         depends on DEBUG_KERNEL
363         default y
364         help
365           This option determines if the kernel forces gcc to inline the functions
366           developers have marked 'inline'. Doing so takes away freedom from gcc to
367           do what it thinks is best, which is desirable for the gcc 3.x series of
368           compilers. The gcc 4.x series have a rewritten inlining algorithm and
369           disabling this option will generate a smaller kernel there. Hopefully
370           this algorithm is so good that allowing gcc4 to make the decision can
371           become the default in the future, until then this option is there to
372           test gcc for this.
373
374 config RCU_TORTURE_TEST
375         tristate "torture tests for RCU"
376         depends on DEBUG_KERNEL
377         default n
378         help
379           This option provides a kernel module that runs torture tests
380           on the RCU infrastructure.  The kernel module may be built
381           after the fact on the running kernel to be tested, if desired.
382
383           Say Y here if you want RCU torture tests to start automatically
384           at boot time (you probably don't).
385           Say M if you want the RCU torture tests to build as a module.
386           Say N if you are unsure.