x86: Check stack overflow in detail
[linux-3.10.git] / arch / x86 / Kconfig.debug
1 menu "Kernel hacking"
2
3 config TRACE_IRQFLAGS_SUPPORT
4         def_bool y
5
6 source "lib/Kconfig.debug"
7
8 config STRICT_DEVMEM
9         bool "Filter access to /dev/mem"
10         ---help---
11           If this option is disabled, you allow userspace (root) access to all
12           of memory, including kernel and userspace memory. Accidental
13           access to this is obviously disastrous, but specific access can
14           be used by people debugging the kernel. Note that with PAT support
15           enabled, even in this case there are restrictions on /dev/mem
16           use due to the cache aliasing requirements.
17
18           If this option is switched on, the /dev/mem file only allows
19           userspace access to PCI space and the BIOS code and data regions.
20           This is sufficient for dosemu and X and all common users of
21           /dev/mem.
22
23           If in doubt, say Y.
24
25 config X86_VERBOSE_BOOTUP
26         bool "Enable verbose x86 bootup info messages"
27         default y
28         ---help---
29           Enables the informational output from the decompression stage
30           (e.g. bzImage) of the boot. If you disable this you will still
31           see errors. Disable this if you want silent bootup.
32
33 config EARLY_PRINTK
34         bool "Early printk" if EXPERT
35         default y
36         ---help---
37           Write kernel log output directly into the VGA buffer or to a serial
38           port.
39
40           This is useful for kernel debugging when your machine crashes very
41           early before the console code is initialized. For normal operation
42           it is not recommended because it looks ugly and doesn't cooperate
43           with klogd/syslogd or the X server. You should normally N here,
44           unless you want to debug such a crash.
45
46 config EARLY_PRINTK_MRST
47         bool "Early printk for MRST platform support"
48         depends on EARLY_PRINTK && X86_MRST
49
50 config EARLY_PRINTK_DBGP
51         bool "Early printk via EHCI debug port"
52         depends on EARLY_PRINTK && PCI
53         ---help---
54           Write kernel log output directly into the EHCI debug port.
55
56           This is useful for kernel debugging when your machine crashes very
57           early before the console code is initialized. For normal operation
58           it is not recommended because it looks ugly and doesn't cooperate
59           with klogd/syslogd or the X server. You should normally N here,
60           unless you want to debug such a crash. You need usb debug device.
61
62 config DEBUG_STACKOVERFLOW
63         bool "Check for stack overflows"
64         depends on DEBUG_KERNEL
65         ---help---
66           Say Y here if you want to check the overflows of kernel, IRQ
67           and exception stacks. This option will cause messages of the
68           stacks in detail when free stack space drops below a certain
69           limit.
70           If in doubt, say "N".
71
72 config X86_PTDUMP
73         bool "Export kernel pagetable layout to userspace via debugfs"
74         depends on DEBUG_KERNEL
75         select DEBUG_FS
76         ---help---
77           Say Y here if you want to show the kernel pagetable layout in a
78           debugfs file. This information is only useful for kernel developers
79           who are working in architecture specific areas of the kernel.
80           It is probably not a good idea to enable this feature in a production
81           kernel.
82           If in doubt, say "N"
83
84 config DEBUG_RODATA
85         bool "Write protect kernel read-only data structures"
86         default y
87         depends on DEBUG_KERNEL
88         ---help---
89           Mark the kernel read-only data as write-protected in the pagetables,
90           in order to catch accidental (and incorrect) writes to such const
91           data. This is recommended so that we can catch kernel bugs sooner.
92           If in doubt, say "Y".
93
94 config DEBUG_RODATA_TEST
95         bool "Testcase for the DEBUG_RODATA feature"
96         depends on DEBUG_RODATA
97         default y
98         ---help---
99           This option enables a testcase for the DEBUG_RODATA
100           feature as well as for the change_page_attr() infrastructure.
101           If in doubt, say "N"
102
103 config DEBUG_SET_MODULE_RONX
104         bool "Set loadable kernel module data as NX and text as RO"
105         depends on MODULES
106         ---help---
107           This option helps catch unintended modifications to loadable
108           kernel module's text and read-only data. It also prevents execution
109           of module data. Such protection may interfere with run-time code
110           patching and dynamic kernel tracing - and they might also protect
111           against certain classes of kernel exploits.
112           If in doubt, say "N".
113
114 config DEBUG_NX_TEST
115         tristate "Testcase for the NX non-executable stack feature"
116         depends on DEBUG_KERNEL && m
117         ---help---
118           This option enables a testcase for the CPU NX capability
119           and the software setup of this feature.
120           If in doubt, say "N"
121
122 config DOUBLEFAULT
123         default y
124         bool "Enable doublefault exception handler" if EXPERT
125         depends on X86_32
126         ---help---
127           This option allows trapping of rare doublefault exceptions that
128           would otherwise cause a system to silently reboot. Disabling this
129           option saves about 4k and might cause you much additional grey
130           hair.
131
132 config IOMMU_DEBUG
133         bool "Enable IOMMU debugging"
134         depends on GART_IOMMU && DEBUG_KERNEL
135         depends on X86_64
136         ---help---
137           Force the IOMMU to on even when you have less than 4GB of
138           memory and add debugging code. On overflow always panic. And
139           allow to enable IOMMU leak tracing. Can be disabled at boot
140           time with iommu=noforce. This will also enable scatter gather
141           list merging.  Currently not recommended for production
142           code. When you use it make sure you have a big enough
143           IOMMU/AGP aperture.  Most of the options enabled by this can
144           be set more finegrained using the iommu= command line
145           options. See Documentation/x86/x86_64/boot-options.txt for more
146           details.
147
148 config IOMMU_STRESS
149         bool "Enable IOMMU stress-test mode"
150         ---help---
151           This option disables various optimizations in IOMMU related
152           code to do real stress testing of the IOMMU code. This option
153           will cause a performance drop and should only be enabled for
154           testing.
155
156 config IOMMU_LEAK
157         bool "IOMMU leak tracing"
158         depends on IOMMU_DEBUG && DMA_API_DEBUG
159         ---help---
160           Add a simple leak tracer to the IOMMU code. This is useful when you
161           are debugging a buggy device driver that leaks IOMMU mappings.
162
163 config HAVE_MMIOTRACE_SUPPORT
164         def_bool y
165
166 config X86_DECODER_SELFTEST
167         bool "x86 instruction decoder selftest"
168         depends on DEBUG_KERNEL && KPROBES
169         ---help---
170          Perform x86 instruction decoder selftests at build time.
171          This option is useful for checking the sanity of x86 instruction
172          decoder code.
173          If unsure, say "N".
174
175 #
176 # IO delay types:
177 #
178
179 config IO_DELAY_TYPE_0X80
180         int
181         default "0"
182
183 config IO_DELAY_TYPE_0XED
184         int
185         default "1"
186
187 config IO_DELAY_TYPE_UDELAY
188         int
189         default "2"
190
191 config IO_DELAY_TYPE_NONE
192         int
193         default "3"
194
195 choice
196         prompt "IO delay type"
197         default IO_DELAY_0X80
198
199 config IO_DELAY_0X80
200         bool "port 0x80 based port-IO delay [recommended]"
201         ---help---
202           This is the traditional Linux IO delay used for in/out_p.
203           It is the most tested hence safest selection here.
204
205 config IO_DELAY_0XED
206         bool "port 0xed based port-IO delay"
207         ---help---
208           Use port 0xed as the IO delay. This frees up port 0x80 which is
209           often used as a hardware-debug port.
210
211 config IO_DELAY_UDELAY
212         bool "udelay based port-IO delay"
213         ---help---
214           Use udelay(2) as the IO delay method. This provides the delay
215           while not having any side-effect on the IO port space.
216
217 config IO_DELAY_NONE
218         bool "no port-IO delay"
219         ---help---
220           No port-IO delay. Will break on old boxes that require port-IO
221           delay for certain operations. Should work on most new machines.
222
223 endchoice
224
225 if IO_DELAY_0X80
226 config DEFAULT_IO_DELAY_TYPE
227         int
228         default IO_DELAY_TYPE_0X80
229 endif
230
231 if IO_DELAY_0XED
232 config DEFAULT_IO_DELAY_TYPE
233         int
234         default IO_DELAY_TYPE_0XED
235 endif
236
237 if IO_DELAY_UDELAY
238 config DEFAULT_IO_DELAY_TYPE
239         int
240         default IO_DELAY_TYPE_UDELAY
241 endif
242
243 if IO_DELAY_NONE
244 config DEFAULT_IO_DELAY_TYPE
245         int
246         default IO_DELAY_TYPE_NONE
247 endif
248
249 config DEBUG_BOOT_PARAMS
250         bool "Debug boot parameters"
251         depends on DEBUG_KERNEL
252         depends on DEBUG_FS
253         ---help---
254           This option will cause struct boot_params to be exported via debugfs.
255
256 config CPA_DEBUG
257         bool "CPA self-test code"
258         depends on DEBUG_KERNEL
259         ---help---
260           Do change_page_attr() self-tests every 30 seconds.
261
262 config OPTIMIZE_INLINING
263         bool "Allow gcc to uninline functions marked 'inline'"
264         ---help---
265           This option determines if the kernel forces gcc to inline the functions
266           developers have marked 'inline'. Doing so takes away freedom from gcc to
267           do what it thinks is best, which is desirable for the gcc 3.x series of
268           compilers. The gcc 4.x series have a rewritten inlining algorithm and
269           enabling this option will generate a smaller kernel there. Hopefully
270           this algorithm is so good that allowing gcc 4.x and above to make the
271           decision will become the default in the future. Until then this option
272           is there to test gcc for this.
273
274           If unsure, say N.
275
276 config DEBUG_STRICT_USER_COPY_CHECKS
277         bool "Strict copy size checks"
278         depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING
279         ---help---
280           Enabling this option turns a certain set of sanity checks for user
281           copy operations into compile time failures.
282
283           The copy_from_user() etc checks are there to help test if there
284           are sufficient security checks on the length argument of
285           the copy operation, by having gcc prove that the argument is
286           within bounds.
287
288           If unsure, or if you run an older (pre 4.4) gcc, say N.
289
290 endmenu