blob: 91858cd8394fb675a38cfacd7086ac7ca4ee7a9a [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001
2config PRINTK_TIME
3 bool "Show timing information on printks"
Randy Dunlapd3b8b6e2006-12-06 20:36:38 -08004 depends on PRINTK
Linus Torvalds1da177e2005-04-16 15:20:36 -07005 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
Jim Cromie99172a22011-03-18 11:33:08 -060010 in kernel startup. Or add printk.time=1 at boot-time.
11 See Documentation/kernel-parameters.txt
Linus Torvalds1da177e2005-04-16 15:20:36 -070012
Mandeep Singh Baines5af5bcb2011-03-22 16:34:23 -070013config DEFAULT_MESSAGE_LOGLEVEL
14 int "Default message log level (1-7)"
15 range 1 7
16 default "4"
17 help
18 Default log level for printk statements with no specified priority.
19
20 This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
21 that are auditing their logs closely may want to set it to a lower
22 priority.
23
Jeff Garzikde488442007-10-25 04:06:13 -040024config ENABLE_WARN_DEPRECATED
25 bool "Enable __deprecated logic"
26 default y
27 help
28 Enable the __deprecated logic in the kernel build.
29 Disable this to suppress the "warning: 'foo' is deprecated
30 (declared at kernel/power/somefile.c:1234)" messages.
31
Andrew Mortoncebc04b2006-08-14 22:43:18 -070032config ENABLE_MUST_CHECK
33 bool "Enable __must_check logic"
34 default y
35 help
36 Enable the __must_check logic in the kernel build. Disable this to
37 suppress the "warning: ignoring return value of 'foo', declared with
38 attribute warn_unused_result" messages.
Linus Torvalds1da177e2005-04-16 15:20:36 -070039
Andi Kleen35bb5b12008-02-22 15:15:03 +010040config FRAME_WARN
41 int "Warn for stack frames larger than (needs gcc 4.4)"
42 range 0 8192
43 default 1024 if !64BIT
44 default 2048 if 64BIT
45 help
46 Tell gcc to warn at build time for stack frames larger than this.
47 Setting this too low will cause a lot of warnings.
48 Setting it to 0 disables the warning.
49 Requires gcc 4.4
50
Linus Torvalds1da177e2005-04-16 15:20:36 -070051config MAGIC_SYSRQ
52 bool "Magic SysRq key"
Adrian Bunkf346f4b2006-01-09 20:54:51 -080053 depends on !UML
Linus Torvalds1da177e2005-04-16 15:20:36 -070054 help
55 If you say Y here, you will have some control over the system even
56 if the system crashes for example during kernel debugging (e.g., you
57 will be able to flush the buffer cache to disk, reboot the system
58 immediately or dump some status information). This is accomplished
59 by pressing various keys while holding SysRq (Alt+PrintScreen). It
60 also works on a serial console (on PC hardware at least), if you
61 send a BREAK and then within 5 seconds a command keypress. The
62 keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
63 unless you really know what this hack does.
64
Randy Dunlap99657c72009-09-18 12:49:22 -070065config STRIP_ASM_SYMS
66 bool "Strip assembler-generated symbols during link"
67 default n
68 help
69 Strip internal assembler-generated symbols during a link (symbols
70 that look like '.Lxxx') so they don't pollute the output of
71 get_wchan() and suchlike.
72
Arjan van de Venf71d20e2006-06-28 04:26:45 -070073config UNUSED_SYMBOLS
74 bool "Enable unused/obsolete exported symbols"
75 default y if X86
76 help
77 Unused but exported symbols make the kernel needlessly bigger. For
78 that reason most of these unused exports will soon be removed. This
79 option is provided temporarily to provide a transition period in case
80 some external kernel module needs one of these symbols anyway. If you
81 encounter such a case in your module, consider if you are actually
82 using the right API. (rationale: since nobody in the kernel is using
83 this in a module, there is a pretty good chance it's actually the
84 wrong interface to use). If you really need the symbol, please send a
85 mail to the linux kernel mailing list mentioning the symbol and why
86 you really need it, and what the merge plan to the mainline kernel for
87 your module is.
88
Don Mullisbf4735a2006-12-10 02:18:37 -080089config DEBUG_FS
90 bool "Debug Filesystem"
Don Mullisbf4735a2006-12-10 02:18:37 -080091 help
92 debugfs is a virtual file system that kernel developers use to put
93 debugging files into. Enable this option to be able to read and
94 write to these files.
95
Robert P. J. Dayff543332008-05-20 00:06:00 +020096 For detailed documentation on the debugfs API, see
97 Documentation/DocBook/filesystems.
98
Don Mullisbf4735a2006-12-10 02:18:37 -080099 If unsure, say N.
100
101config HEADERS_CHECK
102 bool "Run 'make headers_check' when building vmlinux"
103 depends on !UML
104 help
105 This option will extract the user-visible kernel headers whenever
106 building the kernel, and will run basic sanity checks on them to
107 ensure that exported files do not attempt to include files which
108 were not exported, etc.
109
110 If you're making modifications to header files which are
111 relevant for userspace, say 'Y', and check the headers
112 exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in
113 your build tree), to make sure they're suitable.
114
Sam Ravnborg91341d42008-01-21 21:31:44 +0100115config DEBUG_SECTION_MISMATCH
116 bool "Enable full Section mismatch analysis"
Sam Ravnborg91341d42008-01-21 21:31:44 +0100117 help
118 The section mismatch analysis checks if there are illegal
119 references from one section to another section.
Michael Wittene809ab02011-04-17 04:08:48 +0000120 During linktime or runtime, some sections are dropped;
121 any use of code/data previously in these sections would
Sam Ravnborg91341d42008-01-21 21:31:44 +0100122 most likely result in an oops.
Michael Wittene809ab02011-04-17 04:08:48 +0000123 In the code, functions and variables are annotated with
124 __init, __devinit, etc. (see the full list in include/linux/init.h),
Geert Uytterhoevend6fbfa42008-01-30 11:13:23 +0100125 which results in the code/data being placed in specific sections.
Michael Wittene809ab02011-04-17 04:08:48 +0000126 The section mismatch analysis is always performed after a full
127 kernel build, and enabling this option causes the following
128 additional steps to occur:
129 - Add the option -fno-inline-functions-called-once to gcc commands.
130 When inlining a function annotated with __init in a non-init
131 function, we would lose the section information and thus
Sam Ravnborg91341d42008-01-21 21:31:44 +0100132 the analysis would not catch the illegal reference.
Michael Wittene809ab02011-04-17 04:08:48 +0000133 This option tells gcc to inline less (but it does result in
134 a larger kernel).
135 - Run the section mismatch analysis for each module/built-in.o file.
136 When we run the section mismatch analysis on vmlinux.o, we
Geert Uytterhoevend6fbfa42008-01-30 11:13:23 +0100137 lose valueble information about where the mismatch was
Sam Ravnborg91341d42008-01-21 21:31:44 +0100138 introduced.
139 Running the analysis for each module/built-in.o file
Michael Wittene809ab02011-04-17 04:08:48 +0000140 tells where the mismatch happens much closer to the
141 source. The drawback is that the same mismatch is
142 reported at least twice.
143 - Enable verbose reporting from modpost in order to help resolve
144 the section mismatches that are reported.
Sam Ravnborg91341d42008-01-21 21:31:44 +0100145
Adrian Bunkf346f4b2006-01-09 20:54:51 -0800146config DEBUG_KERNEL
147 bool "Kernel debugging"
148 help
149 Say Y here if you are developing drivers or trying to debug and
150 identify kernel problems.
151
David Woodhousea304e1b2007-02-12 00:52:00 -0800152config DEBUG_SHIRQ
153 bool "Debug shared IRQ handlers"
154 depends on DEBUG_KERNEL && GENERIC_HARDIRQS
155 help
156 Enable this to generate a spurious interrupt as soon as a shared
157 interrupt handler is registered, and just before one is deregistered.
158 Drivers ought to be able to handle interrupts coming in at those
159 points; some don't and need to be caught.
160
Don Zickus58687ac2010-05-07 17:11:44 -0400161config LOCKUP_DETECTOR
162 bool "Detect Hard and Soft Lockups"
Heiko Carstensdea20a32006-10-11 01:20:44 -0700163 depends on DEBUG_KERNEL && !S390
Ingo Molnar8446f1d2005-09-06 15:16:27 -0700164 help
Don Zickus58687ac2010-05-07 17:11:44 -0400165 Say Y here to enable the kernel to act as a watchdog to detect
166 hard and soft lockups.
Don Zickus84e478c2010-02-05 21:47:05 -0500167
Don Zickus58687ac2010-05-07 17:11:44 -0400168 Softlockups are bugs that cause the kernel to loop in kernel
Fernando Luis Vázquez Cao5f329082012-02-09 17:42:21 -0500169 mode for more than 20 seconds, without giving other tasks a
Don Zickus58687ac2010-05-07 17:11:44 -0400170 chance to run. The current stack trace is displayed upon
171 detection and the system will stay locked up.
Ingo Molnar8446f1d2005-09-06 15:16:27 -0700172
Don Zickus58687ac2010-05-07 17:11:44 -0400173 Hardlockups are bugs that cause the CPU to loop in kernel mode
Fernando Luis Vázquez Cao5f329082012-02-09 17:42:21 -0500174 for more than 10 seconds, without letting other interrupts have a
Don Zickus58687ac2010-05-07 17:11:44 -0400175 chance to run. The current stack trace is displayed upon detection
176 and the system will stay locked up.
Ingo Molnar8446f1d2005-09-06 15:16:27 -0700177
Don Zickus58687ac2010-05-07 17:11:44 -0400178 The overhead should be minimal. A periodic hrtimer runs to
Fernando Luis Vázquez Cao5f329082012-02-09 17:42:21 -0500179 generate interrupts and kick the watchdog task every 4 seconds.
180 An NMI is generated every 10 seconds or so to check for hardlockups.
181
182 The frequency of hrtimer and NMI events and the soft and hard lockup
183 thresholds can be controlled through the sysctl watchdog_thresh.
Don Zickus84e478c2010-02-05 21:47:05 -0500184
Frederic Weisbecker23637d42010-05-15 23:15:20 +0200185config HARDLOCKUP_DETECTOR
Don Zickus4a7863c2010-12-22 14:00:03 -0500186 def_bool LOCKUP_DETECTOR && PERF_EVENTS && HAVE_PERF_EVENTS_NMI && \
Cong Wangd314d742012-03-23 15:01:51 -0700187 !HAVE_NMI_WATCHDOG
Ingo Molnar8446f1d2005-09-06 15:16:27 -0700188
Don Zickusfef2c9b2011-03-22 16:34:16 -0700189config BOOTPARAM_HARDLOCKUP_PANIC
190 bool "Panic (Reboot) On Hard Lockups"
191 depends on LOCKUP_DETECTOR
192 help
193 Say Y here to enable the kernel to panic on "hard lockups",
194 which are bugs that cause the kernel to loop in kernel
Fernando Luis Vázquez Cao5f329082012-02-09 17:42:21 -0500195 mode with interrupts disabled for more than 10 seconds (configurable
196 using the watchdog_thresh sysctl).
Don Zickusfef2c9b2011-03-22 16:34:16 -0700197
198 Say N if unsure.
199
200config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
201 int
202 depends on LOCKUP_DETECTOR
203 range 0 1
204 default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
205 default 1 if BOOTPARAM_HARDLOCKUP_PANIC
206
Ingo Molnar9c44bc02008-05-12 21:21:04 +0200207config BOOTPARAM_SOFTLOCKUP_PANIC
208 bool "Panic (Reboot) On Soft Lockups"
Frederic Weisbecker89d7ce22010-05-13 00:27:20 +0200209 depends on LOCKUP_DETECTOR
Ingo Molnar9c44bc02008-05-12 21:21:04 +0200210 help
211 Say Y here to enable the kernel to panic on "soft lockups",
212 which are bugs that cause the kernel to loop in kernel
Fernando Luis Vázquez Cao5f329082012-02-09 17:42:21 -0500213 mode for more than 20 seconds (configurable using the watchdog_thresh
214 sysctl), without giving other tasks a chance to run.
Ingo Molnar9c44bc02008-05-12 21:21:04 +0200215
216 The panic can be used in combination with panic_timeout,
217 to cause the system to reboot automatically after a
218 lockup has been detected. This feature is useful for
219 high-availability systems that have uptime guarantees and
220 where a lockup must be resolved ASAP.
221
222 Say N if unsure.
223
224config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
225 int
Frederic Weisbeckere16bb1d2010-05-15 22:30:22 +0200226 depends on LOCKUP_DETECTOR
Ingo Molnar9c44bc02008-05-12 21:21:04 +0200227 range 0 1
228 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
229 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
230
Kyle McMartin2a01bb32012-04-11 08:15:29 -0400231config PANIC_ON_OOPS
232 bool "Panic on Oops" if EXPERT
233 default n
234 help
235 Say Y here to enable the kernel to panic when it oopses. This
236 has the same effect as setting oops=panic on the kernel command
237 line.
238
239 This feature is useful to ensure that the kernel does not do
240 anything erroneous after an oops which could result in data
241 corruption or other issues.
242
243 Say N if unsure.
244
245config PANIC_ON_OOPS_VALUE
246 int
247 range 0 1
248 default 0 if !PANIC_ON_OOPS
249 default 1 if PANIC_ON_OOPS
250
Mandeep Singh Bainese162b392009-01-15 11:08:40 -0800251config DETECT_HUNG_TASK
252 bool "Detect Hung Tasks"
253 depends on DEBUG_KERNEL
Anton Blanchard8edbb832011-07-05 13:32:40 +1000254 default LOCKUP_DETECTOR
Mandeep Singh Bainese162b392009-01-15 11:08:40 -0800255 help
256 Say Y here to enable the kernel to detect "hung tasks",
257 which are bugs that cause the task to be stuck in
258 uninterruptible "D" state indefinitiley.
259
260 When a hung task is detected, the kernel will print the
261 current stack trace (which you should report), but the
262 task will stay in uninterruptible state. If lockdep is
263 enabled then all held locks will also be reported. This
264 feature has negligible overhead.
265
Jeff Mahoneye11feaa2011-04-27 14:27:24 -0400266config DEFAULT_HUNG_TASK_TIMEOUT
267 int "Default timeout for hung task detection (in seconds)"
268 depends on DETECT_HUNG_TASK
269 default 120
270 help
271 This option controls the default timeout (in seconds) used
272 to determine when a task has become non-responsive and should
273 be considered hung.
274
Jiaju Zhangc51eaac2011-10-31 17:10:07 -0700275 It can be adjusted at runtime via the kernel.hung_task_timeout_secs
276 sysctl or by writing a value to
277 /proc/sys/kernel/hung_task_timeout_secs.
Jeff Mahoneye11feaa2011-04-27 14:27:24 -0400278
279 A timeout of 0 disables the check. The default is two minutes.
280 Keeping the default should be fine in most cases.
281
Mandeep Singh Bainese162b392009-01-15 11:08:40 -0800282config BOOTPARAM_HUNG_TASK_PANIC
283 bool "Panic (Reboot) On Hung Tasks"
284 depends on DETECT_HUNG_TASK
285 help
286 Say Y here to enable the kernel to panic on "hung tasks",
287 which are bugs that cause the kernel to leave a task stuck
288 in uninterruptible "D" state.
289
290 The panic can be used in combination with panic_timeout,
291 to cause the system to reboot automatically after a
292 hung task has been detected. This feature is useful for
293 high-availability systems that have uptime guarantees and
294 where a hung tasks must be resolved ASAP.
295
296 Say N if unsure.
297
298config BOOTPARAM_HUNG_TASK_PANIC_VALUE
299 int
300 depends on DETECT_HUNG_TASK
301 range 0 1
302 default 0 if !BOOTPARAM_HUNG_TASK_PANIC
303 default 1 if BOOTPARAM_HUNG_TASK_PANIC
304
Ingo Molnarb642b6d2007-07-09 18:52:00 +0200305config SCHED_DEBUG
306 bool "Collect scheduler debugging info"
307 depends on DEBUG_KERNEL && PROC_FS
308 default y
309 help
310 If you say Y here, the /proc/sched_debug file will be provided
311 that can help debug the scheduler. The runtime overhead of this
312 option is minimal.
313
Linus Torvalds1da177e2005-04-16 15:20:36 -0700314config SCHEDSTATS
315 bool "Collect scheduler statistics"
316 depends on DEBUG_KERNEL && PROC_FS
317 help
318 If you say Y here, additional code will be inserted into the
319 scheduler and related routines to collect statistics about
320 scheduler behavior and provide them in /proc/schedstat. These
321 stats may be useful for both tuning and debugging the scheduler
322 If you aren't debugging the scheduler or trying to tune a specific
323 application, you can say N to avoid the very slight overhead
324 this adds.
325
Ingo Molnar82f67cd2007-02-16 01:28:13 -0800326config TIMER_STATS
327 bool "Collect kernel timers statistics"
328 depends on DEBUG_KERNEL && PROC_FS
329 help
330 If you say Y here, additional code will be inserted into the
331 timer routines to collect statistics about kernel timers being
332 reprogrammed. The statistics can be read from /proc/timer_stats.
333 The statistics collection is started by writing 1 to /proc/timer_stats,
334 writing 0 stops it. This feature is useful to collect information
Ingo Molnarc1a834d2007-06-01 00:47:16 -0700335 about timer usage patterns in kernel and userspace. This feature
336 is lightweight if enabled in the kernel config but not activated
337 (it defaults to deactivated on bootup and will only be activated
338 if some application like powertop activates it explicitly).
Ingo Molnar82f67cd2007-02-16 01:28:13 -0800339
Thomas Gleixner3ac7fe52008-04-30 00:55:01 -0700340config DEBUG_OBJECTS
341 bool "Debug object operations"
342 depends on DEBUG_KERNEL
343 help
344 If you say Y here, additional code will be inserted into the
345 kernel to track the life time of various objects and validate
346 the operations on those objects.
347
348config DEBUG_OBJECTS_SELFTEST
349 bool "Debug objects selftest"
350 depends on DEBUG_OBJECTS
351 help
352 This enables the selftest of the object debug code.
353
354config DEBUG_OBJECTS_FREE
355 bool "Debug objects in freed memory"
356 depends on DEBUG_OBJECTS
357 help
358 This enables checks whether a k/v free operation frees an area
359 which contains an object which has not been deactivated
360 properly. This can make kmalloc/kfree-intensive workloads
361 much slower.
362
Thomas Gleixnerc6f3a972008-04-30 00:55:03 -0700363config DEBUG_OBJECTS_TIMERS
364 bool "Debug timer objects"
365 depends on DEBUG_OBJECTS
366 help
367 If you say Y here, additional code will be inserted into the
368 timer routines to track the life time of timer objects and
369 validate the timer operations.
370
Thomas Gleixnerdc186ad2009-11-16 01:09:48 +0900371config DEBUG_OBJECTS_WORK
372 bool "Debug work objects"
373 depends on DEBUG_OBJECTS
374 help
375 If you say Y here, additional code will be inserted into the
376 work queue routines to track the life time of work objects and
377 validate the work operations.
378
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400379config DEBUG_OBJECTS_RCU_HEAD
380 bool "Debug RCU callbacks objects"
Mathieu Desnoyersfc2ecf72011-02-23 09:42:14 -0800381 depends on DEBUG_OBJECTS
Mathieu Desnoyers551d55a2010-04-17 08:48:42 -0400382 help
383 Enable this to turn on debugging of RCU list heads (call_rcu() usage).
384
Tejun Heoe2852ae2010-10-26 14:23:05 -0700385config DEBUG_OBJECTS_PERCPU_COUNTER
386 bool "Debug percpu counter objects"
387 depends on DEBUG_OBJECTS
388 help
389 If you say Y here, additional code will be inserted into the
390 percpu counter routines to track the life time of percpu counter
391 objects and validate the percpu counter operations.
392
Ingo Molnar3ae70202008-11-26 10:02:00 +0100393config DEBUG_OBJECTS_ENABLE_DEFAULT
394 int "debug_objects bootup default value (0-1)"
395 range 0 1
396 default "1"
397 depends on DEBUG_OBJECTS
398 help
399 Debug objects boot parameter default value
400
Linus Torvalds1da177e2005-04-16 15:20:36 -0700401config DEBUG_SLAB
Andrew Morton4a2f0ac2006-03-25 03:07:22 -0800402 bool "Debug slab memory allocations"
Vegard Nossum7d46d9e2008-04-04 00:51:41 +0200403 depends on DEBUG_KERNEL && SLAB && !KMEMCHECK
Linus Torvalds1da177e2005-04-16 15:20:36 -0700404 help
405 Say Y here to have the kernel do limited verification on memory
406 allocation as well as poisoning memory on free to catch use of freed
407 memory. This can make kmalloc/kfree-intensive workloads much slower.
408
Al Viro871751e2006-03-25 03:06:39 -0800409config DEBUG_SLAB_LEAK
410 bool "Memory leak debugging"
411 depends on DEBUG_SLAB
412
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700413config SLUB_DEBUG_ON
414 bool "SLUB debugging on by default"
Vegard Nossum7d46d9e2008-04-04 00:51:41 +0200415 depends on SLUB && SLUB_DEBUG && !KMEMCHECK
Christoph Lameterf0630ff2007-07-15 23:38:14 -0700416 default n
417 help
418 Boot with debugging on by default. SLUB boots by default with
419 the runtime debug capabilities switched off. Enabling this is
420 equivalent to specifying the "slub_debug" parameter on boot.
421 There is no support for more fine grained debug control like
422 possible with slub_debug=xxx. SLUB debugging may be switched
423 off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
424 "slub_debug=-".
425
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800426config SLUB_STATS
427 default n
428 bool "Enable SLUB performance statistics"
Christoph Lameterab4d5ed2010-10-05 13:57:26 -0500429 depends on SLUB && SYSFS
Christoph Lameter8ff12cf2008-02-07 17:47:41 -0800430 help
431 SLUB statistics are useful to debug SLUBs allocation behavior in
432 order find ways to optimize the allocator. This should never be
433 enabled for production use since keeping statistics slows down
434 the allocator by a few percentage points. The slabinfo command
435 supports the determination of the most active slabs to figure
436 out which slabs are relevant to a particular load.
437 Try running: slabinfo -DA
438
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100439config DEBUG_KMEMLEAK
440 bool "Kernel memory leak detector"
Laura Abbott029aeff2011-11-15 23:49:09 +0000441 depends on DEBUG_KERNEL && EXPERIMENTAL && \
Maxin Johnc0a5afb2011-03-29 00:15:55 +0300442 (X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || MICROBLAZE || TILE)
Heiko Carstensdfcc3e62009-10-06 10:33:57 +0200443
Catalin Marinas79e0d9b2011-04-27 17:06:19 +0100444 select DEBUG_FS
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100445 select STACKTRACE if STACKTRACE_SUPPORT
446 select KALLSYMS
Randy Dunlapb60e26a2009-11-06 15:33:45 -0800447 select CRC32
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100448 help
449 Say Y here if you want to enable the memory leak
450 detector. The memory allocation/freeing is traced in a way
451 similar to the Boehm's conservative garbage collector, the
452 difference being that the orphan objects are not freed but
453 only shown in /sys/kernel/debug/kmemleak. Enabling this
454 feature will introduce an overhead to memory
455 allocations. See Documentation/kmemleak.txt for more
456 details.
457
Catalin Marinasbf96d1e2009-06-23 14:40:27 +0100458 Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
459 of finding leaks due to the slab objects poisoning.
460
Catalin Marinas3bba00d2009-06-11 13:24:13 +0100461 In order to access the kmemleak file, debugfs needs to be
462 mounted (usually at /sys/kernel/debug).
463
Catalin Marinasa9d90582009-06-25 10:16:11 +0100464config DEBUG_KMEMLEAK_EARLY_LOG_SIZE
465 int "Maximum kmemleak early log entries"
466 depends on DEBUG_KMEMLEAK
Heiko Carstensdfcc3e62009-10-06 10:33:57 +0200467 range 200 40000
Catalin Marinasa9d90582009-06-25 10:16:11 +0100468 default 400
469 help
470 Kmemleak must track all the memory allocations to avoid
471 reporting false positives. Since memory may be allocated or
472 freed before kmemleak is initialised, an early log buffer is
473 used to store these actions. If kmemleak reports "early log
474 buffer exceeded", please increase this value.
475
Catalin Marinas0822ee42009-06-11 13:24:14 +0100476config DEBUG_KMEMLEAK_TEST
477 tristate "Simple test for the kernel memory leak detector"
Daniel Baluta97182692011-04-04 15:06:44 -0700478 depends on DEBUG_KMEMLEAK && m
Catalin Marinas0822ee42009-06-11 13:24:14 +0100479 help
Daniel Baluta97182692011-04-04 15:06:44 -0700480 This option enables a module that explicitly leaks memory.
Catalin Marinas0822ee42009-06-11 13:24:14 +0100481
482 If unsure, say N.
483
Jason Baronab0155a2010-07-19 11:54:17 +0100484config DEBUG_KMEMLEAK_DEFAULT_OFF
485 bool "Default kmemleak to off"
486 depends on DEBUG_KMEMLEAK
487 help
488 Say Y here to disable kmemleak by default. It can then be enabled
489 on the command line via kmemleak=on.
490
Linus Torvalds1da177e2005-04-16 15:20:36 -0700491config DEBUG_PREEMPT
492 bool "Debug preemptible kernel"
Kumar Gala01deab92009-10-16 07:21:39 +0000493 depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
Linus Torvalds1da177e2005-04-16 15:20:36 -0700494 default y
495 help
496 If you say Y here then the kernel will use a debug variant of the
497 commonly used smp_processor_id() function and will print warnings
498 if kernel code uses it in a preemption-unsafe way. Also, the kernel
499 will detect preemption count underflows.
500
Ingo Molnare7eebaf2006-06-27 02:54:55 -0700501config DEBUG_RT_MUTEXES
502 bool "RT Mutex debugging, deadlock detection"
Ingo Molnare7eebaf2006-06-27 02:54:55 -0700503 depends on DEBUG_KERNEL && RT_MUTEXES
504 help
505 This allows rt mutex semantics violations and rt mutex related
506 deadlocks (lockups) to be detected and reported automatically.
507
508config DEBUG_PI_LIST
509 bool
510 default y
511 depends on DEBUG_RT_MUTEXES
512
Thomas Gleixner61a87122006-06-27 02:54:56 -0700513config RT_MUTEX_TESTER
514 bool "Built-in scriptable tester for rt-mutexes"
Roman Zippela1583d32006-06-27 02:55:00 -0700515 depends on DEBUG_KERNEL && RT_MUTEXES
Thomas Gleixner61a87122006-06-27 02:54:56 -0700516 help
517 This option enables a rt-mutex tester.
518
Linus Torvalds1da177e2005-04-16 15:20:36 -0700519config DEBUG_SPINLOCK
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700520 bool "Spinlock and rw-lock debugging: basic checks"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700521 depends on DEBUG_KERNEL
Raghavendra K Te335e3e2012-03-22 15:25:08 +0530522 select UNINLINE_SPIN_UNLOCK
Linus Torvalds1da177e2005-04-16 15:20:36 -0700523 help
524 Say Y here and build SMP to catch missing spinlock initialization
525 and certain other kinds of spinlock errors commonly made. This is
526 best used in conjunction with the NMI watchdog so that spinlock
527 deadlocks are also debuggable.
528
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700529config DEBUG_MUTEXES
530 bool "Mutex debugging: basic checks"
531 depends on DEBUG_KERNEL
532 help
533 This feature allows mutex semantics violations to be detected and
534 reported.
535
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700536config DEBUG_LOCK_ALLOC
537 bool "Lock debugging: detect incorrect freeing of live locks"
Adrian Bunk517e7aa2006-07-14 00:24:32 -0700538 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700539 select DEBUG_SPINLOCK
540 select DEBUG_MUTEXES
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700541 select LOCKDEP
542 help
543 This feature will check whether any held lock (spinlock, rwlock,
544 mutex or rwsem) is incorrectly freed by the kernel, via any of the
545 memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
546 vfree(), etc.), whether a live lock is incorrectly reinitialized via
547 spin_lock_init()/mutex_init()/etc., or whether there is any lock
548 held during task exit.
549
550config PROVE_LOCKING
551 bool "Lock debugging: prove locking correctness"
Adrian Bunk517e7aa2006-07-14 00:24:32 -0700552 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700553 select LOCKDEP
554 select DEBUG_SPINLOCK
555 select DEBUG_MUTEXES
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700556 select DEBUG_LOCK_ALLOC
Steven Rostedt46b93b72010-08-31 16:35:20 -0400557 select TRACE_IRQFLAGS
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700558 default n
559 help
560 This feature enables the kernel to prove that all locking
561 that occurs in the kernel runtime is mathematically
562 correct: that under no circumstance could an arbitrary (and
563 not yet triggered) combination of observed locking
564 sequences (on an arbitrary number of CPUs, running an
565 arbitrary number of tasks and interrupt contexts) cause a
566 deadlock.
567
568 In short, this feature enables the kernel to report locking
569 related deadlocks before they actually occur.
570
571 The proof does not depend on how hard and complex a
572 deadlock scenario would be to trigger: how many
573 participant CPUs, tasks and irq-contexts would be needed
574 for it to trigger. The proof also does not depend on
575 timing: if a race and a resulting deadlock is possible
576 theoretically (no matter how unlikely the race scenario
577 is), it will be proven so and will immediately be
578 reported by the kernel (once the event is observed that
579 makes the deadlock theoretically possible).
580
581 If a deadlock is impossible (i.e. the locking rules, as
582 observed by the kernel, are mathematically correct), the
583 kernel reports nothing.
584
585 NOTE: this feature can also be enabled for rwlocks, mutexes
586 and rwsems - in which case all dependencies between these
587 different locking variants are observed and mapped too, and
588 the proof of observed correctness is also maintained for an
589 arbitrary combination of these separate locking variants.
590
591 For more details, see Documentation/lockdep-design.txt.
592
Paul E. McKenney632ee202010-02-22 17:04:45 -0800593config PROVE_RCU
594 bool "RCU debugging: prove RCU correctness"
595 depends on PROVE_LOCKING
596 default n
597 help
598 This feature enables lockdep extensions that check for correct
599 use of RCU APIs. This is currently under development. Say Y
600 if you want to debug RCU usage or help work on the PROVE_RCU
601 feature.
602
603 Say N if you are unsure.
604
Lai Jiangshan2b3fc352010-04-20 16:23:07 +0800605config PROVE_RCU_REPEATEDLY
606 bool "RCU debugging: don't disable PROVE_RCU on first splat"
607 depends on PROVE_RCU
608 default n
609 help
610 By itself, PROVE_RCU will disable checking upon issuing the
611 first warning (or "splat"). This feature prevents such
612 disabling, allowing multiple RCU-lockdep warnings to be printed
613 on a single reboot.
614
Paul E. McKenney2dfbf4d2010-09-15 23:30:48 -0700615 Say Y to allow multiple RCU-lockdep warnings per boot.
616
617 Say N if you are unsure.
618
Paul E. McKenneyca5ecdd2010-04-28 14:39:09 -0700619config SPARSE_RCU_POINTER
620 bool "RCU debugging: sparse-based checks for pointer usage"
621 default n
622 help
623 This feature enables the __rcu sparse annotation for
624 RCU-protected pointers. This annotation will cause sparse
625 to flag any non-RCU used of annotated pointers. This can be
626 helpful when debugging RCU usage. Please note that this feature
627 is not intended to enforce code cleanliness; it is instead merely
628 a debugging aid.
629
630 Say Y to make sparse flag questionable use of RCU-protected pointers
631
Lai Jiangshan2b3fc352010-04-20 16:23:07 +0800632 Say N if you are unsure.
633
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700634config LOCKDEP
635 bool
Adrian Bunk517e7aa2006-07-14 00:24:32 -0700636 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700637 select STACKTRACE
Michal Simek79aac882010-05-25 11:33:26 +0200638 select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700639 select KALLSYMS
640 select KALLSYMS_ALL
641
Peter Zijlstraf20786f2007-07-19 01:48:56 -0700642config LOCK_STAT
Danny ter Haarfdfb8702007-09-24 21:24:43 -0700643 bool "Lock usage statistics"
Peter Zijlstraf20786f2007-07-19 01:48:56 -0700644 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
645 select LOCKDEP
646 select DEBUG_SPINLOCK
647 select DEBUG_MUTEXES
648 select DEBUG_LOCK_ALLOC
649 default n
650 help
651 This feature enables tracking lock contention points
652
Peter Zijlstraa560aa42007-10-07 00:24:33 -0700653 For more details, see Documentation/lockstat.txt
654
Frederic Weisbeckerdd8b1cf2010-02-27 17:10:39 +0100655 This also enables lock events required by "perf lock",
656 subcommand of perf.
657 If you want to use "perf lock", you also need to turn on
658 CONFIG_EVENT_TRACING.
Hitoshi Mitake84c6f882010-02-04 16:08:15 +0900659
660 CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
Frederic Weisbeckerdd8b1cf2010-02-27 17:10:39 +0100661 (CONFIG_LOCKDEP defines "acquire" and "release" events.)
Hitoshi Mitake84c6f882010-02-04 16:08:15 +0900662
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700663config DEBUG_LOCKDEP
664 bool "Lock dependency engine debugging"
Adrian Bunk517e7aa2006-07-14 00:24:32 -0700665 depends on DEBUG_KERNEL && LOCKDEP
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700666 help
667 If you say Y here, the lock dependency engine will do
668 additional runtime checks to debug itself, at the price
669 of more runtime overhead.
670
671config TRACE_IRQFLAGS
672 bool
Steven Rostedt46b93b72010-08-31 16:35:20 -0400673 help
674 Enables hooks to interrupt enabling and disabling for
675 either tracing or lock debugging.
Ingo Molnar4d9f34a2006-07-03 00:24:55 -0700676
Frederic Weisbeckerd902db12011-06-08 19:31:56 +0200677config DEBUG_ATOMIC_SLEEP
678 bool "Sleep inside atomic section checking"
Frederic Weisbeckere8f7c702011-06-08 01:51:02 +0200679 select PREEMPT_COUNT
Linus Torvalds1da177e2005-04-16 15:20:36 -0700680 depends on DEBUG_KERNEL
681 help
682 If you say Y here, various routines which may sleep will become very
Frederic Weisbeckerd902db12011-06-08 19:31:56 +0200683 noisy if they are called inside atomic sections: when a spinlock is
684 held, inside an rcu read side critical section, inside preempt disabled
685 sections, inside an interrupt, etc...
Linus Torvalds1da177e2005-04-16 15:20:36 -0700686
Ingo Molnarcae2ed92006-07-03 00:24:48 -0700687config DEBUG_LOCKING_API_SELFTESTS
688 bool "Locking API boot-time self-tests"
689 depends on DEBUG_KERNEL
690 help
691 Say Y here if you want the kernel to run a short self-test during
692 bootup. The self-test checks whether common types of locking bugs
693 are detected by debugging mechanisms or not. (if you disable
694 lock debugging then those bugs wont be detected of course.)
695 The following locking APIs are covered: spinlocks, rwlocks,
696 mutexes and rwsems.
697
Ingo Molnar8637c092006-07-03 00:24:38 -0700698config STACKTRACE
699 bool
700 depends on STACKTRACE_SUPPORT
701
Stephen Boyd5ca43f62011-05-24 17:13:36 -0700702config DEBUG_STACK_USAGE
703 bool "Stack utilization instrumentation"
704 depends on DEBUG_KERNEL
705 help
706 Enables the display of the minimum amount of free stack which each
707 task has ever had available in the sysrq-T and sysrq-P debug output.
708
709 This option will slow down process creation somewhat.
710
Linus Torvalds1da177e2005-04-16 15:20:36 -0700711config DEBUG_KOBJECT
712 bool "kobject debugging"
713 depends on DEBUG_KERNEL
714 help
715 If you say Y here, some extra kobject debugging messages will be sent
716 to the syslog.
717
718config DEBUG_HIGHMEM
719 bool "Highmem debugging"
720 depends on DEBUG_KERNEL && HIGHMEM
721 help
722 This options enables addition error checking for high memory systems.
723 Disable for production systems.
724
725config DEBUG_BUGVERBOSE
David Rientjes6a108a12011-01-20 14:44:16 -0800726 bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
Matt Mackallc8538a72005-05-01 08:59:01 -0700727 depends on BUG
David Howellsb920de12008-02-08 04:19:31 -0800728 depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \
Chris Metcalf3cc39b32011-06-01 16:06:04 -0400729 FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 || TILE
Alexey Dobriyan8420e7e2009-12-14 18:00:25 -0800730 default y
Linus Torvalds1da177e2005-04-16 15:20:36 -0700731 help
732 Say Y here to make BUG() panics output the file name and line number
733 of the BUG call as well as the EIP and oops trace. This aids
734 debugging but costs about 70-100K of memory.
735
736config DEBUG_INFO
737 bool "Compile the kernel with debug info"
738 depends on DEBUG_KERNEL
739 help
740 If you say Y here the resulting kernel image will include
741 debugging info resulting in a larger kernel image.
Andreas Dilgerb72e53f2007-03-27 15:21:33 -0600742 This adds debug symbols to the kernel and modules (gcc -g), and
743 is needed if you intend to use kernel crashdump or binary object
744 tools like crash, kgdb, LKCD, gdb, etc on the kernel.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700745 Say Y here only if you plan to debug the kernel.
746
747 If unsure, say N.
748
Andi Kleend6f4ceb2010-07-14 15:43:52 +0200749config DEBUG_INFO_REDUCED
750 bool "Reduce debugging information"
751 depends on DEBUG_INFO
752 help
753 If you say Y here gcc is instructed to generate less debugging
754 information for structure types. This means that tools that
755 need full debugging information (like kgdb or systemtap) won't
756 be happy. But if you merely need debugging information to
757 resolve line numbers there is no loss. Advantage is that
758 build directory object sizes shrink dramatically over a full
759 DEBUG_INFO build and compile times are reduced too.
760 Only works with newer gcc versions.
761
Paul E. McKenneya241ec62005-10-30 15:03:12 -0800762config DEBUG_VM
763 bool "Debug VM"
764 depends on DEBUG_KERNEL
765 help
Nick Piggin13e74442006-01-06 00:10:58 -0800766 Enable this to turn on extended checks in the virtual-memory system
767 that may impact performance.
Paul E. McKenneya241ec62005-10-30 15:03:12 -0800768
769 If unsure, say N.
770
Jiri Slaby59ea7462008-06-12 13:56:40 +0200771config DEBUG_VIRTUAL
772 bool "Debug VM translations"
773 depends on DEBUG_KERNEL && X86
774 help
775 Enable some costly sanity checks in virtual to page code. This can
776 catch mistakes with virt_to_page() and friends.
777
778 If unsure, say N.
779
David Howells8feae132009-01-08 12:04:47 +0000780config DEBUG_NOMMU_REGIONS
781 bool "Debug the global anon/private NOMMU mapping region tree"
782 depends on DEBUG_KERNEL && !MMU
783 help
784 This option causes the global tree of anonymous and private mapping
785 regions to be regularly checked for invalid topology.
786
Dave Hansenad775f52008-02-15 14:38:01 -0800787config DEBUG_WRITECOUNT
788 bool "Debug filesystem writers count"
789 depends on DEBUG_KERNEL
790 help
791 Enable this to catch wrong use of the writers count in struct
792 vfsmount. This will increase the size of each file struct by
793 32 bits.
794
795 If unsure, say N.
796
Mel Gorman6b74ab92008-07-23 21:26:49 -0700797config DEBUG_MEMORY_INIT
David Rientjes6a108a12011-01-20 14:44:16 -0800798 bool "Debug memory initialisation" if EXPERT
799 default !EXPERT
Mel Gorman6b74ab92008-07-23 21:26:49 -0700800 help
801 Enable this for additional checks during memory initialisation.
802 The sanity checks verify aspects of the VM such as the memory model
803 and other information provided by the architecture. Verbose
804 information will be printed at KERN_DEBUG loglevel depending
805 on the mminit_loglevel= command-line option.
806
807 If unsure, say Y
808
Dave Jones199a9af2006-09-29 01:59:00 -0700809config DEBUG_LIST
810 bool "Debug linked list manipulation"
811 depends on DEBUG_KERNEL
812 help
813 Enable this to turn on extended checks in the linked-list
814 walking routines.
815
816 If unsure, say N.
817
Artem Bityutskiy6d411e62010-10-26 14:23:05 -0700818config TEST_LIST_SORT
819 bool "Linked list sorting test"
820 depends on DEBUG_KERNEL
821 help
822 Enable this to turn on 'list_sort()' function test. This test is
823 executed only once during system boot, so affects only boot time.
824
825 If unsure, say N.
826
Jens Axboed6ec0842007-10-22 20:01:06 +0200827config DEBUG_SG
828 bool "Debug SG table operations"
829 depends on DEBUG_KERNEL
830 help
831 Enable this to turn on checks on scatter-gather tables. This can
832 help find problems with drivers that do not properly initialize
833 their sg tables.
834
835 If unsure, say N.
836
Arjan van de Ven1b2439d2008-08-15 15:29:38 -0700837config DEBUG_NOTIFIERS
838 bool "Debug notifier call chains"
839 depends on DEBUG_KERNEL
840 help
841 Enable this to turn on sanity checking for notifier call chains.
842 This is most useful for kernel developers to make sure that
843 modules properly unregister themselves from notifier chains.
844 This is a relatively cheap check but if you care about maximum
845 performance, say N.
846
David Howellse0e81732009-09-02 09:13:40 +0100847config DEBUG_CREDENTIALS
848 bool "Debug credential management"
849 depends on DEBUG_KERNEL
850 help
851 Enable this to turn on some debug checking for credential
852 management. The additional code keeps track of the number of
853 pointers from task_structs to any given cred struct, and checks to
854 see that this number never exceeds the usage count of the cred
855 struct.
856
857 Furthermore, if SELinux is enabled, this also checks that the
858 security pointer in the cred struct is never seen to be invalid.
859
860 If unsure, say N.
861
Jeff Mahoney64dec402009-01-16 13:23:35 -0500862#
863# Select this config option from the architecture Kconfig, if it
Justin P. Mattock52288b62011-08-21 20:02:13 -0700864# is preferred to always offer frame pointers as a config
Jeff Mahoney64dec402009-01-16 13:23:35 -0500865# option on the architecture (regardless of KERNEL_DEBUG):
866#
867config ARCH_WANT_FRAME_POINTERS
868 bool
869 help
870
Linus Torvalds1da177e2005-04-16 15:20:36 -0700871config FRAME_POINTER
872 bool "Compile the kernel with frame pointers"
David Howellsb920de12008-02-08 04:19:31 -0800873 depends on DEBUG_KERNEL && \
Geert Uytterhoeven73020412011-01-22 22:35:38 +0100874 (CRIS || M68K || FRV || UML || \
Ingo Molnarda4276b2009-01-07 11:05:10 +0100875 AVR32 || SUPERH || BLACKFIN || MN10300) || \
876 ARCH_WANT_FRAME_POINTERS
877 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700878 help
Ingo Molnarda4276b2009-01-07 11:05:10 +0100879 If you say Y here the resulting kernel image will be slightly
880 larger and slower, but it gives very useful debugging information
881 in case of kernel bugs. (precise oopses/stacktraces/warnings)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700882
Randy Dunlapbfe8df32007-10-16 01:23:46 -0700883config BOOT_PRINTK_DELAY
884 bool "Delay each boot printk message by N milliseconds"
885 depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
886 help
887 This build option allows you to read kernel boot messages
888 by inserting a short delay after each one. The delay is
889 specified in milliseconds on the kernel command line,
890 using "boot_delay=N".
891
892 It is likely that you would also need to use "lpj=M" to preset
893 the "loops per jiffie" value.
894 See a previous boot log for the "lpj" value to use for your
895 system, and then set "lpj=M" before setting "boot_delay=N".
896 NOTE: Using this option may adversely affect SMP systems.
897 I.e., processors other than the first one may not boot up.
Anton Blanchard8edbb832011-07-05 13:32:40 +1000898 BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
Randy Dunlapbfe8df32007-10-16 01:23:46 -0700899 what it believes to be lockup conditions.
900
Paul E. McKenneya241ec62005-10-30 15:03:12 -0800901config RCU_TORTURE_TEST
902 tristate "torture tests for RCU"
903 depends on DEBUG_KERNEL
904 default n
905 help
906 This option provides a kernel module that runs torture tests
907 on the RCU infrastructure. The kernel module may be built
908 after the fact on the running kernel to be tested, if desired.
909
Paul E. McKenney31a72bc2008-06-18 09:26:49 -0700910 Say Y here if you want RCU torture tests to be built into
911 the kernel.
Paul E. McKenneya241ec62005-10-30 15:03:12 -0800912 Say M if you want the RCU torture tests to build as a module.
913 Say N if you are unsure.
Ankita Garg8bb31b92006-10-02 02:17:36 -0700914
Paul E. McKenney31a72bc2008-06-18 09:26:49 -0700915config RCU_TORTURE_TEST_RUNNABLE
916 bool "torture tests for RCU runnable by default"
917 depends on RCU_TORTURE_TEST = y
918 default n
919 help
920 This option provides a way to build the RCU torture tests
921 directly into the kernel without them starting up at boot
922 time. You can use /proc/sys/kernel/rcutorture_runnable
923 to manually override this setting. This /proc file is
924 available only when the RCU torture tests have been built
925 into the kernel.
926
927 Say Y here if you want the RCU torture tests to start during
928 boot (you probably don't).
929 Say N here if you want the RCU torture tests to start only
930 after being manually enabled via /proc.
931
Paul E. McKenneyb1637602010-06-02 16:21:38 -0700932config RCU_CPU_STALL_TIMEOUT
933 int "RCU CPU stall timeout in seconds"
Paul E. McKenneya00e0d712011-02-08 17:14:39 -0800934 depends on TREE_RCU || TREE_PREEMPT_RCU
Paul E. McKenneyb1637602010-06-02 16:21:38 -0700935 range 3 300
936 default 60
937 help
938 If a given RCU grace period extends more than the specified
939 number of seconds, a CPU stall warning is printed. If the
940 RCU grace period persists, additional CPU stall warnings are
941 printed at more widely spaced intervals.
942
Paul E. McKenney1ed509a2010-02-22 17:05:05 -0800943config RCU_CPU_STALL_VERBOSE
944 bool "Print additional per-task information for RCU_CPU_STALL_DETECTOR"
Paul E. McKenneya00e0d712011-02-08 17:14:39 -0800945 depends on TREE_PREEMPT_RCU
Paul E. McKenney55ec9362010-04-13 12:22:33 -0700946 default y
Paul E. McKenney1ed509a2010-02-22 17:05:05 -0800947 help
948 This option causes RCU to printk detailed per-task information
949 for any tasks that are stalling the current RCU grace period.
Paul E. McKenney64db4cf2008-12-18 21:55:32 +0100950
951 Say N if you are unsure.
952
Paul E. McKenney1ed509a2010-02-22 17:05:05 -0800953 Say Y if you want to enable such checks.
954
Paul E. McKenneya858af22012-01-16 13:29:10 -0800955config RCU_CPU_STALL_INFO
956 bool "Print additional diagnostics on RCU CPU stall"
957 depends on (TREE_RCU || TREE_PREEMPT_RCU) && DEBUG_KERNEL
958 default n
959 help
960 For each stalled CPU that is aware of the current RCU grace
961 period, print out additional per-CPU diagnostic information
962 regarding scheduling-clock ticks, idle state, and,
963 for RCU_FAST_NO_HZ kernels, idle-entry state.
964
965 Say N if you are unsure.
966
967 Say Y if you want to enable such diagnostics.
968
Paul E. McKenney5c8806a2012-01-06 15:10:44 -0800969config RCU_TRACE
970 bool "Enable tracing for RCU"
971 depends on DEBUG_KERNEL
972 help
973 This option provides tracing in RCU which presents stats
974 in debugfs for debugging RCU implementation.
975
976 Say Y here if you want to enable RCU tracing
977 Say N if you are unsure.
978
Ananth N Mavinakayanahalli8c1c9352008-01-30 13:32:53 +0100979config KPROBES_SANITY_TEST
980 bool "Kprobes sanity tests"
981 depends on DEBUG_KERNEL
982 depends on KPROBES
983 default n
984 help
985 This option provides for testing basic kprobes functionality on
986 boot. A sample kprobe, jprobe and kretprobe are inserted and
987 verified for functionality.
988
989 Say N if you are unsure.
990
Arjan van de Ven6dab2772008-01-30 13:33:08 +0100991config BACKTRACE_SELF_TEST
992 tristate "Self test for the backtrace code"
993 depends on DEBUG_KERNEL
994 default n
995 help
996 This option provides a kernel module that can be used to test
997 the kernel stack backtrace code. This option is not useful
998 for distributions or general kernels, but only for kernel
999 developers working on architecture code.
1000
Vegard Nossumad118c52008-06-27 18:04:48 +02001001 Note that if you want to also test saved backtraces, you will
1002 have to enable STACKTRACE as well.
1003
Arjan van de Ven6dab2772008-01-30 13:33:08 +01001004 Say N if you are unsure.
1005
Tejun Heo870d6652008-08-25 19:47:25 +09001006config DEBUG_BLOCK_EXT_DEVT
1007 bool "Force extended block device numbers and spread them"
1008 depends on DEBUG_KERNEL
1009 depends on BLOCK
Jens Axboe759f8ca2008-08-29 09:06:29 +02001010 default n
Tejun Heo870d6652008-08-25 19:47:25 +09001011 help
Tejun Heo0e11e342008-10-13 10:46:01 +02001012 BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
1013 SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
1014 YOU ARE DOING. Distros, please enable this and fix whatever
1015 is broken.
1016
Tejun Heo870d6652008-08-25 19:47:25 +09001017 Conventionally, block device numbers are allocated from
1018 predetermined contiguous area. However, extended block area
1019 may introduce non-contiguous block device numbers. This
1020 option forces most block device numbers to be allocated from
1021 the extended space and spreads them to discover kernel or
1022 userland code paths which assume predetermined contiguous
1023 device number allocation.
1024
Tejun Heo55dc7db2008-09-01 13:44:35 +02001025 Note that turning on this debug option shuffles all the
1026 device numbers for all IDE and SCSI devices including libata
1027 ones, so root partition specified using device number
1028 directly (via rdev or root=MAJ:MIN) won't work anymore.
1029 Textual device names (root=/dev/sdXn) will continue to work.
1030
Tejun Heo870d6652008-08-25 19:47:25 +09001031 Say N if you are unsure.
1032
Tejun Heo7c756e62009-06-24 15:13:50 +09001033config DEBUG_FORCE_WEAK_PER_CPU
1034 bool "Force weak per-cpu definitions"
1035 depends on DEBUG_KERNEL
1036 help
1037 s390 and alpha require percpu variables in modules to be
1038 defined weak to work around addressing range issue which
1039 puts the following two restrictions on percpu variable
1040 definitions.
1041
1042 1. percpu symbols must be unique whether static or not
1043 2. percpu variables can't be defined inside a function
1044
1045 To ensure that generic code follows the above rules, this
1046 option forces all percpu variables to be defined as weak.
1047
Stephen Boyd44ec7ab2011-05-24 17:13:32 -07001048config DEBUG_PER_CPU_MAPS
1049 bool "Debug access to per_cpu maps"
1050 depends on DEBUG_KERNEL
1051 depends on SMP
1052 help
1053 Say Y to verify that the per_cpu map being accessed has
1054 been set up. This adds a fair amount of code to kernel memory
1055 and decreases performance.
1056
1057 Say N if unsure.
1058
Ankita Garg8bb31b92006-10-02 02:17:36 -07001059config LKDTM
1060 tristate "Linux Kernel Dump Test Tool Module"
Simon Kagstrom0347af42010-03-05 13:42:49 -08001061 depends on DEBUG_FS
Chris Snookfddd9cf2008-02-23 15:23:26 -08001062 depends on BLOCK
Ankita Garg8bb31b92006-10-02 02:17:36 -07001063 default n
1064 help
1065 This module enables testing of the different dumping mechanisms by
1066 inducing system failures at predefined crash points.
1067 If you don't need it: say N
1068 Choose M here to compile this code as a module. The module will be
1069 called lkdtm.
1070
1071 Documentation on how to use the module can be found in
Simon Kagstrom0347af42010-03-05 13:42:49 -08001072 Documentation/fault-injection/provoke-crashes.txt
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001073
Akinobu Mitac9d221f2010-05-26 14:43:36 -07001074config CPU_NOTIFIER_ERROR_INJECT
1075 tristate "CPU notifier error injection module"
1076 depends on HOTPLUG_CPU && DEBUG_KERNEL
1077 help
1078 This option provides a kernel module that can be used to test
1079 the error handling of the cpu notifiers
1080
1081 To compile this code as a module, choose M here: the module will
1082 be called cpu-notifier-error-inject.
1083
1084 If unsure, say N.
1085
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001086config FAULT_INJECTION
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001087 bool "Fault-injection framework"
1088 depends on DEBUG_KERNEL
Akinobu Mita329409a2006-12-08 02:39:48 -08001089 help
1090 Provide fault-injection framework.
1091 For more details, see Documentation/fault-injection/.
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001092
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001093config FAILSLAB
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001094 bool "Fault-injection capability for kmalloc"
1095 depends on FAULT_INJECTION
Akinobu Mita773ff602008-12-23 19:37:01 +09001096 depends on SLAB || SLUB
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001097 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001098 Provide fault-injection capability for kmalloc.
Akinobu Mita8a8b6502006-12-08 02:39:44 -08001099
Akinobu Mita933e3122006-12-08 02:39:45 -08001100config FAIL_PAGE_ALLOC
1101 bool "Fault-injection capabilitiy for alloc_pages()"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001102 depends on FAULT_INJECTION
Akinobu Mita933e3122006-12-08 02:39:45 -08001103 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001104 Provide fault-injection capability for alloc_pages().
Akinobu Mita933e3122006-12-08 02:39:45 -08001105
Akinobu Mitac17bb492006-12-08 02:39:46 -08001106config FAIL_MAKE_REQUEST
Dave Jones86327d12006-12-12 20:16:36 +01001107 bool "Fault-injection capability for disk IO"
Jens Axboe581d4e22008-09-14 05:56:33 -07001108 depends on FAULT_INJECTION && BLOCK
Akinobu Mitac17bb492006-12-08 02:39:46 -08001109 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001110 Provide fault-injection capability for disk IO.
Akinobu Mitac17bb492006-12-08 02:39:46 -08001111
Jens Axboe581d4e22008-09-14 05:56:33 -07001112config FAIL_IO_TIMEOUT
Takuya Yoshikawaf4d01432010-07-21 16:05:53 +09001113 bool "Fault-injection capability for faking disk interrupts"
Jens Axboe581d4e22008-09-14 05:56:33 -07001114 depends on FAULT_INJECTION && BLOCK
1115 help
1116 Provide fault-injection capability on end IO handling. This
1117 will make the block layer "forget" an interrupt as configured,
1118 thus exercising the error handling.
1119
1120 Only works with drivers that use the generic timeout handling,
1121 for others it wont do anything.
1122
Per Forlin1b676f72011-08-19 14:52:37 +02001123config FAIL_MMC_REQUEST
1124 bool "Fault-injection capability for MMC IO"
1125 select DEBUG_FS
1126 depends on FAULT_INJECTION && MMC
1127 help
1128 Provide fault-injection capability for MMC IO.
1129 This will make the mmc core return data errors. This is
1130 useful to test the error handling in the mmc block device
1131 and to test how the mmc host driver handles retries from
1132 the block device.
1133
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001134config FAULT_INJECTION_DEBUG_FS
1135 bool "Debugfs entries for fault-injection capabilities"
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001136 depends on FAULT_INJECTION && SYSFS && DEBUG_FS
Akinobu Mita6ff1cb32006-12-08 02:39:43 -08001137 help
Andrew Morton1ab8509a2006-12-08 02:39:49 -08001138 Enable configuration of fault-injection capabilities via debugfs.
Akinobu Mita1df49002007-02-20 13:57:56 -08001139
1140config FAULT_INJECTION_STACKTRACE_FILTER
1141 bool "stacktrace filter for fault-injection capabilities"
1142 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
Akinobu Mita6d690dc2007-05-12 10:36:53 -07001143 depends on !X86_64
Akinobu Mita1df49002007-02-20 13:57:56 -08001144 select STACKTRACE
Arnd Bergmann89bace62011-06-10 14:12:21 +00001145 select FRAME_POINTER if !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND
Akinobu Mita1df49002007-02-20 13:57:56 -08001146 help
1147 Provide stacktrace filter for fault-injection capabilities
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07001148
Arjan van de Ven97455122008-01-25 21:08:34 +01001149config LATENCYTOP
1150 bool "Latency measuring infrastructure"
Randy Dunlap625fdca2010-08-12 12:31:21 -07001151 depends on HAVE_LATENCYTOP_SUPPORT
1152 depends on DEBUG_KERNEL
1153 depends on STACKTRACE_SUPPORT
1154 depends on PROC_FS
Arnd Bergmann89bace62011-06-10 14:12:21 +00001155 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND
Arjan van de Ven97455122008-01-25 21:08:34 +01001156 select KALLSYMS
1157 select KALLSYMS_ALL
1158 select STACKTRACE
1159 select SCHEDSTATS
1160 select SCHED_DEBUG
Arjan van de Ven97455122008-01-25 21:08:34 +01001161 help
1162 Enable this option if you want to use the LatencyTOP tool
1163 to find out which userspace is blocking on what kernel operations.
1164
Akinobu Mita6a11f752009-03-31 15:23:17 -07001165source mm/Kconfig.debug
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001166source kernel/trace/Kconfig
1167
Bernhard Kaindlf212ec42008-01-30 13:34:11 +01001168config PROVIDE_OHCI1394_DMA_INIT
Stefan Richter080de8c2008-02-28 20:54:43 +01001169 bool "Remote debugging over FireWire early on boot"
Bernhard Kaindlf212ec42008-01-30 13:34:11 +01001170 depends on PCI && X86
1171 help
1172 If you want to debug problems which hang or crash the kernel early
1173 on boot and the crashing machine has a FireWire port, you can use
1174 this feature to remotely access the memory of the crashed machine
1175 over FireWire. This employs remote DMA as part of the OHCI1394
1176 specification which is now the standard for FireWire controllers.
1177
1178 With remote DMA, you can monitor the printk buffer remotely using
1179 firescope and access all memory below 4GB using fireproxy from gdb.
1180 Even controlling a kernel debugger is possible using remote DMA.
1181
1182 Usage:
1183
1184 If ohci1394_dma=early is used as boot parameter, it will initialize
1185 all OHCI1394 controllers which are found in the PCI config space.
1186
1187 As all changes to the FireWire bus such as enabling and disabling
1188 devices cause a bus reset and thereby disable remote DMA for all
1189 devices, be sure to have the cable plugged and FireWire enabled on
1190 the debugging host before booting the debug target for debugging.
1191
1192 This code (~1k) is freed after boot. By then, the firewire stack
1193 in charge of the OHCI-1394 controllers should be used instead.
1194
1195 See Documentation/debugging-via-ohci1394.txt for more information.
Arjan van de Ven97455122008-01-25 21:08:34 +01001196
Stefan Richter080de8c2008-02-28 20:54:43 +01001197config FIREWIRE_OHCI_REMOTE_DMA
1198 bool "Remote debugging over FireWire with firewire-ohci"
1199 depends on FIREWIRE_OHCI
1200 help
1201 This option lets you use the FireWire bus for remote debugging
1202 with help of the firewire-ohci driver. It enables unfiltered
1203 remote DMA in firewire-ohci.
1204 See Documentation/debugging-via-ohci1394.txt for more information.
1205
1206 If unsure, say N.
1207
Randy Dunlap152de302009-02-20 15:38:47 -08001208config BUILD_DOCSRC
Randy Dunlap3794f3e2008-08-12 15:09:06 -07001209 bool "Build targets in Documentation/ tree"
1210 depends on HEADERS_CHECK
1211 help
1212 This option attempts to build objects from the source files in the
1213 kernel Documentation/ tree.
1214
1215 Say N if you are unsure.
1216
Jason Barone9d376f2009-02-05 11:51:38 -05001217config DYNAMIC_DEBUG
Jason Baron86151fd2009-02-05 11:53:15 -05001218 bool "Enable dynamic printk() support"
Jason Baron346e15b2008-08-12 16:46:19 -04001219 default n
1220 depends on PRINTK
Jason Baron86151fd2009-02-05 11:53:15 -05001221 depends on DEBUG_FS
Jason Baron346e15b2008-08-12 16:46:19 -04001222 help
1223
1224 Compiles debug level messages into the kernel, which would not
1225 otherwise be available at runtime. These messages can then be
Jason Baron86151fd2009-02-05 11:53:15 -05001226 enabled/disabled based on various levels of scope - per source file,
1227 function, module, format string, and line number. This mechanism
1228 implicitly enables all pr_debug() and dev_dbg() calls. The impact of
1229 this compile option is a larger kernel text size of about 2%.
Jason Baron346e15b2008-08-12 16:46:19 -04001230
1231 Usage:
1232
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001233 Dynamic debugging is controlled via the 'dynamic_debug/control' file,
Jason Baron86151fd2009-02-05 11:53:15 -05001234 which is contained in the 'debugfs' filesystem. Thus, the debugfs
1235 filesystem must first be mounted before making use of this feature.
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001236 We refer the control file as: <debugfs>/dynamic_debug/control. This
Jason Baron86151fd2009-02-05 11:53:15 -05001237 file contains a list of the debug statements that can be enabled. The
1238 format for each line of the file is:
Jason Baron346e15b2008-08-12 16:46:19 -04001239
Jason Baron86151fd2009-02-05 11:53:15 -05001240 filename:lineno [module]function flags format
Jason Baron346e15b2008-08-12 16:46:19 -04001241
Jason Baron86151fd2009-02-05 11:53:15 -05001242 filename : source file of the debug statement
1243 lineno : line number of the debug statement
1244 module : module that contains the debug statement
1245 function : function that contains the debug statement
1246 flags : 'p' means the line is turned 'on' for printing
1247 format : the format used for the debug statement
Jason Baron346e15b2008-08-12 16:46:19 -04001248
1249 From a live system:
1250
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001251 nullarbor:~ # cat <debugfs>/dynamic_debug/control
Jason Baron86151fd2009-02-05 11:53:15 -05001252 # filename:lineno [module]function flags format
1253 fs/aio.c:222 [aio]__put_ioctx - "__put_ioctx:\040freeing\040%p\012"
1254 fs/aio.c:248 [aio]ioctx_alloc - "ENOMEM:\040nr_events\040too\040high\012"
1255 fs/aio.c:1770 [aio]sys_io_cancel - "calling\040cancel\012"
Jason Baron346e15b2008-08-12 16:46:19 -04001256
Jason Baron86151fd2009-02-05 11:53:15 -05001257 Example usage:
Jason Baron346e15b2008-08-12 16:46:19 -04001258
Jason Baron86151fd2009-02-05 11:53:15 -05001259 // enable the message at line 1603 of file svcsock.c
1260 nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001261 <debugfs>/dynamic_debug/control
Jason Baron346e15b2008-08-12 16:46:19 -04001262
Jason Baron86151fd2009-02-05 11:53:15 -05001263 // enable all the messages in file svcsock.c
1264 nullarbor:~ # echo -n 'file svcsock.c +p' >
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001265 <debugfs>/dynamic_debug/control
Jason Baron346e15b2008-08-12 16:46:19 -04001266
Jason Baron86151fd2009-02-05 11:53:15 -05001267 // enable all the messages in the NFS server module
1268 nullarbor:~ # echo -n 'module nfsd +p' >
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001269 <debugfs>/dynamic_debug/control
Jason Baron346e15b2008-08-12 16:46:19 -04001270
Jason Baron86151fd2009-02-05 11:53:15 -05001271 // enable all 12 messages in the function svc_process()
1272 nullarbor:~ # echo -n 'func svc_process +p' >
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001273 <debugfs>/dynamic_debug/control
Jason Baron346e15b2008-08-12 16:46:19 -04001274
Jason Baron86151fd2009-02-05 11:53:15 -05001275 // disable all 12 messages in the function svc_process()
1276 nullarbor:~ # echo -n 'func svc_process -p' >
Florian Ragwitz2b2f68b2010-05-24 14:33:21 -07001277 <debugfs>/dynamic_debug/control
Jason Baron346e15b2008-08-12 16:46:19 -04001278
Jason Baron86151fd2009-02-05 11:53:15 -05001279 See Documentation/dynamic-debug-howto.txt for additional information.
Jason Baron346e15b2008-08-12 16:46:19 -04001280
Joerg Roedel5ee00bd2009-01-09 12:14:24 +01001281config DMA_API_DEBUG
1282 bool "Enable debugging of DMA-API usage"
1283 depends on HAVE_DMA_API_DEBUG
1284 help
1285 Enable this option to debug the use of the DMA API by device drivers.
1286 With this option you will be able to detect common bugs in device
1287 drivers like double-freeing of DMA mappings or freeing mappings that
1288 were never allocated.
1289 This option causes a performance degredation. Use only if you want
1290 to debug device drivers. If unsure, say N.
Jason Baron346e15b2008-08-12 16:46:19 -04001291
Luca Barbieri86a89382010-02-24 10:54:24 +01001292config ATOMIC64_SELFTEST
1293 bool "Perform an atomic64_t self-test at boot"
1294 help
1295 Enable this option to test the atomic64_t functions at boot.
1296
1297 If unsure, say N.
1298
Dan Williams400fb7f2010-10-07 15:25:04 -07001299config ASYNC_RAID6_TEST
1300 tristate "Self test for hardware accelerated raid6 recovery"
1301 depends on ASYNC_RAID6_RECOV
1302 select ASYNC_MEMCPY
1303 ---help---
1304 This is a one-shot self test that permutes through the
1305 recovery of all the possible two disk failure scenarios for a
1306 N-disk array. Recovery is performed with the asynchronous
1307 raid6 recovery routines, and will optionally use an offload
1308 engine if one is available.
1309
1310 If unsure, say N.
1311
Mathieu Desnoyers267c4022007-10-18 23:41:07 -07001312source "samples/Kconfig"
Jason Wesseldc7d5522008-04-17 20:05:37 +02001313
1314source "lib/Kconfig.kgdb"
Pekka Enberg0a4af3b2009-02-26 21:38:56 +02001315
1316source "lib/Kconfig.kmemcheck"
Alexey Dobriyan33ee3b22011-03-22 16:34:40 -07001317
1318config TEST_KSTRTOX
1319 tristate "Test kstrto*() family of functions at runtime"