| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | menu "Kernel hacking" | 
|  | 2 |  | 
| Ingo Molnar | 55f327f | 2006-07-03 00:24:43 -0700 | [diff] [blame] | 3 | config TRACE_IRQFLAGS_SUPPORT | 
| Randy Dunlap | d013a27 | 2007-10-24 15:50:43 -0700 | [diff] [blame] | 4 | def_bool y | 
| Ingo Molnar | 55f327f | 2006-07-03 00:24:43 -0700 | [diff] [blame] | 5 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 6 | source "lib/Kconfig.debug" | 
|  | 7 |  | 
| Ingo Molnar | d092633 | 2008-07-18 00:26:59 +0200 | [diff] [blame] | 8 | config STRICT_DEVMEM | 
|  | 9 | bool "Filter access to /dev/mem" | 
| Arjan van de Ven | ae531c2 | 2008-04-24 23:40:47 +0200 | [diff] [blame] | 10 | help | 
| Linus Torvalds | f2d0f1d | 2008-07-21 13:04:08 -0700 | [diff] [blame] | 11 | If this option is disabled, you allow userspace (root) access to all | 
| Stefan Richter | 16104b5 | 2008-06-05 22:47:13 +0200 | [diff] [blame] | 12 | of memory, including kernel and userspace memory. Accidental | 
|  | 13 | access to this is obviously disastrous, but specific access can | 
| Ingo Molnar | d092633 | 2008-07-18 00:26:59 +0200 | [diff] [blame] | 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. | 
| Stefan Richter | 16104b5 | 2008-06-05 22:47:13 +0200 | [diff] [blame] | 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. | 
| Arjan van de Ven | ae531c2 | 2008-04-24 23:40:47 +0200 | [diff] [blame] | 24 |  | 
| Ben Collins | 6bcb13b | 2008-06-18 14:04:35 -0400 | [diff] [blame] | 25 | config 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | config EARLY_PRINTK | 
| Ingo Molnar | 076f977 | 2008-01-30 13:33:06 +0100 | [diff] [blame] | 34 | bool "Early printk" if EMBEDDED | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
|  | 46 | config DEBUG_STACKOVERFLOW | 
|  | 47 | bool "Check for stack overflows" | 
|  | 48 | depends on DEBUG_KERNEL | 
| Adrian Bunk | dab175f | 2005-07-27 11:44:23 -0700 | [diff] [blame] | 49 | help | 
|  | 50 | This option will cause messages to be printed if free stack space | 
|  | 51 | drops below a certain limit. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 52 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 | config DEBUG_STACK_USAGE | 
|  | 54 | bool "Stack utilization instrumentation" | 
|  | 55 | depends on DEBUG_KERNEL | 
|  | 56 | help | 
|  | 57 | Enables the display of the minimum amount of free stack which each | 
|  | 58 | task has ever had available in the sysrq-T and sysrq-P debug output. | 
|  | 59 |  | 
|  | 60 | This option will slow down process creation somewhat. | 
|  | 61 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 62 | config DEBUG_PAGEALLOC | 
| Andrew Morton | 4a2f0ac | 2006-03-25 03:07:22 -0800 | [diff] [blame] | 63 | bool "Debug page memory allocations" | 
| Thomas Gleixner | b1d95f4 | 2008-02-09 23:24:09 +0100 | [diff] [blame] | 64 | depends on DEBUG_KERNEL | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 65 | help | 
|  | 66 | Unmap pages from the kernel linear mapping after free_pages(). | 
|  | 67 | This results in a large slowdown, but helps to find certain types | 
|  | 68 | of memory corruptions. | 
|  | 69 |  | 
| travis@sgi.com | c49a495 | 2008-01-30 13:33:22 +0100 | [diff] [blame] | 70 | config DEBUG_PER_CPU_MAPS | 
|  | 71 | bool "Debug access to per_cpu maps" | 
|  | 72 | depends on DEBUG_KERNEL | 
| Mike Travis | 23ca4bb | 2008-05-12 21:21:12 +0200 | [diff] [blame] | 73 | depends on X86_SMP | 
| travis@sgi.com | c49a495 | 2008-01-30 13:33:22 +0100 | [diff] [blame] | 74 | default n | 
|  | 75 | help | 
|  | 76 | Say Y to verify that the per_cpu map being accessed has | 
|  | 77 | been setup.  Adds a fair amount of code to kernel memory | 
|  | 78 | and decreases performance. | 
|  | 79 |  | 
|  | 80 | Say N if unsure. | 
|  | 81 |  | 
| Arjan van de Ven | 926e539 | 2008-04-17 17:40:45 +0200 | [diff] [blame] | 82 | config X86_PTDUMP | 
|  | 83 | bool "Export kernel pagetable layout to userspace via debugfs" | 
| H. Peter Anvin | fe770bf | 2008-04-17 17:40:45 +0200 | [diff] [blame] | 84 | depends on DEBUG_KERNEL | 
| Arjan van de Ven | 926e539 | 2008-04-17 17:40:45 +0200 | [diff] [blame] | 85 | select DEBUG_FS | 
|  | 86 | help | 
|  | 87 | Say Y here if you want to show the kernel pagetable layout in a | 
|  | 88 | debugfs file. This information is only useful for kernel developers | 
|  | 89 | who are working in architecture specific areas of the kernel. | 
|  | 90 | It is probably not a good idea to enable this feature in a production | 
|  | 91 | kernel. | 
|  | 92 | If in doubt, say "N" | 
|  | 93 |  | 
| Arjan van de Ven | 63aaf30 | 2006-01-06 00:12:02 -0800 | [diff] [blame] | 94 | config DEBUG_RODATA | 
|  | 95 | bool "Write protect kernel read-only data structures" | 
| Ingo Molnar | 11201e6 | 2008-01-30 13:33:32 +0100 | [diff] [blame] | 96 | default y | 
| Arjan van de Ven | 63aaf30 | 2006-01-06 00:12:02 -0800 | [diff] [blame] | 97 | depends on DEBUG_KERNEL | 
|  | 98 | help | 
|  | 99 | Mark the kernel read-only data as write-protected in the pagetables, | 
|  | 100 | in order to catch accidental (and incorrect) writes to such const | 
| Ingo Molnar | 11201e6 | 2008-01-30 13:33:32 +0100 | [diff] [blame] | 101 | data. This is recommended so that we can catch kernel bugs sooner. | 
|  | 102 | If in doubt, say "Y". | 
| Arjan van de Ven | 63aaf30 | 2006-01-06 00:12:02 -0800 | [diff] [blame] | 103 |  | 
| Ingo Molnar | 00d1c5e | 2008-04-17 17:40:45 +0200 | [diff] [blame] | 104 | config DIRECT_GBPAGES | 
|  | 105 | bool "Enable gbpages-mapped kernel pagetables" | 
|  | 106 | depends on DEBUG_KERNEL && EXPERIMENTAL && X86_64 | 
|  | 107 | help | 
|  | 108 | Enable gigabyte pages support (if the CPU supports it). This can | 
|  | 109 | improve the kernel's performance a tiny bit by reducing TLB | 
|  | 110 | pressure. | 
|  | 111 |  | 
|  | 112 | This is experimental code. | 
|  | 113 |  | 
|  | 114 | If in doubt, say "N". | 
|  | 115 |  | 
| Ingo Molnar | aba8391 | 2008-01-30 13:34:09 +0100 | [diff] [blame] | 116 | config DEBUG_RODATA_TEST | 
|  | 117 | bool "Testcase for the DEBUG_RODATA feature" | 
|  | 118 | depends on DEBUG_RODATA | 
|  | 119 | help | 
|  | 120 | This option enables a testcase for the DEBUG_RODATA | 
|  | 121 | feature as well as for the change_page_attr() infrastructure. | 
|  | 122 | If in doubt, say "N" | 
|  | 123 |  | 
|  | 124 | config DEBUG_NX_TEST | 
|  | 125 | tristate "Testcase for the NX non-executable stack feature" | 
|  | 126 | depends on DEBUG_KERNEL && m | 
|  | 127 | help | 
|  | 128 | This option enables a testcase for the CPU NX capability | 
|  | 129 | and the software setup of this feature. | 
|  | 130 | If in doubt, say "N" | 
|  | 131 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 132 | config 4KSTACKS | 
|  | 133 | bool "Use 4Kb for kernel stacks instead of 8Kb" | 
| Randy Dunlap | d013a27 | 2007-10-24 15:50:43 -0700 | [diff] [blame] | 134 | depends on X86_32 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 135 | help | 
|  | 136 | If you say Y here the kernel will use a 4Kb stacksize for the | 
|  | 137 | kernel stack attached to each process/thread. This facilitates | 
|  | 138 | running more threads on a system and also reduces the pressure | 
|  | 139 | on the VM subsystem for higher order allocations. This option | 
|  | 140 | will also use IRQ stacks to compensate for the reduced stackspace. | 
|  | 141 |  | 
| Andi Kleen | 102e41f | 2006-04-18 12:35:22 +0200 | [diff] [blame] | 142 | config DOUBLEFAULT | 
|  | 143 | default y | 
|  | 144 | bool "Enable doublefault exception handler" if EMBEDDED | 
| Randy Dunlap | d013a27 | 2007-10-24 15:50:43 -0700 | [diff] [blame] | 145 | depends on X86_32 | 
| Andi Kleen | 102e41f | 2006-04-18 12:35:22 +0200 | [diff] [blame] | 146 | help | 
| Randy Dunlap | d013a27 | 2007-10-24 15:50:43 -0700 | [diff] [blame] | 147 | This option allows trapping of rare doublefault exceptions that | 
|  | 148 | would otherwise cause a system to silently reboot. Disabling this | 
|  | 149 | option saves about 4k and might cause you much additional grey | 
|  | 150 | hair. | 
|  | 151 |  | 
|  | 152 | config IOMMU_DEBUG | 
|  | 153 | bool "Enable IOMMU debugging" | 
| Joerg Roedel | 966396d | 2007-10-24 12:49:48 +0200 | [diff] [blame] | 154 | depends on GART_IOMMU && DEBUG_KERNEL | 
| Randy Dunlap | d013a27 | 2007-10-24 15:50:43 -0700 | [diff] [blame] | 155 | depends on X86_64 | 
|  | 156 | help | 
|  | 157 | Force the IOMMU to on even when you have less than 4GB of | 
|  | 158 | memory and add debugging code. On overflow always panic. And | 
|  | 159 | allow to enable IOMMU leak tracing. Can be disabled at boot | 
|  | 160 | time with iommu=noforce. This will also enable scatter gather | 
|  | 161 | list merging.  Currently not recommended for production | 
|  | 162 | code. When you use it make sure you have a big enough | 
|  | 163 | IOMMU/AGP aperture.  Most of the options enabled by this can | 
|  | 164 | be set more finegrained using the iommu= command line | 
|  | 165 | options. See Documentation/x86_64/boot-options.txt for more | 
|  | 166 | details. | 
|  | 167 |  | 
|  | 168 | config IOMMU_LEAK | 
|  | 169 | bool "IOMMU leak tracing" | 
|  | 170 | depends on DEBUG_KERNEL | 
|  | 171 | depends on IOMMU_DEBUG | 
|  | 172 | help | 
|  | 173 | Add a simple leak tracer to the IOMMU code. This is useful when you | 
|  | 174 | are debugging a buggy device driver that leaks IOMMU mappings. | 
|  | 175 |  | 
| Pekka Paalanen | 10c43d2 | 2008-05-12 21:20:57 +0200 | [diff] [blame] | 176 | config MMIOTRACE_HOOKS | 
|  | 177 | bool | 
| Pekka Paalanen | 8606978 | 2008-05-12 21:20:56 +0200 | [diff] [blame] | 178 |  | 
| Pekka Paalanen | 8b7d89d | 2008-05-12 21:20:56 +0200 | [diff] [blame] | 179 | config MMIOTRACE | 
| Pekka Paalanen | d61fc44 | 2008-05-12 21:20:57 +0200 | [diff] [blame] | 180 | bool "Memory mapped IO tracing" | 
| Randy Dunlap | 37b3619 | 2008-05-12 21:20:59 +0200 | [diff] [blame] | 181 | depends on DEBUG_KERNEL && PCI | 
| Pekka Paalanen | f984b51 | 2008-05-12 21:20:57 +0200 | [diff] [blame] | 182 | select TRACING | 
| Pekka Paalanen | 10c43d2 | 2008-05-12 21:20:57 +0200 | [diff] [blame] | 183 | select MMIOTRACE_HOOKS | 
| Pekka Paalanen | 8b7d89d | 2008-05-12 21:20:56 +0200 | [diff] [blame] | 184 | help | 
| Pekka Paalanen | d61fc44 | 2008-05-12 21:20:57 +0200 | [diff] [blame] | 185 | Mmiotrace traces Memory Mapped I/O access and is meant for | 
|  | 186 | debugging and reverse engineering. It is called from the ioremap | 
| Pekka Paalanen | c6c67c1 | 2008-05-12 21:20:59 +0200 | [diff] [blame] | 187 | implementation and works via page faults. Tracing is disabled by | 
| Randy Dunlap | 37b3619 | 2008-05-12 21:20:59 +0200 | [diff] [blame] | 188 | default and can be enabled at run-time. | 
| Pekka Paalanen | 8b7d89d | 2008-05-12 21:20:56 +0200 | [diff] [blame] | 189 |  | 
| Pekka Paalanen | c6c67c1 | 2008-05-12 21:20:59 +0200 | [diff] [blame] | 190 | See Documentation/tracers/mmiotrace.txt. | 
| Pekka Paalanen | 8b7d89d | 2008-05-12 21:20:56 +0200 | [diff] [blame] | 191 | If you are not helping to develop drivers, say N. | 
|  | 192 |  | 
|  | 193 | config MMIOTRACE_TEST | 
|  | 194 | tristate "Test module for mmiotrace" | 
|  | 195 | depends on MMIOTRACE && m | 
| Pekka Paalanen | 8b7d89d | 2008-05-12 21:20:56 +0200 | [diff] [blame] | 196 | help | 
|  | 197 | This is a dumb module for testing mmiotrace. It is very dangerous | 
|  | 198 | as it will write garbage to IO memory starting at a given address. | 
|  | 199 | However, it should be safe to use on e.g. unused portion of VRAM. | 
|  | 200 |  | 
|  | 201 | Say N, unless you absolutely know what you are doing. | 
|  | 202 |  | 
| Ingo Molnar | 6e7c402 | 2008-01-30 13:30:05 +0100 | [diff] [blame] | 203 | # | 
|  | 204 | # IO delay types: | 
|  | 205 | # | 
|  | 206 |  | 
|  | 207 | config IO_DELAY_TYPE_0X80 | 
|  | 208 | int | 
|  | 209 | default "0" | 
|  | 210 |  | 
|  | 211 | config IO_DELAY_TYPE_0XED | 
|  | 212 | int | 
|  | 213 | default "1" | 
|  | 214 |  | 
|  | 215 | config IO_DELAY_TYPE_UDELAY | 
|  | 216 | int | 
|  | 217 | default "2" | 
|  | 218 |  | 
|  | 219 | config IO_DELAY_TYPE_NONE | 
|  | 220 | int | 
|  | 221 | default "3" | 
|  | 222 |  | 
|  | 223 | choice | 
|  | 224 | prompt "IO delay type" | 
| Ingo Molnar | fd59e9e | 2008-02-17 20:20:24 +0100 | [diff] [blame] | 225 | default IO_DELAY_0X80 | 
| Ingo Molnar | 6e7c402 | 2008-01-30 13:30:05 +0100 | [diff] [blame] | 226 |  | 
|  | 227 | config IO_DELAY_0X80 | 
|  | 228 | bool "port 0x80 based port-IO delay [recommended]" | 
| Rene Herman | b02aae9 | 2008-01-30 13:30:05 +0100 | [diff] [blame] | 229 | help | 
| Ingo Molnar | 6e7c402 | 2008-01-30 13:30:05 +0100 | [diff] [blame] | 230 | This is the traditional Linux IO delay used for in/out_p. | 
|  | 231 | It is the most tested hence safest selection here. | 
|  | 232 |  | 
|  | 233 | config IO_DELAY_0XED | 
|  | 234 | bool "port 0xed based port-IO delay" | 
|  | 235 | help | 
|  | 236 | Use port 0xed as the IO delay. This frees up port 0x80 which is | 
|  | 237 | often used as a hardware-debug port. | 
|  | 238 |  | 
|  | 239 | config IO_DELAY_UDELAY | 
|  | 240 | bool "udelay based port-IO delay" | 
|  | 241 | help | 
|  | 242 | Use udelay(2) as the IO delay method. This provides the delay | 
|  | 243 | while not having any side-effect on the IO port space. | 
|  | 244 |  | 
|  | 245 | config IO_DELAY_NONE | 
|  | 246 | bool "no port-IO delay" | 
|  | 247 | help | 
|  | 248 | No port-IO delay. Will break on old boxes that require port-IO | 
|  | 249 | delay for certain operations. Should work on most new machines. | 
|  | 250 |  | 
|  | 251 | endchoice | 
|  | 252 |  | 
|  | 253 | if IO_DELAY_0X80 | 
|  | 254 | config DEFAULT_IO_DELAY_TYPE | 
|  | 255 | int | 
|  | 256 | default IO_DELAY_TYPE_0X80 | 
|  | 257 | endif | 
|  | 258 |  | 
|  | 259 | if IO_DELAY_0XED | 
|  | 260 | config DEFAULT_IO_DELAY_TYPE | 
|  | 261 | int | 
|  | 262 | default IO_DELAY_TYPE_0XED | 
|  | 263 | endif | 
|  | 264 |  | 
|  | 265 | if IO_DELAY_UDELAY | 
|  | 266 | config DEFAULT_IO_DELAY_TYPE | 
|  | 267 | int | 
|  | 268 | default IO_DELAY_TYPE_UDELAY | 
|  | 269 | endif | 
|  | 270 |  | 
|  | 271 | if IO_DELAY_NONE | 
|  | 272 | config DEFAULT_IO_DELAY_TYPE | 
|  | 273 | int | 
|  | 274 | default IO_DELAY_TYPE_NONE | 
|  | 275 | endif | 
| Rene Herman | b02aae9 | 2008-01-30 13:30:05 +0100 | [diff] [blame] | 276 |  | 
| Huang, Ying | 6d7d743 | 2008-01-30 13:32:51 +0100 | [diff] [blame] | 277 | config DEBUG_BOOT_PARAMS | 
|  | 278 | bool "Debug boot parameters" | 
|  | 279 | depends on DEBUG_KERNEL | 
|  | 280 | depends on DEBUG_FS | 
|  | 281 | help | 
|  | 282 | This option will cause struct boot_params to be exported via debugfs. | 
|  | 283 |  | 
| Andi Kleen | 0c42f39 | 2008-01-30 13:33:42 +0100 | [diff] [blame] | 284 | config CPA_DEBUG | 
| Ingo Molnar | 971a52d | 2008-02-06 22:39:45 +0100 | [diff] [blame] | 285 | bool "CPA self-test code" | 
| Ingo Molnar | f316fe6 | 2008-01-30 13:34:04 +0100 | [diff] [blame] | 286 | depends on DEBUG_KERNEL | 
| Andi Kleen | 0c42f39 | 2008-01-30 13:33:42 +0100 | [diff] [blame] | 287 | help | 
| Ingo Molnar | 971a52d | 2008-02-06 22:39:45 +0100 | [diff] [blame] | 288 | Do change_page_attr() self-tests every 30 seconds. | 
| Andi Kleen | 0c42f39 | 2008-01-30 13:33:42 +0100 | [diff] [blame] | 289 |  | 
| Ingo Molnar | 60a3cdd | 2008-03-03 12:38:52 +0100 | [diff] [blame] | 290 | config OPTIMIZE_INLINING | 
|  | 291 | bool "Allow gcc to uninline functions marked 'inline'" | 
| Ingo Molnar | 60a3cdd | 2008-03-03 12:38:52 +0100 | [diff] [blame] | 292 | help | 
|  | 293 | This option determines if the kernel forces gcc to inline the functions | 
|  | 294 | developers have marked 'inline'. Doing so takes away freedom from gcc to | 
|  | 295 | do what it thinks is best, which is desirable for the gcc 3.x series of | 
|  | 296 | compilers. The gcc 4.x series have a rewritten inlining algorithm and | 
|  | 297 | disabling this option will generate a smaller kernel there. Hopefully | 
|  | 298 | this algorithm is so good that allowing gcc4 to make the decision can | 
|  | 299 | become the default in the future, until then this option is there to | 
|  | 300 | test gcc for this. | 
| Ingo Molnar | c9af1e3 | 2008-04-30 08:48:45 +0200 | [diff] [blame] | 301 |  | 
| Ingo Molnar | 3f9b5cc | 2008-07-18 16:30:05 +0200 | [diff] [blame] | 302 | If unsure, say N. | 
|  | 303 |  | 
| Ingo Molnar | c9af1e3 | 2008-04-30 08:48:45 +0200 | [diff] [blame] | 304 | endmenu | 
|  | 305 |  |