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