summaryrefslogtreecommitdiff
path: root/arch/x86/Kconfig.debug
blob: eeeb5225778b803f72ef9664e5f412290ee7302b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
menu "Kernel hacking"

config TRACE_IRQFLAGS_SUPPORT
	def_bool y

source "lib/Kconfig.debug"

config NONPROMISC_DEVMEM
	bool "Filter access to /dev/mem"
	help
	  If this option is left off, you allow userspace access to all
	  of memory, including kernel and userspace memory. Accidental
	  access to this is obviously disastrous, but specific access can
	  be used by people debugging the kernel.

	  If this option is switched on, the /dev/mem file only allows
	  userspace access to PCI space and the BIOS code and data regions.
	  This is sufficient for dosemu and X and all common users of
	  /dev/mem.

	  If in doubt, say Y.

config EARLY_PRINTK
	bool "Early printk" if EMBEDDED
	default y
	help
	  Write kernel log output directly into the VGA buffer or to a serial
	  port.

	  This is useful for kernel debugging when your machine crashes very
	  early before the console code is initialized. For normal operation
	  it is not recommended because it looks ugly and doesn't cooperate
	  with klogd/syslogd or the X server. You should normally N here,
	  unless you want to debug such a crash.

config DEBUG_STACKOVERFLOW
	bool "Check for stack overflows"
	depends on DEBUG_KERNEL
	help
	  This option will cause messages to be printed if free stack space
	  drops below a certain limit.

config DEBUG_STACK_USAGE
	bool "Stack utilization instrumentation"
	depends on DEBUG_KERNEL
	help
	  Enables the display of the minimum amount of free stack which each
	  task has ever had available in the sysrq-T and sysrq-P debug output.

	  This option will slow down process creation somewhat.

config DEBUG_PAGEALLOC
	bool "Debug page memory allocations"
	depends on DEBUG_KERNEL
	help
	  Unmap pages from the kernel linear mapping after free_pages().
	  This results in a large slowdown, but helps to find certain types
	  of memory corruptions.

config DEBUG_PER_CPU_MAPS
	bool "Debug access to per_cpu maps"
	depends on DEBUG_KERNEL
	depends on X86_64_SMP
	default n
	help
	  Say Y to verify that the per_cpu map being accessed has
	  been setup.  Adds a fair amount of code to kernel memory
	  and decreases performance.

	  Say N if unsure.

config X86_PTDUMP
	bool "Export kernel pagetable layout to userspace via debugfs"
	depends on DEBUG_KERNEL
	select DEBUG_FS
	help
	  Say Y here if you want to show the kernel pagetable layout in a
	  debugfs file. This information is only useful for kernel developers
	  who are working in architecture specific areas of the kernel.
	  It is probably not a good idea to enable this feature in a production
	  kernel.
	  If in doubt, say "N"

config DEBUG_RODATA
	bool "Write protect kernel read-only data structures"
	default y
	depends on DEBUG_KERNEL
	help
	  Mark the kernel read-only data as write-protected in the pagetables,
	  in order to catch accidental (and incorrect) writes to such const
	  data. This is recommended so that we can catch kernel bugs sooner.
	  If in doubt, say "Y".

config DIRECT_GBPAGES
	bool "Enable gbpages-mapped kernel pagetables"
	depends on DEBUG_KERNEL && EXPERIMENTAL && X86_64
	help
	  Enable gigabyte pages support (if the CPU supports it). This can
	  improve the kernel's performance a tiny bit by reducing TLB
	  pressure.

	  This is experimental code.

	  If in doubt, say "N".

config DEBUG_RODATA_TEST
	bool "Testcase for the DEBUG_RODATA feature"
	depends on DEBUG_RODATA
	help
	  This option enables a testcase for the DEBUG_RODATA
	  feature as well as for the change_page_attr() infrastructure.
	  If in doubt, say "N"

config DEBUG_NX_TEST
	tristate "Testcase for the NX non-executable stack feature"
	depends on DEBUG_KERNEL && m
	help
	  This option enables a testcase for the CPU NX capability
	  and the software setup of this feature.
	  If in doubt, say "N"

