blob: f0cf5d9907947c6536ecf07ea5aa224db10623f4 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001menu "Kernel hacking"
2
Ingo Molnar55f327f2006-07-03 00:24:43 -07003config TRACE_IRQFLAGS_SUPPORT
Randy Dunlapd013a272007-10-24 15:50:43 -07004 def_bool y
Ingo Molnar55f327f2006-07-03 00:24:43 -07005
Linus Torvalds1da177e2005-04-16 15:20:36 -07006source "lib/Kconfig.debug"
7
Ingo Molnar64d206d2008-07-18 00:26:59 +02008config PROMISC_DEVMEM
9 bool "Allow unlimited access to /dev/mem"
10 default y
Arjan van de Venae531c22008-04-24 23:40:47 +020011 help
Ingo Molnar64d206d2008-07-18 00:26:59 +020012 If this option is left on, you allow userspace (root) access to all
Stefan Richter16104b52008-06-05 22:47:13 +020013 of memory, including kernel and userspace memory. Accidental
14 access to this is obviously disastrous, but specific access can
15 be used by people debugging the kernel.
16
17 If this option is switched on, the /dev/mem file only allows
18 userspace access to PCI space and the BIOS code and data regions.
19 This is sufficient for dosemu and X and all common users of
20 /dev/mem.
21
22 If in doubt, say Y.
Arjan van de Venae531c22008-04-24 23:40:47 +020023
Ben Collins6bcb13b2008-06-18 14:04:35 -040024config X86_VERBOSE_BOOTUP
25 bool "Enable verbose x86 bootup info messages"
26 default y
27 help
28 Enables the informational output from the decompression stage
29 (e.g. bzImage) of the boot. If you disable this you will still
30 see errors. Disable this if you want silent bootup.
31
Linus Torvalds1da177e2005-04-16 15:20:36 -070032config EARLY_PRINTK
Ingo Molnar076f9772008-01-30 13:33:06 +010033 bool "Early printk" if EMBEDDED
Linus Torvalds1da177e2005-04-16 15:20:36 -070034 default y
35 help
36 Write kernel log output directly into the VGA buffer or to a serial
37 port.
38
39 This is useful for kernel debugging when your machine crashes very
40 early before the console code is initialized. For normal operation
41 it is not recommended because it looks ugly and doesn't cooperate
42 with klogd/syslogd or the X server. You should normally N here,
43 unless you want to debug such a crash.
44
45config DEBUG_STACKOVERFLOW
46 bool "Check for stack overflows"
47 depends on DEBUG_KERNEL
Adrian Bunkdab175f2005-07-27 11:44:23 -070048 help
49 This option will cause messages to be printed if free stack space
50 drops below a certain limit.
Linus Torvalds1da177e2005-04-16 15:20:36 -070051
Linus Torvalds1da177e2005-04-16 15:20:36 -070052config DEBUG_STACK_USAGE
53 bool "Stack utilization instrumentation"
54 depends on DEBUG_KERNEL
55 help
56 Enables the display of the minimum amount of free stack which each
57 task has ever had available in the sysrq-T and sysrq-P debug output.
58
59 This option will slow down process creation somewhat.
60
Linus Torvalds1da177e2005-04-16 15:20:36 -070061config DEBUG_PAGEALLOC
Andrew Morton4a2f0ac2006-03-25 03:07:22 -080062 bool "Debug page memory allocations"
Thomas Gleixnerb1d95f42008-02-09 23:24:09 +010063 depends on DEBUG_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -070064 help
65 Unmap pages from the kernel linear mapping after free_pages().
66 This results in a large slowdown, but helps to find certain types
67 of memory corruptions.
68
travis@sgi.comc49a4952008-01-30 13:33:22 +010069config DEBUG_PER_CPU_MAPS
70 bool "Debug access to per_cpu maps"
71 depends on DEBUG_KERNEL
Mike Travis23ca4bb2008-05-12 21:21:12 +020072 depends on X86_SMP
travis@sgi.comc49a4952008-01-30 13:33:22 +010073 default n
74 help
75 Say Y to verify that the per_cpu map being accessed has
76 been setup. Adds a fair amount of code to kernel memory
77 and decreases performance.
78
79 Say N if unsure.
80
Arjan van de Ven926e5392008-04-17 17:40:45 +020081config X86_PTDUMP
82 bool "Export kernel pagetable layout to userspace via debugfs"
H. Peter Anvinfe770bf2008-04-17 17:40:45 +020083 depends on DEBUG_KERNEL
Arjan van de Ven926e5392008-04-17 17:40:45 +020084 select DEBUG_FS
85 help
86 Say Y here if you want to show the kernel pagetable layout in a
87 debugfs file. This information is only useful for kernel developers
88 who are working in architecture specific areas of the kernel.
89 It is probably not a good idea to enable this feature in a production
90 kernel.
91 If in doubt, say "N"
92
Arjan van de Ven63aaf302006-01-06 00:12:02 -080093config DEBUG_RODATA
94 bool "Write protect kernel read-only data structures"
Ingo Molnar11201e62008-01-30 13:33:32 +010095 default y
Arjan van de Ven63aaf302006-01-06 00:12:02 -080096 depends on DEBUG_KERNEL
97 help
98 Mark the kernel read-only data as write-protected in the pagetables,
99 in order to catch accidental (and incorrect) writes to such const
Ingo Molnar11201e62008-01-30 13:33:32 +0100100 data. This is recommended so that we can catch kernel bugs sooner.
101 If in doubt, say "Y".
Arjan van de Ven63aaf302006-01-06 00:12:02 -0800102
Ingo Molnar00d1c5e2008-04-17 17:40:45 +0200103config DIRECT_GBPAGES
104 bool "Enable gbpages-mapped kernel pagetables"
105 depends on DEBUG_KERNEL && EXPERIMENTAL && X86_64
106 help
107 Enable gigabyte pages support (if the CPU supports it). This can
108 improve the kernel's performance a tiny bit by reducing TLB
109 pressure.
110
111 This is experimental code.
112
113 If in doubt, say "N".
114
Ingo Molnaraba83912008-01-30 13:34:09 +0100115config DEBUG_RODATA_TEST
116 bool "Testcase for the DEBUG_RODATA feature"
117 depends on DEBUG_RODATA
118 help
119 This option enables a testcase for the DEBUG_RODATA
120 feature as well as for the change_page_attr() infrastructure.
121 If in doubt, say "N"
122
123config DEBUG_NX_TEST
124 tristate "Testcase for the NX non-executable stack feature"
125 depends on DEBUG_KERNEL && m
126 help
127 This option enables a testcase for the CPU NX capability
128 and the software setup of this feature.
129 If in doubt, say "N"
130
Linus Torvalds1da177e2005-04-16 15:20:36 -0700131config 4KSTACKS
132 bool "Use 4Kb for kernel stacks instead of 8Kb"
Randy Dunlapd013a272007-10-24 15:50:43 -0700133 depends on X86_32
Linus Torvalds1da177e2005-04-16 15:20:36 -0700134 help
135 If you say Y here the kernel will use a 4Kb stacksize for the
136 kernel stack attached to each process/thread. This facilitates
137 running more threads on a system and also reduces the pressure
138 on the VM subsystem for higher order allocations. This option
139 will also use IRQ stacks to compensate for the reduced stackspace.
140
Andi Kleen102e41f2006-04-18 12:35:22 +0200141config DOUBLEFAULT
142 default y
143 bool "Enable doublefault exception handler" if EMBEDDED
Randy Dunlapd013a272007-10-24 15:50:43 -0700144 depends on X86_32
Andi Kleen102e41f2006-04-18 12:35:22 +0200145 help
Randy Dunlapd013a272007-10-24 15:50:43 -0700146 This option allows trapping of rare doublefault exceptions that
147 would otherwise cause a system to silently reboot. Disabling this
148 option saves about 4k and might cause you much additional grey
149 hair.
150
151config IOMMU_DEBUG
152 bool "Enable IOMMU debugging"
Joerg Roedel966396d2007-10-24 12:49:48 +0200153 depends on GART_IOMMU && DEBUG_KERNEL
Randy Dunlapd013a272007-10-24 15:50:43 -0700154 depends on X86_64
155 help
156 Force the IOMMU to on even when you have less than 4GB of
157 memory and add debugging code. On overflow always panic. And
158 allow to enable IOMMU leak tracing. Can be disabled at boot
159 time with iommu=noforce. This will also enable scatter gather
160 list merging. Currently not recommended for production
161 code. When you use it make sure you have a big enough
162 IOMMU/AGP aperture. Most of the options enabled by this can
163 be set more finegrained using the iommu= command line
164 options. See Documentation/x86_64/boot-options.txt for more
165 details.
166
167config IOMMU_LEAK
168 bool "IOMMU leak tracing"
169 depends on DEBUG_KERNEL
170 depends on IOMMU_DEBUG
171 help
172 Add a simple leak tracer to the IOMMU code. This is useful when you
173 are debugging a buggy device driver that leaks IOMMU mappings.
174
Pekka Paalanen10c43d22008-05-12 21:20:57 +0200175config MMIOTRACE_HOOKS
176 bool
Pekka Paalanen86069782008-05-12 21:20:56 +0200177
Pekka Paalanen8b7d89d2008-05-12 21:20:56 +0200178config MMIOTRACE
Pekka Paalanend61fc442008-05-12 21:20:57 +0200179 bool "Memory mapped IO tracing"
Randy Dunlap37b36192008-05-12 21:20:59 +0200180 depends on DEBUG_KERNEL && PCI
Pekka Paalanenf984b512008-05-12 21:20:57 +0200181 select TRACING
Pekka Paalanen10c43d22008-05-12 21:20:57 +0200182 select MMIOTRACE_HOOKS
Pekka Paalanen8b7d89d2008-05-12 21:20:56 +0200183 help
Pekka Paalanend61fc442008-05-12 21:20:57 +0200184 Mmiotrace traces Memory Mapped I/O access and is meant for
185 debugging and reverse engineering. It is called from the ioremap
Pekka Paalanenc6c67c12008-05-12 21:20:59 +0200186 implementation and works via page faults. Tracing is disabled by
Randy Dunlap37b36192008-05-12 21:20:59 +0200187 default and can be enabled at run-time.
Pekka Paalanen8b7d89d2008-05-12 21:20:56 +0200188
Pekka Paalanenc6c67c12008-05-12 21:20:59 +0200189 See Documentation/tracers/mmiotrace.txt.
Pekka Paalanen8b7d89d2008-05-12 21:20:56 +0200190 If you are not helping to develop drivers, say N.
191
192config MMIOTRACE_TEST
193 tristate "Test module for mmiotrace"
194 depends on MMIOTRACE && m
Pekka Paalanen8b7d89d2008-05-12 21:20:56 +0200195 help
196 This is a dumb module for testing mmiotrace. It is very dangerous
197 as it will write garbage to IO memory starting at a given address.
198 However, it should be safe to use on e.g. unused portion of VRAM.
199
200 Say N, unless you absolutely know what you are doing.
201
Ingo Molnar6e7c4022008-01-30 13:30:05 +0100202#
203# IO delay types:
204#
205
206config IO_DELAY_TYPE_0X80
207 int
208 default "0"
209
210config IO_DELAY_TYPE_0XED
211 int
212 default "1"
213
214config IO_DELAY_TYPE_UDELAY
215 int
216 default "2"
217
218config IO_DELAY_TYPE_NONE
219 int
220 default "3"
221
222choice
223 prompt "IO delay type"
Ingo Molnarfd59e9e2008-02-17 20:20:24 +0100224 default IO_DELAY_0X80
Ingo Molnar6e7c4022008-01-30 13:30:05 +0100225
226config IO_DELAY_0X80
227 bool "port 0x80 based port-IO delay [recommended]"
Rene Hermanb02aae92008-01-30 13:30:05 +0100228 help
Ingo Molnar6e7c4022008-01-30 13:30:05 +0100229 This is the traditional Linux IO delay used for in/out_p.
230 It is the most tested hence safest selection here.
231
232config IO_DELAY_0XED
233 bool "port 0xed based port-IO delay"
234 help
235 Use port 0xed as the IO delay. This frees up port 0x80 which is
236 often used as a hardware-debug port.
237
238config IO_DELAY_UDELAY
239 bool "udelay based port-IO delay"
240 help
241 Use udelay(2) as the IO delay method. This provides the delay
242 while not having any side-effect on the IO port space.
243
244config IO_DELAY_NONE
245 bool "no port-IO delay"
246 help
247 No port-IO delay. Will break on old boxes that require port-IO
248 delay for certain operations. Should work on most new machines.
249
250endchoice
251
252if IO_DELAY_0X80
253config DEFAULT_IO_DELAY_TYPE
254 int
255 default IO_DELAY_TYPE_0X80
256endif
257
258if IO_DELAY_0XED
259config DEFAULT_IO_DELAY_TYPE
260 int
261 default IO_DELAY_TYPE_0XED
262endif
263
264if IO_DELAY_UDELAY
265config DEFAULT_IO_DELAY_TYPE
266 int
267 default IO_DELAY_TYPE_UDELAY
268endif
269
270if IO_DELAY_NONE
271config DEFAULT_IO_DELAY_TYPE
272 int
273 default IO_DELAY_TYPE_NONE
274endif
Rene Hermanb02aae92008-01-30 13:30:05 +0100275
Huang, Ying6d7d7432008-01-30 13:32:51 +0100276config DEBUG_BOOT_PARAMS
277 bool "Debug boot parameters"
278 depends on DEBUG_KERNEL
279 depends on DEBUG_FS
280 help
281 This option will cause struct boot_params to be exported via debugfs.
282
Andi Kleen0c42f392008-01-30 13:33:42 +0100283config CPA_DEBUG
Ingo Molnar971a52d2008-02-06 22:39:45 +0100284 bool "CPA self-test code"
Ingo Molnarf316fe62008-01-30 13:34:04 +0100285 depends on DEBUG_KERNEL
Andi Kleen0c42f392008-01-30 13:33:42 +0100286 help
Ingo Molnar971a52d2008-02-06 22:39:45 +0100287 Do change_page_attr() self-tests every 30 seconds.
Andi Kleen0c42f392008-01-30 13:33:42 +0100288
Ingo Molnar60a3cdd2008-03-03 12:38:52 +0100289config OPTIMIZE_INLINING
290 bool "Allow gcc to uninline functions marked 'inline'"
Linus Torvalds6d98ca72008-04-30 19:50:03 -0700291 depends on BROKEN
Ingo Molnar60a3cdd2008-03-03 12:38:52 +0100292 help
293 This option determines if the kernel forces gcc to inline the functions
294 developers have marked 'inline'. Doing so takes away freedom from gcc to
295 do what it thinks is best, which is desirable for the gcc 3.x series of
296 compilers. The gcc 4.x series have a rewritten inlining algorithm and
297 disabling this option will generate a smaller kernel there. Hopefully
298 this algorithm is so good that allowing gcc4 to make the decision can
299 become the default in the future, until then this option is there to
300 test gcc for this.
Ingo Molnarc9af1e32008-04-30 08:48:45 +0200301
302endmenu
303