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