xref: /openbmc/linux/arch/x86/Kconfig.debug (revision 384740dc)
1menu "Kernel hacking"
2
3config TRACE_IRQFLAGS_SUPPORT
4	def_bool y
5
6source "lib/Kconfig.debug"
7
8config 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
25config 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
33config EARLY_PRINTK
34	bool "Early printk" if EMBEDDED
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
46config DEBUG_STACKOVERFLOW
47	bool "Check for stack overflows"
48	depends on DEBUG_KERNEL
49	help
50	  This option will cause messages to be printed if free stack space
51	  drops below a certain limit.
52
53config DEBUG_STACK_USAGE
54	bool "Stack utilization instrumentation"
55	depends on DEBUG_KERNEL
56	help
57	  Enables the display of the minimum amount of free stack which each
58	  task has ever had available in the sysrq-T and sysrq-P debug output.
59
60	  This option will slow down process creation somewhat.
61
62config DEBUG_PAGEALLOC
63	bool "Debug page memory allocations"
64	depends on DEBUG_KERNEL
65	help
66	  Unmap pages from the kernel linear mapping after free_pages().
67	  This results in a large slowdown, but helps to find certain types
68	  of memory corruptions.
69
70config DEBUG_PER_CPU_MAPS
71	bool "Debug access to per_cpu maps"
72	depends on DEBUG_KERNEL
73	depends on X86_SMP
74	default n
75	help
76	  Say Y to verify that the per_cpu map being accessed has
77	  been setup.  Adds a fair amount of code to kernel memory
78	  and decreases performance.
79
80	  Say N if unsure.
81
82config X86_PTDUMP
83	bool "Export kernel pagetable layout to userspace via debugfs"
84	depends on DEBUG_KERNEL
85	select DEBUG_FS
86	help
87	  Say Y here if you want to show the kernel pagetable layout in a
88	  debugfs file. This information is only useful for kernel developers
89	  who are working in architecture specific areas of the kernel.
90	  It is probably not a good idea to enable this feature in a production
91	  kernel.
92	  If in doubt, say "N"
93
94config DEBUG_RODATA
95	bool "Write protect kernel read-only data structures"
96	default y
97	depends on DEBUG_KERNEL
98	help
99	  Mark the kernel read-only data as write-protected in the pagetables,
100	  in order to catch accidental (and incorrect) writes to such const
101	  data. This is recommended so that we can catch kernel bugs sooner.
102	  If in doubt, say "Y".
103
104config DIRECT_GBPAGES
105	bool "Enable gbpages-mapped kernel pagetables"
106	depends on DEBUG_KERNEL && EXPERIMENTAL && X86_64
107	help
108	  Enable gigabyte pages support (if the CPU supports it). This can
109	  improve the kernel's performance a tiny bit by reducing TLB
110	  pressure.
111
112	  This is experimental code.
113
114	  If in doubt, say "N".
115
116config DEBUG_RODATA_TEST
117	bool "Testcase for the DEBUG_RODATA feature"
118	depends on DEBUG_RODATA
119	help
120	  This option enables a testcase for the DEBUG_RODATA
121	  feature as well as for the change_page_attr() infrastructure.
122	  If in doubt, say "N"
123
124config DEBUG_NX_TEST
125	tristate "Testcase for the NX non-executable stack feature"
126	depends on DEBUG_KERNEL && m
127	help
128	  This option enables a testcase for the CPU NX capability
129	  and the software setup of this feature.
130	  If in doubt, say "N"
131
132config 4KSTACKS
133	bool "Use 4Kb for kernel stacks instead of 8Kb"
134	depends on X86_32
135	help
136	  If you say Y here the kernel will use a 4Kb stacksize for the
137	  kernel stack attached to each process/thread. This facilitates
138	  running more threads on a system and also reduces the pressure
139	  on the VM subsystem for higher order allocations. This option
140	  will also use IRQ stacks to compensate for the reduced stackspace.
141
142config DOUBLEFAULT
143	default y
144	bool "Enable doublefault exception handler" if EMBEDDED
145	depends on X86_32
146	help
147	  This option allows trapping of rare doublefault exceptions that
148	  would otherwise cause a system to silently reboot. Disabling this
149	  option saves about 4k and might cause you much additional grey
150	  hair.
151
152config IOMMU_DEBUG
153	bool "Enable IOMMU debugging"
154	depends on GART_IOMMU && DEBUG_KERNEL
155	depends on X86_64
156	help
157	  Force the IOMMU to on even when you have less than 4GB of
158	  memory and add debugging code. On overflow always panic. And
159	  allow to enable IOMMU leak tracing. Can be disabled at boot
160	  time with iommu=noforce. This will also enable scatter gather
161	  list merging.  Currently not recommended for production
162	  code. When you use it make sure you have a big enough
163	  IOMMU/AGP aperture.  Most of the options enabled by this can
164	  be set more finegrained using the iommu= command line
165	  options. See Documentation/x86_64/boot-options.txt for more
166	  details.
167
168config IOMMU_LEAK
169	bool "IOMMU leak tracing"
170	depends on DEBUG_KERNEL
171	depends on IOMMU_DEBUG
172	help
173	  Add a simple leak tracer to the IOMMU code. This is useful when you
174	  are debugging a buggy device driver that leaks IOMMU mappings.
175
176config MMIOTRACE_HOOKS
177	bool
178
179config MMIOTRACE
180	bool "Memory mapped IO tracing"
181	depends on DEBUG_KERNEL && PCI
182	select TRACING
183	select MMIOTRACE_HOOKS
184	help
185	  Mmiotrace traces Memory Mapped I/O access and is meant for
186	  debugging and reverse engineering. It is called from the ioremap
187	  implementation and works via page faults. Tracing is disabled by
188	  default and can be enabled at run-time.
189
190	  See Documentation/tracers/mmiotrace.txt.
191	  If you are not helping to develop drivers, say N.
192
193config MMIOTRACE_TEST
194	tristate "Test module for mmiotrace"
195	depends on MMIOTRACE && m
196	help
197	  This is a dumb module for testing mmiotrace. It is very dangerous
198	  as it will write garbage to IO memory starting at a given address.
199	  However, it should be safe to use on e.g. unused portion of VRAM.
200
201	  Say N, unless you absolutely know what you are doing.
202
203#
204# IO delay types:
205#
206
207config IO_DELAY_TYPE_0X80
208	int
209	default "0"
210
211config IO_DELAY_TYPE_0XED
212	int
213	default "1"
214
215config IO_DELAY_TYPE_UDELAY
216	int
217	default "2"
218
219config IO_DELAY_TYPE_NONE
220	int
221	default "3"
222
223choice
224	prompt "IO delay type"
225	default IO_DELAY_0X80
226
227config IO_DELAY_0X80
228	bool "port 0x80 based port-IO delay [recommended]"
229	help
230	  This is the traditional Linux IO delay used for in/out_p.
231	  It is the most tested hence safest selection here.
232
233config IO_DELAY_0XED
234	bool "port 0xed based port-IO delay"
235	help
236	  Use port 0xed as the IO delay. This frees up port 0x80 which is
237	  often used as a hardware-debug port.
238
239config IO_DELAY_UDELAY
240	bool "udelay based port-IO delay"
241	help
242	  Use udelay(2) as the IO delay method. This provides the delay
243	  while not having any side-effect on the IO port space.
244
245config IO_DELAY_NONE
246	bool "no port-IO delay"
247	help
248	  No port-IO delay. Will break on old boxes that require port-IO
249	  delay for certain operations. Should work on most new machines.
250
251endchoice
252
253if IO_DELAY_0X80
254config DEFAULT_IO_DELAY_TYPE
255	int
256	default IO_DELAY_TYPE_0X80
257endif
258
259if IO_DELAY_0XED
260config DEFAULT_IO_DELAY_TYPE
261	int
262	default IO_DELAY_TYPE_0XED
263endif
264
265if IO_DELAY_UDELAY
266config DEFAULT_IO_DELAY_TYPE
267	int
268	default IO_DELAY_TYPE_UDELAY
269endif
270
271if IO_DELAY_NONE
272config DEFAULT_IO_DELAY_TYPE
273	int
274	default IO_DELAY_TYPE_NONE
275endif
276
277config DEBUG_BOOT_PARAMS
278	bool "Debug boot parameters"
279	depends on DEBUG_KERNEL
280	depends on DEBUG_FS
281	help
282	  This option will cause struct boot_params to be exported via debugfs.
283
284config CPA_DEBUG
285	bool "CPA self-test code"
286	depends on DEBUG_KERNEL
287	help
288	  Do change_page_attr() self-tests every 30 seconds.
289
290config OPTIMIZE_INLINING
291	bool "Allow gcc to uninline functions marked 'inline'"
292	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.
301
302	  If unsure, say N.
303
304endmenu
305
306