config 4KSTACKS
	bool "Use 4Kb for kernel stacks instead of 8Kb"
	depends on X86_32
	help
	  If you say Y here the kernel will use a 4Kb stacksize for the
	  kernel stack attached to each process/thread. This facilitates
	  running more threads on a system and also reduces the pressure
	  on the VM subsystem for higher order allocations. This option
	  will also use IRQ stacks to compensate for the reduced stackspace.

config X86_FIND_SMP_CONFIG
	def_bool y
	depends on X86_LOCAL_APIC || X86_VOYAGER
	depends on X86_32

config X86_MPPARSE
	def_bool y
	depends on (X86_32 && (X86_LOCAL_APIC && !X86_VISWS)) || X86_64

config DOUBLEFAULT
	default y
	bool "Enable doublefault exception handler" if EMBEDDED
	depends on X86_32
	help
	  This option allows trapping of rare doublefault exceptions that
	  would otherwise cause a system to silently reboot. Disabling this
	  option saves about 4k and might cause you much additional grey
	  hair.

config IOMMU_DEBUG
	bool "Enable IOMMU debugging"
	depends on GART_IOMMU && DEBUG_KERNEL
	depends on X86_64
	help
	  Force the IOMMU to on even when you have less than 4GB of
	  memory and add debugging code. On overflow always panic. And
	  allow to enable IOMMU leak tracing. Can be disabled at boot
	  time with iommu=noforce. This will also enable scatter gather
	  list merging.  Currently not recommended for production
	  code. When you use it make sure you have a big enough
	  IOMMU/AGP aperture.  Most of the options enabled by this can
	  be set more finegrained using the iommu= command line
	  options. See Documentation/x86_64/boot-options.txt for more
	  details.

config IOMMU_LEAK
	bool "IOMMU leak tracing"
	depends on DEBUG_KERNEL
	depends on IOMMU_DEBUG
	help
	  Add a simple leak tracer to the IOMMU code. This is useful when you
	  are debugging a buggy device driver that leaks IOMMU mappings.

#
# IO delay types:
#

config IO_DELAY_TYPE_0X80
	int
	default "0"

config IO_DELAY_TYPE_0XED
	int
	default "1"

config IO_DELAY_TYPE_UDELAY
	int
	default "2"

config IO_DELAY_TYPE_NONE
	int
	default "3"

choice
	prompt "IO delay type"
	default IO_DELAY_0X80

config IO_DELAY_0X80
	bool "port 0x80 based port-IO delay [recommended]"
	help
	  This is the traditional Linux IO delay used for in/out_p.
	  It is the most tested hence safest selection here.

config IO_DELAY_0XED
	bool "port 0xed based port-IO delay"
	help
	  Use port 0xed as the IO delay. This frees up port 0x80 which is
	  often used as a hardware-debug port.

config IO_DELAY_UDELAY
	bool "udelay based port-IO delay"
	help
	  Use udelay(2) as the IO delay method. This provides the delay
	  while not having any side-effect on the IO port space.

config IO_DELAY_NONE
	bool "no port-IO delay"
	help
	  No port-IO delay. Will break on old boxes that require port-IO
	  delay for certain operations. Should work on most new machines.

endchoice

if IO_DELAY_0X80
config DEFAULT_IO_DELAY_TYPE
	int
	default IO_DELAY_TYPE_0X80
endif

if IO_DELAY_0XED
config DEFAULT_IO_DELAY_TYPE
	int
	default IO_DELAY_TYPE_0XED
endif

if IO_DELAY_UDELAY
config DEFAULT_IO_DELAY_TYPE
	int
	default IO_DELAY_TYPE_UDELAY
endif

if IO_DELAY_NONE
config DEFAULT_IO_DELAY_TYPE
	int
	default IO_DELAY_TYPE_NONE
endif

menuconfig KMEMCHECK
	bool "kmemcheck: trap use of uninitialized memory"
	depends on X86
	depends on !X86_USE_3DNOW
	depends on SLUB || SLAB
	depends on !CC_OPTIMIZE_FOR_SIZE
	depends on !DEBUG_PAGEALLOC
	select FRAME_POINTER
	select STACKTRACE
	default n
	help
	  This option enables tracing of dynamically allocated kernel memory
	  to see if memory is used before it has been given an initial value.
	  Be aware that this requires half of your memory for bookkeeping and
	  will insert extra code at *every* read and write to tracked memory
	  thus slow down the kernel code (but user code is unaffected).

	  The kernel may be started with kmemcheck=0 or kmemcheck=1 to disable
	  or enable kmemcheck at boot-time. If the kernel is started with
	  kmemcheck=0, the large memory and CPU overhead is not incurred.

