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