linux/arch/x86/Kconfig.debug
<<
>>
Prefs
   1menu "Kernel hacking"
   2
   3config TRACE_IRQFLAGS_SUPPORT
   4        def_bool y
   5
   6source "lib/Kconfig.debug"
   7
   8config X86_VERBOSE_BOOTUP
   9        bool "Enable verbose x86 bootup info messages"
  10        default y
  11        ---help---
  12          Enables the informational output from the decompression stage
  13          (e.g. bzImage) of the boot. If you disable this you will still
  14          see errors. Disable this if you want silent bootup.
  15
  16config EARLY_PRINTK
  17        bool "Early printk" if EXPERT
  18        default y
  19        ---help---
  20          Write kernel log output directly into the VGA buffer or to a serial
  21          port.
  22
  23          This is useful for kernel debugging when your machine crashes very
  24          early before the console code is initialized. For normal operation
  25          it is not recommended because it looks ugly and doesn't cooperate
  26          with klogd/syslogd or the X server. You should normally N here,
  27          unless you want to debug such a crash.
  28
  29config EARLY_PRINTK_DBGP
  30        bool "Early printk via EHCI debug port"
  31        depends on EARLY_PRINTK && PCI
  32        ---help---
  33          Write kernel log output directly into the EHCI debug port.
  34
  35          This is useful for kernel debugging when your machine crashes very
  36          early before the console code is initialized. For normal operation
  37          it is not recommended because it looks ugly and doesn't cooperate
  38          with klogd/syslogd or the X server. You should normally N here,
  39          unless you want to debug such a crash. You need usb debug device.
  40
  41config EARLY_PRINTK_EFI
  42        bool "Early printk via the EFI framebuffer"
  43        depends on EFI && EARLY_PRINTK
  44        select FONT_SUPPORT
  45        ---help---
  46          Write kernel log output directly into the EFI framebuffer.
  47
  48          This is useful for kernel debugging when your machine crashes very
  49          early before the console code is initialized.
  50
  51config X86_PTDUMP_CORE
  52        def_bool n
  53
  54config X86_PTDUMP
  55        tristate "Export kernel pagetable layout to userspace via debugfs"
  56        depends on DEBUG_KERNEL
  57        select DEBUG_FS
  58        select X86_PTDUMP_CORE
  59        ---help---
  60          Say Y here if you want to show the kernel pagetable layout in a
  61          debugfs file. This information is only useful for kernel developers
  62          who are working in architecture specific areas of the kernel.
  63          It is probably not a good idea to enable this feature in a production
  64          kernel.
  65          If in doubt, say "N"
  66
  67config EFI_PGT_DUMP
  68        bool "Dump the EFI pagetable"
  69        depends on EFI
  70        select X86_PTDUMP_CORE
  71        ---help---
  72          Enable this if you want to dump the EFI page table before
  73          enabling virtual mode. This can be used to debug miscellaneous
  74          issues with the mapping of the EFI runtime regions into that
  75          table.
  76
  77config DEBUG_RODATA_TEST
  78        bool "Testcase for the marking rodata read-only"
  79        default y
  80        ---help---
  81          This option enables a testcase for the setting rodata read-only
  82          as well as for the change_page_attr() infrastructure.
  83          If in doubt, say "N"
  84
  85config DEBUG_WX
  86        bool "Warn on W+X mappings at boot"
  87        select X86_PTDUMP_CORE
  88        ---help---
  89          Generate a warning if any W+X mappings are found at boot.
  90
  91          This is useful for discovering cases where the kernel is leaving
  92          W+X mappings after applying NX, as such mappings are a security risk.
  93
  94          Look for a message in dmesg output like this:
  95
  96            x86/mm: Checked W+X mappings: passed, no W+X pages found.
  97
  98          or like this, if the check failed:
  99
 100            x86/mm: Checked W+X mappings: FAILED, <N> W+X pages found.
 101
 102          Note that even if the check fails, your kernel is possibly
 103          still fine, as W+X mappings are not a security hole in
 104          themselves, what they do is that they make the exploitation
 105          of other unfixed kernel bugs easier.
 106
 107          There is no runtime or memory usage effect of this option
 108          once the kernel has booted up - it's a one time check.
 109
 110          If in doubt, say "Y".
 111
 112config DEBUG_SET_MODULE_RONX
 113        bool "Set loadable kernel module data as NX and text as RO"
 114        depends on MODULES
 115        ---help---
 116          This option helps catch unintended modifications to loadable
 117          kernel module's text and read-only data. It also prevents execution
 118          of module data. Such protection may interfere with run-time code
 119          patching and dynamic kernel tracing - and they might also protect
 120          against certain classes of kernel exploits.
 121          If in doubt, say "N".
 122
 123config DEBUG_NX_TEST
 124        tristate "Testcase for the NX non-executable stack feature"
 125        depends on DEBUG_KERNEL && m
 126        ---help---
 127          This option enables a testcase for the CPU NX capability
 128          and the software setup of this feature.
 129          If in doubt, say "N"
 130
 131config DOUBLEFAULT
 132        default y
 133        bool "Enable doublefault exception handler" if EXPERT
 134        ---help---
 135          This option allows trapping of rare doublefault exceptions that
 136          would otherwise cause a system to silently reboot. Disabling this
 137          option saves about 4k and might cause you much additional grey
 138          hair.
 139
 140config DEBUG_TLBFLUSH
 141        bool "Set upper limit of TLB entries to flush one-by-one"
 142        depends on DEBUG_KERNEL
 143        ---help---
 144
 145        X86-only for now.
 146
 147        This option allows the user to tune the amount of TLB entries the
 148        kernel flushes one-by-one instead of doing a full TLB flush. In
 149        certain situations, the former is cheaper. This is controlled by the
 150        tlb_flushall_shift knob under /sys/kernel/debug/x86. If you set it
 151        to -1, the code flushes the whole TLB unconditionally. Otherwise,
 152        for positive values of it, the kernel will use single TLB entry
 153        invalidating instructions according to the following formula:
 154
 155        flush_entries <= active_tlb_entries / 2^tlb_flushall_shift
 156
 157        If in doubt, say "N".
 158
 159config IOMMU_DEBUG
 160        bool "Enable IOMMU debugging"
 161        depends on GART_IOMMU && DEBUG_KERNEL
 162        depends on X86_64
 163        ---help---
 164          Force the IOMMU to on even when you have less than 4GB of
 165          memory and add debugging code. On overflow always panic. And
 166          allow to enable IOMMU leak tracing. Can be disabled at boot
 167          time with iommu=noforce. This will also enable scatter gather
 168          list merging.  Currently not recommended for production
 169          code. When you use it make sure you have a big enough
 170          IOMMU/AGP aperture.  Most of the options enabled by this can
 171          be set more finegrained using the iommu= command line
 172          options. See Documentation/x86/x86_64/boot-options.txt for more
 173          details.
 174
 175config IOMMU_STRESS
 176        bool "Enable IOMMU stress-test mode"
 177        ---help---
 178          This option disables various optimizations in IOMMU related
 179          code to do real stress testing of the IOMMU code. This option
 180          will cause a performance drop and should only be enabled for
 181          testing.
 182
 183config IOMMU_LEAK
 184        bool "IOMMU leak tracing"
 185        depends on IOMMU_DEBUG && DMA_API_DEBUG
 186        ---help---
 187          Add a simple leak tracer to the IOMMU code. This is useful when you
 188          are debugging a buggy device driver that leaks IOMMU mappings.
 189
 190config HAVE_MMIOTRACE_SUPPORT
 191        def_bool y
 192
 193config X86_DECODER_SELFTEST
 194        bool "x86 instruction decoder selftest"
 195        depends on DEBUG_KERNEL && KPROBES
 196        depends on !COMPILE_TEST
 197        ---help---
 198         Perform x86 instruction decoder selftests at build time.
 199         This option is useful for checking the sanity of x86 instruction
 200         decoder code.
 201         If unsure, say "N".
 202
 203#
 204# IO delay types:
 205#
 206
 207config IO_DELAY_TYPE_0X80
 208        int
 209        default "0"
 210
 211config IO_DELAY_TYPE_0XED
 212        int
 213        default "1"
 214
 215config IO_DELAY_TYPE_UDELAY
 216        int
 217        default "2"
 218
 219config IO_DELAY_TYPE_NONE
 220        int
 221        default "3"
 222
 223choice
 224        prompt "IO delay type"
 225        default IO_DELAY_0X80
 226
 227config IO_DELAY_0X80
 228        bool "port 0x80 based port-IO delay [recommended]"
 229        ---help---
 230          This is the traditional Linux IO delay used for in/out_p.
 231          It is the most tested hence safest selection here.
 232
 233config 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
 239config 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
 245config 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
 251endchoice
 252
 253if IO_DELAY_0X80
 254config DEFAULT_IO_DELAY_TYPE
 255        int
 256        default IO_DELAY_TYPE_0X80
 257endif
 258
 259if IO_DELAY_0XED
 260config DEFAULT_IO_DELAY_TYPE
 261        int
 262        default IO_DELAY_TYPE_0XED
 263endif
 264
 265if IO_DELAY_UDELAY
 266config DEFAULT_IO_DELAY_TYPE
 267        int
 268        default IO_DELAY_TYPE_UDELAY
 269endif
 270
 271if IO_DELAY_NONE
 272config DEFAULT_IO_DELAY_TYPE
 273        int
 274        default IO_DELAY_TYPE_NONE
 275endif
 276
 277config 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
 284config CPA_DEBUG
 285        bool "CPA self-test code"
 286        depends on DEBUG_KERNEL
 287        ---help---
 288          Do change_page_attr() self-tests every 30 seconds.
 289
 290config OPTIMIZE_INLINING
 291        bool "Allow gcc to uninline functions marked 'inline'"
 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          enabling this option will generate a smaller kernel there. Hopefully
 298          this algorithm is so good that allowing gcc 4.x and above to make the
 299          decision will become the default in the future. Until then this option
 300          is there to test gcc for this.
 301
 302          If unsure, say N.
 303
 304config DEBUG_ENTRY
 305        bool "Debug low-level entry code"
 306        depends on DEBUG_KERNEL
 307        ---help---
 308          This option enables sanity checks in x86's low-level entry code.
 309          Some of these sanity checks may slow down kernel entries and
 310          exits or otherwise impact performance.
 311
 312          This is currently used to help test NMI code.
 313
 314          If unsure, say N.
 315
 316config DEBUG_NMI_SELFTEST
 317        bool "NMI Selftest"
 318        depends on DEBUG_KERNEL && X86_LOCAL_APIC
 319        ---help---
 320          Enabling this option turns on a quick NMI selftest to verify
 321          that the NMI behaves correctly.
 322
 323          This might help diagnose strange hangs that rely on NMI to
 324          function properly.
 325
 326          If unsure, say N.
 327
 328config DEBUG_IMR_SELFTEST
 329        bool "Isolated Memory Region self test"
 330        default n
 331        depends on INTEL_IMR
 332        ---help---
 333          This option enables automated sanity testing of the IMR code.
 334          Some simple tests are run to verify IMR bounds checking, alignment
 335          and overlapping. This option is really only useful if you are
 336          debugging an IMR memory map or are modifying the IMR code and want to
 337          test your changes.
 338
 339          If unsure say N here.
 340
 341config X86_DEBUG_FPU
 342        bool "Debug the x86 FPU code"
 343        depends on DEBUG_KERNEL
 344        default y
 345        ---help---
 346          If this option is enabled then there will be extra sanity
 347          checks and (boot time) debug printouts added to the kernel.
 348          This debugging adds some small amount of runtime overhead
 349          to the kernel.
 350
 351          If unsure, say N.
 352
 353config PUNIT_ATOM_DEBUG
 354        tristate "ATOM Punit debug driver"
 355        select DEBUG_FS
 356        select IOSF_MBI
 357        ---help---
 358          This is a debug driver, which gets the power states
 359          of all Punit North Complex devices. The power states of
 360          each device is exposed as part of the debugfs interface.
 361          The current power state can be read from
 362          /sys/kernel/debug/punit_atom/dev_power_state
 363
 364endmenu
 365