choice
	prompt "kmemcheck: default mode at boot"
	depends on KMEMCHECK
	default KMEMCHECK_ONESHOT_BY_DEFAULT
	help
	  This option controls the default behaviour of kmemcheck when the
	  kernel boots and no kmemcheck= parameter is given.

config KMEMCHECK_DISABLED_BY_DEFAULT
	bool "disabled"
	depends on KMEMCHECK

config KMEMCHECK_ENABLED_BY_DEFAULT
	bool "enabled"
	depends on KMEMCHECK

config KMEMCHECK_ONESHOT_BY_DEFAULT
	bool "one-shot"
	depends on KMEMCHECK
	help
	  In one-shot mode, only the first error detected is reported before
	  kmemcheck is disabled.

endchoice

config KMEMCHECK_USE_SMP
	bool "kmemcheck: use multiple CPUs"
	depends on KMEMCHECK
	depends on SMP
	default n
	help
	  This option will prevent kmemcheck from disabling all but one CPU
	  on boot. This means that whenever a page fault is taken, all the
	  other CPUs in the system are halted. This is potentially extremely
	  expensive, depending on the number of CPUs in the system (the more
	  the worse).

	  The upside is that kmemcheck can be compiled into the kernel with
	  very little overhead by default if kmemcheck is disabled at run-
	  time.

	  If you want to compile a kernel specifically for the purpose of
	  playing with kmemcheck, you should say n here. If you want a normal
	  kernel with the possibility of enabling kmemcheck without
	  recompiling, you should say y here.

config KMEMCHECK_QUEUE_SIZE
	int "kmemcheck: error queue size"
	depends on KMEMCHECK
	default 64
	help
	  Select the maximum number of errors to store in the queue. This
	  queue will be emptied once every second, so this is effectively a
	  limit on how many reports to print in one go. Note however, that
	  if the number of errors occuring between two bursts is larger than
	  this number, the extra error reports will get lost.

config KMEMCHECK_SHADOW_COPY_SHIFT
	int "kmemcheck: shadow copy size (5 => 32 bytes, 6 => 64 bytes)"
	depends on KMEMCHECK
	range 2 8
	default 6
	help
	  Select the number of shadow bytes to save along with each entry of
	  the queue. These bytes indicate what parts of an allocation are
	  initialized, uninitialized, etc. and will be displayed when an
	  error is detected to help the debugging of a particular problem.

config KMEMCHECK_PARTIAL_OK
	bool "kmemcheck: allow partially uninitialized memory"
	depends on KMEMCHECK
	default y
	help
	  This option works around certain GCC optimizations that produce
	  32-bit reads from 16-bit variables where the upper 16 bits are
	  thrown away afterwards. This may of course also hide some real
	  bugs.

config KMEMCHECK_BITOPS_OK
	bool "kmemcheck: allow bit-field manipulation"
	depends on KMEMCHECK
	default n
	help
	  This option silences warnings that would be generated for bit-field
	  accesses where not all the bits are initialized at the same time.
	  This may also hide some real bugs.

config DEBUG_BOOT_PARAMS
	bool "Debug boot parameters"
	depends on DEBUG_KERNEL
	depends on DEBUG_FS
	help
	  This option will cause struct boot_params to be exported via debugfs.

config CPA_DEBUG
	bool "CPA self-test code"
	depends on DEBUG_KERNEL
	help
	  Do change_page_attr() self-tests every 30 seconds.

config OPTIMIZE_INLINING
	bool "Allow gcc to uninline functions marked 'inline'"
	depends on BROKEN
	help
	  This option determines if the kernel forces gcc to inline the functions
	  developers have marked 'inline'. Doing so takes away freedom from gcc to
	  do what it thinks is best, which is desirable for the gcc 3.x series of
	  compilers. The gcc 4.x series have a rewritten inlining algorithm and
	  disabling this option will generate a smaller kernel there. Hopefully
	  this algorithm is so good that allowing gcc4 to make the decision can
	  become the default in the future, until then this option is there to
	  test gcc for this.

endmenu