xref: /openbmc/linux/arch/x86/Kconfig.debug (revision 7b6d864b)
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 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
46config EARLY_PRINTK_INTEL_MID
47	bool "Early printk for Intel MID platform support"
48	depends on EARLY_PRINTK && X86_INTEL_MID
49
50config 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
62config X86_PTDUMP
63	bool "Export kernel pagetable layout to userspace via debugfs"
64	depends on DEBUG_KERNEL
65	select DEBUG_FS
66	---help---
67	  Say Y here if you want to show the kernel pagetable layout in a
68	  debugfs file. This information is only useful for kernel developers
69	  who are working in architecture specific areas of the kernel.
70	  It is probably not a good idea to enable this feature in a production
71	  kernel.
72	  If in doubt, say "N"
73
74config DEBUG_RODATA
75	bool "Write protect kernel read-only data structures"
76	default y
77	depends on DEBUG_KERNEL
78	---help---
79	  Mark the kernel read-only data as write-protected in the pagetables,
80	  in order to catch accidental (and incorrect) writes to such const
81	  data. This is recommended so that we can catch kernel bugs sooner.
82	  If in doubt, say "Y".
83
84config DEBUG_RODATA_TEST
85	bool "Testcase for the DEBUG_RODATA feature"
86	depends on DEBUG_RODATA
87	default y
88	---help---
89	  This option enables a testcase for the DEBUG_RODATA
90	  feature as well as for the change_page_attr() infrastructure.
91	  If in doubt, say "N"
92
93config DEBUG_SET_MODULE_RONX
94	bool "Set loadable kernel module data as NX and text as RO"
95	depends on MODULES
96	---help---
97	  This option helps catch unintended modifications to loadable
98	  kernel module's text and read-only data. It also prevents execution
99	  of module data. Such protection may interfere with run-time code
100	  patching and dynamic kernel tracing - and they might also protect
101	  against certain classes of kernel exploits.
102	  If in doubt, say "N".
103
104config DEBUG_NX_TEST
105	tristate "Testcase for the NX non-executable stack feature"
106	depends on DEBUG_KERNEL && m
107	---help---
108	  This option enables a testcase for the CPU NX capability
109	  and the software setup of this feature.
110	  If in doubt, say "N"
111
112config DOUBLEFAULT
113	default y
114	bool "Enable doublefault exception handler" if EXPERT
115	---help---
116	  This option allows trapping of rare doublefault exceptions that
117	  would otherwise cause a system to silently reboot. Disabling this
118	  option saves about 4k and might cause you much additional grey
119	  hair.
120
121config DEBUG_TLBFLUSH
122	bool "Set upper limit of TLB entries to flush one-by-one"
123	depends on DEBUG_KERNEL
124	---help---
125
126	X86-only for now.
127
128	This option allows the user to tune the amount of TLB entries the
129	kernel flushes one-by-one instead of doing a full TLB flush. In
130	certain situations, the former is cheaper. This is controlled by the
131	tlb_flushall_shift knob under /sys/kernel/debug/x86. If you set it
132	to -1, the code flushes the whole TLB unconditionally. Otherwise,
133	for positive values of it, the kernel will use single TLB entry
134	invalidating instructions according to the following formula:
135
136	flush_entries <= active_tlb_entries / 2^tlb_flushall_shift
137
138	If in doubt, say "N".
139
140config IOMMU_DEBUG
141	bool "Enable IOMMU debugging"
142	depends on GART_IOMMU && DEBUG_KERNEL
143	depends on X86_64
144	---help---
145	  Force the IOMMU to on even when you have less than 4GB of
146	  memory and add debugging code. On overflow always panic. And
147	  allow to enable IOMMU leak tracing. Can be disabled at boot
148	  time with iommu=noforce. This will also enable scatter gather
149	  list merging.  Currently not recommended for production
150	  code. When you use it make sure you have a big enough
151	  IOMMU/AGP aperture.  Most of the options enabled by this can
152	  be set more finegrained using the iommu= command line
153	  options. See Documentation/x86/x86_64/boot-options.txt for more
154	  details.
155
156config IOMMU_STRESS
157	bool "Enable IOMMU stress-test mode"
158	---help---
159	  This option disables various optimizations in IOMMU related
160	  code to do real stress testing of the IOMMU code. This option
161	  will cause a performance drop and should only be enabled for
162	  testing.
163
164config IOMMU_LEAK
165	bool "IOMMU leak tracing"
166	depends on IOMMU_DEBUG && DMA_API_DEBUG
167	---help---
168	  Add a simple leak tracer to the IOMMU code. This is useful when you
169	  are debugging a buggy device driver that leaks IOMMU mappings.
170
171config HAVE_MMIOTRACE_SUPPORT
172	def_bool y
173
174config X86_DECODER_SELFTEST
175	bool "x86 instruction decoder selftest"
176	depends on DEBUG_KERNEL && KPROBES
177	---help---
178	 Perform x86 instruction decoder selftests at build time.
179	 This option is useful for checking the sanity of x86 instruction
180	 decoder code.
181	 If unsure, say "N".
182
183#
184# IO delay types:
185#
186
187config IO_DELAY_TYPE_0X80
188	int
189	default "0"
190
191config IO_DELAY_TYPE_0XED
192	int
193	default "1"
194
195config IO_DELAY_TYPE_UDELAY
196	int
197	default "2"
198
199config IO_DELAY_TYPE_NONE
200	int
201	default "3"
202
203choice
204	prompt "IO delay type"
205	default IO_DELAY_0X80
206
207config IO_DELAY_0X80
208	bool "port 0x80 based port-IO delay [recommended]"
209	---help---
210	  This is the traditional Linux IO delay used for in/out_p.
211	  It is the most tested hence safest selection here.
212
213config IO_DELAY_0XED
214	bool "port 0xed based port-IO delay"
215	---help---
216	  Use port 0xed as the IO delay. This frees up port 0x80 which is
217	  often used as a hardware-debug port.
218
219config IO_DELAY_UDELAY
220	bool "udelay based port-IO delay"
221	---help---
222	  Use udelay(2) as the IO delay method. This provides the delay
223	  while not having any side-effect on the IO port space.
224
225config IO_DELAY_NONE
226	bool "no port-IO delay"
227	---help---
228	  No port-IO delay. Will break on old boxes that require port-IO
229	  delay for certain operations. Should work on most new machines.
230
231endchoice
232
233if IO_DELAY_0X80
234config DEFAULT_IO_DELAY_TYPE
235	int
236	default IO_DELAY_TYPE_0X80
237endif
238
239if IO_DELAY_0XED
240config DEFAULT_IO_DELAY_TYPE
241	int
242	default IO_DELAY_TYPE_0XED
243endif
244
245if IO_DELAY_UDELAY
246config DEFAULT_IO_DELAY_TYPE
247	int
248	default IO_DELAY_TYPE_UDELAY
249endif
250
251if IO_DELAY_NONE
252config DEFAULT_IO_DELAY_TYPE
253	int
254	default IO_DELAY_TYPE_NONE
255endif
256
257config DEBUG_BOOT_PARAMS
258	bool "Debug boot parameters"
259	depends on DEBUG_KERNEL
260	depends on DEBUG_FS
261	---help---
262	  This option will cause struct boot_params to be exported via debugfs.
263
264config CPA_DEBUG
265	bool "CPA self-test code"
266	depends on DEBUG_KERNEL
267	---help---
268	  Do change_page_attr() self-tests every 30 seconds.
269
270config OPTIMIZE_INLINING
271	bool "Allow gcc to uninline functions marked 'inline'"
272	---help---
273	  This option determines if the kernel forces gcc to inline the functions
274	  developers have marked 'inline'. Doing so takes away freedom from gcc to
275	  do what it thinks is best, which is desirable for the gcc 3.x series of
276	  compilers. The gcc 4.x series have a rewritten inlining algorithm and
277	  enabling this option will generate a smaller kernel there. Hopefully
278	  this algorithm is so good that allowing gcc 4.x and above to make the
279	  decision will become the default in the future. Until then this option
280	  is there to test gcc for this.
281
282	  If unsure, say N.
283
284config DEBUG_NMI_SELFTEST
285	bool "NMI Selftest"
286	depends on DEBUG_KERNEL && X86_LOCAL_APIC
287	---help---
288	  Enabling this option turns on a quick NMI selftest to verify
289	  that the NMI behaves correctly.
290
291	  This might help diagnose strange hangs that rely on NMI to
292	  function properly.
293
294	  If unsure, say N.
295
296config X86_DEBUG_STATIC_CPU_HAS
297	bool "Debug alternatives"
298	depends on DEBUG_KERNEL
299	---help---
300	  This option causes additional code to be generated which
301	  fails if static_cpu_has() is used before alternatives have
302	  run.
303
304	  If unsure, say N.
305
306endmenu
307