xref: /openbmc/linux/arch/x86/Kconfig.debug (revision 6bcb13b3)
1menu "Kernel hacking"
2
3config TRACE_IRQFLAGS_SUPPORT
4	def_bool y
5
6source "lib/Kconfig.debug"
7
8config NONPROMISC_DEVMEM
9	bool "Disable promiscuous /dev/mem"
10	help
11	  The /dev/mem file by default only allows userspace access to PCI
12	  space and the BIOS code and data regions. This is sufficient for
13	  dosemu and X and all common users of /dev/mem. With this config
14	  option, you allow userspace access to all of memory, including
15	  kernel and userspace memory. Accidental access to this is
16	  obviously disasterous, but specific access can be used by people
17	  debugging the kernel.
18
19config X86_VERBOSE_BOOTUP
20	bool "Enable verbose x86 bootup info messages"
21	default y
22	help
23	  Enables the informational output from the decompression stage
24	  (e.g. bzImage) of the boot. If you disable this you will still
25	  see errors. Disable this if you want silent bootup.
26
27config EARLY_PRINTK
28	bool "Early printk" if EMBEDDED
29	default y
30	help
31	  Write kernel log output directly into the VGA buffer or to a serial
32	  port.
33
34	  This is useful for kernel debugging when your machine crashes very
35	  early before the console code is initialized. For normal operation
36	  it is not recommended because it looks ugly and doesn't cooperate
37	  with klogd/syslogd or the X server. You should normally N here,
38	  unless you want to debug such a crash.
39
40config DEBUG_STACKOVERFLOW
41	bool "Check for stack overflows"
42	depends on DEBUG_KERNEL
43	help
44	  This option will cause messages to be printed if free stack space
45	  drops below a certain limit.
46
47config DEBUG_STACK_USAGE
48	bool "Stack utilization instrumentation"
49	depends on DEBUG_KERNEL
50	help
51	  Enables the display of the minimum amount of free stack which each
52	  task has ever had available in the sysrq-T and sysrq-P debug output.
53
54	  This option will slow down process creation somewhat.
55
56config DEBUG_PAGEALLOC
57	bool "Debug page memory allocations"
58	depends on DEBUG_KERNEL
59	help
60	  Unmap pages from the kernel linear mapping after free_pages().
61	  This results in a large slowdown, but helps to find certain types
62	  of memory corruptions.
63
64config DEBUG_PER_CPU_MAPS
65	bool "Debug access to per_cpu maps"
66	depends on DEBUG_KERNEL
67	depends on X86_64_SMP
68	default n
69	help
70	  Say Y to verify that the per_cpu map being accessed has
71	  been setup.  Adds a fair amount of code to kernel memory
72	  and decreases performance.
73
74	  Say N if unsure.
75
76config X86_PTDUMP
77	bool "Export kernel pagetable layout to userspace via debugfs"
78	depends on DEBUG_KERNEL
79	select DEBUG_FS
80	help
81	  Say Y here if you want to show the kernel pagetable layout in a
82	  debugfs file. This information is only useful for kernel developers
83	  who are working in architecture specific areas of the kernel.
84	  It is probably not a good idea to enable this feature in a production
85	  kernel.
86	  If in doubt, say "N"
87
88config DEBUG_RODATA
89	bool "Write protect kernel read-only data structures"
90	default y
91	depends on DEBUG_KERNEL
92	help
93	  Mark the kernel read-only data as write-protected in the pagetables,
94	  in order to catch accidental (and incorrect) writes to such const
95	  data. This is recommended so that we can catch kernel bugs sooner.
96	  If in doubt, say "Y".
97
98config DIRECT_GBPAGES
99	bool "Enable gbpages-mapped kernel pagetables"
100	depends on DEBUG_KERNEL && EXPERIMENTAL && X86_64
101	help
102	  Enable gigabyte pages support (if the CPU supports it). This can
103	  improve the kernel's performance a tiny bit by reducing TLB
104	  pressure.
105
106	  This is experimental code.
107
108	  If in doubt, say "N".
109
110config DEBUG_RODATA_TEST
111	bool "Testcase for the DEBUG_RODATA feature"
112	depends on DEBUG_RODATA
113	help
114	  This option enables a testcase for the DEBUG_RODATA
115	  feature as well as for the change_page_attr() infrastructure.
116	  If in doubt, say "N"
117
118config DEBUG_NX_TEST
119	tristate "Testcase for the NX non-executable stack feature"
120	depends on DEBUG_KERNEL && m
121	help
122	  This option enables a testcase for the CPU NX capability
123	  and the software setup of this feature.
124	  If in doubt, say "N"
125
126config 4KSTACKS
127	bool "Use 4Kb for kernel stacks instead of 8Kb"
128	depends on X86_32
129	help
130	  If you say Y here the kernel will use a 4Kb stacksize for the
131	  kernel stack attached to each process/thread. This facilitates
132	  running more threads on a system and also reduces the pressure
133	  on the VM subsystem for higher order allocations. This option
134	  will also use IRQ stacks to compensate for the reduced stackspace.
135
136config X86_FIND_SMP_CONFIG
137	def_bool y
138	depends on X86_LOCAL_APIC || X86_VOYAGER
139	depends on X86_32
140
141config X86_MPPARSE
142	def_bool y
143	depends on (X86_32 && (X86_LOCAL_APIC && !X86_VISWS)) || X86_64
144
145config DOUBLEFAULT
146	default y
147	bool "Enable doublefault exception handler" if EMBEDDED
148	depends on X86_32
149	help
150	  This option allows trapping of rare doublefault exceptions that
151	  would otherwise cause a system to silently reboot. Disabling this
152	  option saves about 4k and might cause you much additional grey
153	  hair.
154
155config IOMMU_DEBUG
156	bool "Enable IOMMU debugging"
157	depends on GART_IOMMU && DEBUG_KERNEL
158	depends on X86_64
159	help
160	  Force the IOMMU to on even when you have less than 4GB of
161	  memory and add debugging code. On overflow always panic. And
162	  allow to enable IOMMU leak tracing. Can be disabled at boot
163	  time with iommu=noforce. This will also enable scatter gather
164	  list merging.  Currently not recommended for production
165	  code. When you use it make sure you have a big enough
166	  IOMMU/AGP aperture.  Most of the options enabled by this can
167	  be set more finegrained using the iommu= command line
168	  options. See Documentation/x86_64/boot-options.txt for more
169	  details.
170
171config IOMMU_LEAK
172	bool "IOMMU leak tracing"
173	depends on DEBUG_KERNEL
174	depends on IOMMU_DEBUG
175	help
176	  Add a simple leak tracer to the IOMMU code. This is useful when you
177	  are debugging a buggy device driver that leaks IOMMU mappings.
178
179#
180# IO delay types:
181#
182
183config IO_DELAY_TYPE_0X80
184	int
185	default "0"
186
187config IO_DELAY_TYPE_0XED
188	int
189	default "1"
190
191config IO_DELAY_TYPE_UDELAY
192	int
193	default "2"
194
195config IO_DELAY_TYPE_NONE
196	int
197	default "3"
198
199choice
200	prompt "IO delay type"
201	default IO_DELAY_0X80
202
203config IO_DELAY_0X80
204	bool "port 0x80 based port-IO delay [recommended]"
205	help
206	  This is the traditional Linux IO delay used for in/out_p.
207	  It is the most tested hence safest selection here.
208
209config IO_DELAY_0XED
210	bool "port 0xed based port-IO delay"
211	help
212	  Use port 0xed as the IO delay. This frees up port 0x80 which is
213	  often used as a hardware-debug port.
214
215config IO_DELAY_UDELAY
216	bool "udelay based port-IO delay"
217	help
218	  Use udelay(2) as the IO delay method. This provides the delay
219	  while not having any side-effect on the IO port space.
220
221config IO_DELAY_NONE
222	bool "no port-IO delay"
223	help
224	  No port-IO delay. Will break on old boxes that require port-IO
225	  delay for certain operations. Should work on most new machines.
226
227endchoice
228
229if IO_DELAY_0X80
230config DEFAULT_IO_DELAY_TYPE
231	int
232	default IO_DELAY_TYPE_0X80
233endif
234
235if IO_DELAY_0XED
236config DEFAULT_IO_DELAY_TYPE
237	int
238	default IO_DELAY_TYPE_0XED
239endif
240
241if IO_DELAY_UDELAY
242config DEFAULT_IO_DELAY_TYPE
243	int
244	default IO_DELAY_TYPE_UDELAY
245endif
246
247if IO_DELAY_NONE
248config DEFAULT_IO_DELAY_TYPE
249	int
250	default IO_DELAY_TYPE_NONE
251endif
252
253config DEBUG_BOOT_PARAMS
254	bool "Debug boot parameters"
255	depends on DEBUG_KERNEL
256	depends on DEBUG_FS
257	help
258	  This option will cause struct boot_params to be exported via debugfs.
259
260config CPA_DEBUG
261	bool "CPA self-test code"
262	depends on DEBUG_KERNEL
263	help
264	  Do change_page_attr() self-tests every 30 seconds.
265
266config OPTIMIZE_INLINING
267	bool "Allow gcc to uninline functions marked 'inline'"
268	depends on BROKEN
269	help
270	  This option determines if the kernel forces gcc to inline the functions
271	  developers have marked 'inline'. Doing so takes away freedom from gcc to
272	  do what it thinks is best, which is desirable for the gcc 3.x series of
273	  compilers. The gcc 4.x series have a rewritten inlining algorithm and
274	  disabling this option will generate a smaller kernel there. Hopefully
275	  this algorithm is so good that allowing gcc4 to make the decision can
276	  become the default in the future, until then this option is there to
277	  test gcc for this.
278
279endmenu
280
281