GNU Linux-libre 5.15.137-gnu
[releases.git] / arch / x86 / Kconfig.debug
1 # SPDX-License-Identifier: GPL-2.0
2
3 config EARLY_PRINTK_USB
4         bool
5
6 config X86_VERBOSE_BOOTUP
7         bool "Enable verbose x86 bootup info messages"
8         default y
9         help
10           Enables the informational output from the decompression stage
11           (e.g. bzImage) of the boot. If you disable this you will still
12           see errors. Disable this if you want silent bootup.
13
14 config EARLY_PRINTK
15         bool "Early printk" if EXPERT
16         default y
17         help
18           Write kernel log output directly into the VGA buffer or to a serial
19           port.
20
21           This is useful for kernel debugging when your machine crashes very
22           early before the console code is initialized. For normal operation
23           it is not recommended because it looks ugly and doesn't cooperate
24           with klogd/syslogd or the X server. You should normally say N here,
25           unless you want to debug such a crash.
26
27 config EARLY_PRINTK_DBGP
28         bool "Early printk via EHCI debug port"
29         depends on EARLY_PRINTK && PCI
30         select EARLY_PRINTK_USB
31         help
32           Write kernel log output directly into the EHCI debug 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 say N here,
38           unless you want to debug such a crash. You need usb debug device.
39
40 config EARLY_PRINTK_USB_XDBC
41         bool "Early printk via the xHCI debug port"
42         depends on EARLY_PRINTK && PCI
43         select EARLY_PRINTK_USB
44         help
45           Write kernel log output directly into the xHCI debug port.
46
47           One use for this feature is kernel debugging, for example when your
48           machine crashes very early before the regular console code is
49           initialized. Other uses include simpler, lockless logging instead of
50           a full-blown printk console driver + klogd.
51
52           For normal production environments this is normally not recommended,
53           because it doesn't feed events into klogd/syslogd and doesn't try to
54           print anything on the screen.
55
56           You should normally say N here, unless you want to debug early
57           crashes or need a very simple printk logging facility.
58
59 config EFI_PGT_DUMP
60         bool "Dump the EFI pagetable"
61         depends on EFI
62         select PTDUMP_CORE
63         help
64           Enable this if you want to dump the EFI page table before
65           enabling virtual mode. This can be used to debug miscellaneous
66           issues with the mapping of the EFI runtime regions into that
67           table.
68
69 config DEBUG_TLBFLUSH
70         bool "Set upper limit of TLB entries to flush one-by-one"
71         depends on DEBUG_KERNEL
72         help
73
74         X86-only for now.
75
76         This option allows the user to tune the amount of TLB entries the
77         kernel flushes one-by-one instead of doing a full TLB flush. In
78         certain situations, the former is cheaper. This is controlled by the
79         tlb_flushall_shift knob under /sys/kernel/debug/x86. If you set it
80         to -1, the code flushes the whole TLB unconditionally. Otherwise,
81         for positive values of it, the kernel will use single TLB entry
82         invalidating instructions according to the following formula:
83
84         flush_entries <= active_tlb_entries / 2^tlb_flushall_shift
85
86         If in doubt, say "N".
87
88 config IOMMU_DEBUG
89         bool "Enable IOMMU debugging"
90         depends on GART_IOMMU && DEBUG_KERNEL
91         depends on X86_64
92         help
93           Force the IOMMU to on even when you have less than 4GB of
94           memory and add debugging code. On overflow always panic. And
95           allow to enable IOMMU leak tracing. Can be disabled at boot
96           time with iommu=noforce. This will also enable scatter gather
97           list merging.  Currently not recommended for production
98           code. When you use it make sure you have a big enough
99           IOMMU/AGP aperture.  Most of the options enabled by this can
100           be set more finegrained using the iommu= command line
101           options. See Documentation/x86/x86_64/boot-options.rst for more
102           details.
103
104 config IOMMU_LEAK
105         bool "IOMMU leak tracing"
106         depends on IOMMU_DEBUG && DMA_API_DEBUG
107         help
108           Add a simple leak tracer to the IOMMU code. This is useful when you
109           are debugging a buggy device driver that leaks IOMMU mappings.
110
111 config HAVE_MMIOTRACE_SUPPORT
112         def_bool y
113
114 config X86_DECODER_SELFTEST
115         bool "x86 instruction decoder selftest"
116         depends on DEBUG_KERNEL && INSTRUCTION_DECODER
117         depends on !COMPILE_TEST
118         help
119          Perform x86 instruction decoder selftests at build time.
120          This option is useful for checking the sanity of x86 instruction
121          decoder code.
122          If unsure, say "N".
123
124 choice
125         prompt "IO delay type"
126         default IO_DELAY_0X80
127
128 config IO_DELAY_0X80
129         bool "port 0x80 based port-IO delay [recommended]"
130         help
131           This is the traditional Linux IO delay used for in/out_p.
132           It is the most tested hence safest selection here.
133
134 config IO_DELAY_0XED
135         bool "port 0xed based port-IO delay"
136         help
137           Use port 0xed as the IO delay. This frees up port 0x80 which is
138           often used as a hardware-debug port.
139
140 config IO_DELAY_UDELAY
141         bool "udelay based port-IO delay"
142         help
143           Use udelay(2) as the IO delay method. This provides the delay
144           while not having any side-effect on the IO port space.
145
146 config IO_DELAY_NONE
147         bool "no port-IO delay"
148         help
149           No port-IO delay. Will break on old boxes that require port-IO
150           delay for certain operations. Should work on most new machines.
151
152 endchoice
153
154 config DEBUG_BOOT_PARAMS
155         bool "Debug boot parameters"
156         depends on DEBUG_KERNEL
157         depends on DEBUG_FS
158         help
159           This option will cause struct boot_params to be exported via debugfs.
160
161 config CPA_DEBUG
162         bool "CPA self-test code"
163         depends on DEBUG_KERNEL
164         help
165           Do change_page_attr() self-tests every 30 seconds.
166
167 config DEBUG_ENTRY
168         bool "Debug low-level entry code"
169         depends on DEBUG_KERNEL
170         help
171           This option enables sanity checks in x86's low-level entry code.
172           Some of these sanity checks may slow down kernel entries and
173           exits or otherwise impact performance.
174
175           If unsure, say N.
176
177 config DEBUG_NMI_SELFTEST
178         bool "NMI Selftest"
179         depends on DEBUG_KERNEL && X86_LOCAL_APIC
180         help
181           Enabling this option turns on a quick NMI selftest to verify
182           that the NMI behaves correctly.
183
184           This might help diagnose strange hangs that rely on NMI to
185           function properly.
186
187           If unsure, say N.
188
189 config DEBUG_IMR_SELFTEST
190         bool "Isolated Memory Region self test"
191         depends on INTEL_IMR
192         help
193           This option enables automated sanity testing of the IMR code.
194           Some simple tests are run to verify IMR bounds checking, alignment
195           and overlapping. This option is really only useful if you are
196           debugging an IMR memory map or are modifying the IMR code and want to
197           test your changes.
198
199           If unsure say N here.
200
201 config X86_DEBUG_FPU
202         bool "Debug the x86 FPU code"
203         depends on DEBUG_KERNEL
204         default y
205         help
206           If this option is enabled then there will be extra sanity
207           checks and (boot time) debug printouts added to the kernel.
208           This debugging adds some small amount of runtime overhead
209           to the kernel.
210
211           If unsure, say N.
212
213 config PUNIT_ATOM_DEBUG
214         tristate "ATOM Punit debug driver"
215         depends on PCI
216         select DEBUG_FS
217         select IOSF_MBI
218         help
219           This is a debug driver, which gets the power states
220           of all Punit North Complex devices. The power states of
221           each device is exposed as part of the debugfs interface.
222           The current power state can be read from
223           /sys/kernel/debug/punit_atom/dev_power_state
224
225 choice
226         prompt "Choose kernel unwinder"
227         default UNWINDER_ORC if X86_64
228         default UNWINDER_FRAME_POINTER if X86_32
229         help
230           This determines which method will be used for unwinding kernel stack
231           traces for panics, oopses, bugs, warnings, perf, /proc/<pid>/stack,
232           livepatch, lockdep, and more.
233
234 config UNWINDER_ORC
235         bool "ORC unwinder"
236         depends on X86_64
237         select STACK_VALIDATION
238         help
239           This option enables the ORC (Oops Rewind Capability) unwinder for
240           unwinding kernel stack traces.  It uses a custom data format which is
241           a simplified version of the DWARF Call Frame Information standard.
242
243           This unwinder is more accurate across interrupt entry frames than the
244           frame pointer unwinder.  It also enables a 5-10% performance
245           improvement across the entire kernel compared to frame pointers.
246
247           Enabling this option will increase the kernel's runtime memory usage
248           by roughly 2-4MB, depending on your kernel config.
249
250 config UNWINDER_FRAME_POINTER
251         bool "Frame pointer unwinder"
252         select FRAME_POINTER
253         help
254           This option enables the frame pointer unwinder for unwinding kernel
255           stack traces.
256
257           The unwinder itself is fast and it uses less RAM than the ORC
258           unwinder, but the kernel text size will grow by ~3% and the kernel's
259           overall performance will degrade by roughly 5-10%.
260
261 config UNWINDER_GUESS
262         bool "Guess unwinder"
263         depends on EXPERT
264         depends on !STACKDEPOT
265         help
266           This option enables the "guess" unwinder for unwinding kernel stack
267           traces.  It scans the stack and reports every kernel text address it
268           finds.  Some of the addresses it reports may be incorrect.
269
270           While this option often produces false positives, it can still be
271           useful in many cases.  Unlike the other unwinders, it has no runtime
272           overhead.
273
274 endchoice
275
276 config FRAME_POINTER
277         depends on !UNWINDER_ORC && !UNWINDER_GUESS
278         bool