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