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