• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_DBGP
47	bool "Early printk via EHCI debug port"
48	depends on EARLY_PRINTK && PCI
49	---help---
50	  Write kernel log output directly into the EHCI debug port.
51
52	  This is useful for kernel debugging when your machine crashes very
53	  early before the console code is initialized. For normal operation
54	  it is not recommended because it looks ugly and doesn't cooperate
55	  with klogd/syslogd or the X server. You should normally N here,
56	  unless you want to debug such a crash. You need usb debug device.
57
58config EARLY_PRINTK_EFI
59	bool "Early printk via the EFI framebuffer"
60	depends on EFI && EARLY_PRINTK
61	select FONT_SUPPORT
62	---help---
63	  Write kernel log output directly into the EFI framebuffer.
64
65	  This is useful for kernel debugging when your machine crashes very
66	  early before the console code is initialized.
67
68config X86_PTDUMP_CORE
69	def_bool n
70
71config X86_PTDUMP
72	bool "Export kernel pagetable layout to userspace via debugfs"
73	depends on DEBUG_KERNEL
74	select DEBUG_FS
75	select X86_PTDUMP_CORE
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
84config EFI_PGT_DUMP
85	bool "Dump the EFI pagetable"
86	depends on EFI
87	select X86_PTDUMP_CORE
88	---help---
89	  Enable this if you want to dump the EFI page table before
90	  enabling virtual mode. This can be used to debug miscellaneous
91	  issues with the mapping of the EFI runtime regions into that
92	  table.
93
94config DEBUG_RODATA_TEST
95	bool "Testcase for the marking rodata read-only"
96	default y
97	---help---
98	  This option enables a testcase for the setting rodata read-only
99	  as well as for the change_page_attr() infrastructure.
100	  If in doubt, say "N"
101
102config DEBUG_WX
103	bool "Warn on W+X mappings at boot"
104	select X86_PTDUMP_CORE
105	---help---
106	  Generate a warning if any W+X mappings are found at boot.
107
108	  This is useful for discovering cases where the kernel is leaving
109	  W+X mappings after applying NX, as such mappings are a security risk.
110
111	  Look for a message in dmesg output like this:
112
113	    x86/mm: Checked W+X mappings: passed, no W+X pages found.
114
115	  or like this, if the check failed:
116
117	    x86/mm: Checked W+X mappings: FAILED, <N> W+X pages found.
118
119	  Note that even if the check fails, your kernel is possibly
120	  still fine, as W+X mappings are not a security hole in
121	  themselves, what they do is that they make the exploitation
122	  of other unfixed kernel bugs easier.
123
124	  There is no runtime or memory usage effect of this option
125	  once the kernel has booted up - it's a one time check.
126
127	  If in doubt, say "Y".
128
129config DEBUG_SET_MODULE_RONX
130	bool "Set loadable kernel module data as NX and text as RO"
131	depends on MODULES
132	---help---
133	  This option helps catch unintended modifications to loadable
134	  kernel module's text and read-only data. It also prevents execution
135	  of module data. Such protection may interfere with run-time code
136	  patching and dynamic kernel tracing - and they might also protect
137	  against certain classes of kernel exploits.
138	  If in doubt, say "N".
139
140config DEBUG_NX_TEST
141	tristate "Testcase for the NX non-executable stack feature"
142	depends on DEBUG_KERNEL && m
143	---help---
144	  This option enables a testcase for the CPU NX capability
145	  and the software setup of this feature.
146	  If in doubt, say "N"
147
148config DOUBLEFAULT
149	default y
150	bool "Enable doublefault exception handler" if EXPERT
151	---help---
152	  This option allows trapping of rare doublefault exceptions that
153	  would otherwise cause a system to silently reboot. Disabling this
154	  option saves about 4k and might cause you much additional grey
155	  hair.
156
157config DEBUG_TLBFLUSH
158	bool "Set upper limit of TLB entries to flush one-by-one"
159	depends on DEBUG_KERNEL
160	---help---
161
162	X86-only for now.
163
164	This option allows the user to tune the amount of TLB entries the
165	kernel flushes one-by-one instead of doing a full TLB flush. In
166	certain situations, the former is cheaper. This is controlled by the
167	tlb_flushall_shift knob under /sys/kernel/debug/x86. If you set it
168	to -1, the code flushes the whole TLB unconditionally. Otherwise,
169	for positive values of it, the kernel will use single TLB entry
170	invalidating instructions according to the following formula:
171
172	flush_entries <= active_tlb_entries / 2^tlb_flushall_shift
173
174	If in doubt, say "N".
175
176config IOMMU_DEBUG
177	bool "Enable IOMMU debugging"
178	depends on GART_IOMMU && DEBUG_KERNEL
179	depends on X86_64
180	---help---
181	  Force the IOMMU to on even when you have less than 4GB of
182	  memory and add debugging code. On overflow always panic. And
183	  allow to enable IOMMU leak tracing. Can be disabled at boot
184	  time with iommu=noforce. This will also enable scatter gather
185	  list merging.  Currently not recommended for production
186	  code. When you use it make sure you have a big enough
187	  IOMMU/AGP aperture.  Most of the options enabled by this can
188	  be set more finegrained using the iommu= command line
189	  options. See Documentation/x86/x86_64/boot-options.txt for more
190	  details.
191
192config IOMMU_STRESS
193	bool "Enable IOMMU stress-test mode"
194	---help---
195	  This option disables various optimizations in IOMMU related
196	  code to do real stress testing of the IOMMU code. This option
197	  will cause a performance drop and should only be enabled for
198	  testing.
199
200config IOMMU_LEAK
201	bool "IOMMU leak tracing"
202	depends on IOMMU_DEBUG && DMA_API_DEBUG
203	---help---
204	  Add a simple leak tracer to the IOMMU code. This is useful when you
205	  are debugging a buggy device driver that leaks IOMMU mappings.
206
207config HAVE_MMIOTRACE_SUPPORT
208	def_bool y
209
210config X86_DECODER_SELFTEST
211	bool "x86 instruction decoder selftest"
212	depends on DEBUG_KERNEL && INSTRUCTION_DECODER
213	depends on !COMPILE_TEST
214	---help---
215	 Perform x86 instruction decoder selftests at build time.
216	 This option is useful for checking the sanity of x86 instruction
217	 decoder code.
218	 If unsure, say "N".
219
220#
221# IO delay types:
222#
223
224config IO_DELAY_TYPE_0X80
225	int
226	default "0"
227
228config IO_DELAY_TYPE_0XED
229	int
230	default "1"
231
232config IO_DELAY_TYPE_UDELAY
233	int
234	default "2"
235
236config IO_DELAY_TYPE_NONE
237	int
238	default "3"
239
240choice
241	prompt "IO delay type"
242	default IO_DELAY_0X80
243
244config IO_DELAY_0X80
245	bool "port 0x80 based port-IO delay [recommended]"
246	---help---
247	  This is the traditional Linux IO delay used for in/out_p.
248	  It is the most tested hence safest selection here.
249
250config IO_DELAY_0XED
251	bool "port 0xed based port-IO delay"
252	---help---
253	  Use port 0xed as the IO delay. This frees up port 0x80 which is
254	  often used as a hardware-debug port.
255
256config IO_DELAY_UDELAY
257	bool "udelay based port-IO delay"
258	---help---
259	  Use udelay(2) as the IO delay method. This provides the delay
260	  while not having any side-effect on the IO port space.
261
262config IO_DELAY_NONE
263	bool "no port-IO delay"
264	---help---
265	  No port-IO delay. Will break on old boxes that require port-IO
266	  delay for certain operations. Should work on most new machines.
267
268endchoice
269
270if IO_DELAY_0X80
271config DEFAULT_IO_DELAY_TYPE
272	int
273	default IO_DELAY_TYPE_0X80
274endif
275
276if IO_DELAY_0XED
277config DEFAULT_IO_DELAY_TYPE
278	int
279	default IO_DELAY_TYPE_0XED
280endif
281
282if IO_DELAY_UDELAY
283config DEFAULT_IO_DELAY_TYPE
284	int
285	default IO_DELAY_TYPE_UDELAY
286endif
287
288if IO_DELAY_NONE
289config DEFAULT_IO_DELAY_TYPE
290	int
291	default IO_DELAY_TYPE_NONE
292endif
293
294config DEBUG_BOOT_PARAMS
295	bool "Debug boot parameters"
296	depends on DEBUG_KERNEL
297	depends on DEBUG_FS
298	---help---
299	  This option will cause struct boot_params to be exported via debugfs.
300
301config CPA_DEBUG
302	bool "CPA self-test code"
303	depends on DEBUG_KERNEL
304	---help---
305	  Do change_page_attr() self-tests every 30 seconds.
306
307config OPTIMIZE_INLINING
308	bool "Allow gcc to uninline functions marked 'inline'"
309	---help---
310	  This option determines if the kernel forces gcc to inline the functions
311	  developers have marked 'inline'. Doing so takes away freedom from gcc to
312	  do what it thinks is best, which is desirable for the gcc 3.x series of
313	  compilers. The gcc 4.x series have a rewritten inlining algorithm and
314	  enabling this option will generate a smaller kernel there. Hopefully
315	  this algorithm is so good that allowing gcc 4.x and above to make the
316	  decision will become the default in the future. Until then this option
317	  is there to test gcc for this.
318
319	  If unsure, say N.
320
321config DEBUG_ENTRY
322	bool "Debug low-level entry code"
323	depends on DEBUG_KERNEL
324	---help---
325	  This option enables sanity checks in x86's low-level entry code.
326	  Some of these sanity checks may slow down kernel entries and
327	  exits or otherwise impact performance.
328
329	  This is currently used to help test NMI code.
330
331	  If unsure, say N.
332
333config DEBUG_NMI_SELFTEST
334	bool "NMI Selftest"
335	depends on DEBUG_KERNEL && X86_LOCAL_APIC
336	---help---
337	  Enabling this option turns on a quick NMI selftest to verify
338	  that the NMI behaves correctly.
339
340	  This might help diagnose strange hangs that rely on NMI to
341	  function properly.
342
343	  If unsure, say N.
344
345config DEBUG_IMR_SELFTEST
346	bool "Isolated Memory Region self test"
347	default n
348	depends on INTEL_IMR
349	---help---
350	  This option enables automated sanity testing of the IMR code.
351	  Some simple tests are run to verify IMR bounds checking, alignment
352	  and overlapping. This option is really only useful if you are
353	  debugging an IMR memory map or are modifying the IMR code and want to
354	  test your changes.
355
356	  If unsure say N here.
357
358config X86_DEBUG_FPU
359	bool "Debug the x86 FPU code"
360	depends on DEBUG_KERNEL
361	default y
362	---help---
363	  If this option is enabled then there will be extra sanity
364	  checks and (boot time) debug printouts added to the kernel.
365	  This debugging adds some small amount of runtime overhead
366	  to the kernel.
367
368	  If unsure, say N.
369
370config PUNIT_ATOM_DEBUG
371	tristate "ATOM Punit debug driver"
372	depends on PCI
373	select DEBUG_FS
374	select IOSF_MBI
375	---help---
376	  This is a debug driver, which gets the power states
377	  of all Punit North Complex devices. The power states of
378	  each device is exposed as part of the debugfs interface.
379	  The current power state can be read from
380	  /sys/kernel/debug/punit_atom/dev_power_state
381
382endmenu
383