|  | # SPDX-License-Identifier: GPL-2.0-only | 
|  |  | 
|  | config HAVE_ARCH_KGDB | 
|  | bool | 
|  |  | 
|  | # set if architecture has the its kgdb_arch_handle_qxfer_pkt | 
|  | # function to enable gdb stub to address XML packet sent from GDB. | 
|  | config HAVE_ARCH_KGDB_QXFER_PKT | 
|  | bool | 
|  |  | 
|  | menuconfig KGDB | 
|  | bool "KGDB: kernel debugger" | 
|  | depends on HAVE_ARCH_KGDB | 
|  | depends on DEBUG_KERNEL | 
|  | help | 
|  | If you say Y here, it will be possible to remotely debug the | 
|  | kernel using gdb.  It is recommended but not required, that | 
|  | you also turn on the kernel config option | 
|  | CONFIG_FRAME_POINTER to aid in producing more reliable stack | 
|  | backtraces in the external debugger.  Documentation of | 
|  | kernel debugger is available at http://kgdb.sourceforge.net | 
|  | as well as in Documentation/dev-tools/kgdb.rst.  If | 
|  | unsure, say N. | 
|  |  | 
|  | if KGDB | 
|  |  | 
|  | config KGDB_HONOUR_BLOCKLIST | 
|  | bool "KGDB: use kprobe blocklist to prohibit unsafe breakpoints" | 
|  | depends on HAVE_KPROBES | 
|  | depends on MODULES | 
|  | select KPROBES | 
|  | default y | 
|  | help | 
|  | If set to Y the debug core will use the kprobe blocklist to | 
|  | identify symbols where it is unsafe to set breakpoints. | 
|  | In particular this disallows instrumentation of functions | 
|  | called during debug trap handling and thus makes it very | 
|  | difficult to inadvertently provoke recursive trap handling. | 
|  |  | 
|  | If unsure, say Y. | 
|  |  | 
|  | config KGDB_SERIAL_CONSOLE | 
|  | tristate "KGDB: use kgdb over the serial console" | 
|  | select CONSOLE_POLL | 
|  | select MAGIC_SYSRQ | 
|  | depends on TTY && VT | 
|  | default y | 
|  | help | 
|  | Share a serial console with kgdb. Sysrq-g must be used | 
|  | to break in initially. | 
|  |  | 
|  | config KGDB_TESTS | 
|  | bool "KGDB: internal test suite" | 
|  | default n | 
|  | help | 
|  | This is a kgdb I/O module specifically designed to test | 
|  | kgdb's internal functions.  This kgdb I/O module is | 
|  | intended to for the development of new kgdb stubs | 
|  | as well as regression testing the kgdb internals. | 
|  | See the drivers/misc/kgdbts.c for the details about | 
|  | the tests.  The most basic of this I/O module is to boot | 
|  | a kernel boot arguments "kgdbwait kgdbts=V1F100" | 
|  |  | 
|  | config KGDB_TESTS_ON_BOOT | 
|  | bool "KGDB: Run tests on boot" | 
|  | depends on KGDB_TESTS | 
|  | default n | 
|  | help | 
|  | Run the kgdb tests on boot up automatically without the need | 
|  | to pass in a kernel parameter | 
|  |  | 
|  | config KGDB_TESTS_BOOT_STRING | 
|  | string "KGDB: which internal kgdb tests to run" | 
|  | depends on KGDB_TESTS_ON_BOOT | 
|  | default "V1F100" | 
|  | help | 
|  | This is the command string to send the kgdb test suite on | 
|  | boot.  See the drivers/misc/kgdbts.c for detailed | 
|  | information about other strings you could use beyond the | 
|  | default of V1F100. | 
|  |  | 
|  | config KGDB_LOW_LEVEL_TRAP | 
|  | bool "KGDB: Allow debugging with traps in notifiers" | 
|  | depends on X86 || MIPS | 
|  | default n | 
|  | help | 
|  | This will add an extra call back to kgdb for the breakpoint | 
|  | exception handler which will allow kgdb to step through a | 
|  | notify handler. | 
|  |  | 
|  | config KGDB_KDB | 
|  | bool "KGDB_KDB: include kdb frontend for kgdb" | 
|  | default n | 
|  | help | 
|  | KDB frontend for kernel | 
|  |  | 
|  | config KDB_DEFAULT_ENABLE | 
|  | hex "KDB: Select kdb command functions to be enabled by default" | 
|  | depends on KGDB_KDB | 
|  | default 0x1 | 
|  | help | 
|  | Specifiers which kdb commands are enabled by default. This may | 
|  | be set to 1 or 0 to enable all commands or disable almost all | 
|  | commands. | 
|  |  | 
|  | Alternatively the following bitmask applies: | 
|  |  | 
|  | 0x0002 - allow arbitrary reads from memory and symbol lookup | 
|  | 0x0004 - allow arbitrary writes to memory | 
|  | 0x0008 - allow current register state to be inspected | 
|  | 0x0010 - allow current register state to be modified | 
|  | 0x0020 - allow passive inspection (backtrace, process list, lsmod) | 
|  | 0x0040 - allow flow control management (breakpoint, single step) | 
|  | 0x0080 - enable signalling of processes | 
|  | 0x0100 - allow machine to be rebooted | 
|  |  | 
|  | The config option merely sets the default at boot time. Both | 
|  | issuing 'echo X > /sys/module/kdb/parameters/cmd_enable' or | 
|  | setting with kdb.cmd_enable=X kernel command line option will | 
|  | override the default settings. | 
|  |  | 
|  | config KDB_KEYBOARD | 
|  | bool "KGDB_KDB: keyboard as input device" | 
|  | depends on VT && KGDB_KDB && !PARISC | 
|  | depends on HAS_IOPORT | 
|  | default n | 
|  | help | 
|  | KDB can use a PS/2 type keyboard for an input device | 
|  |  | 
|  | config KDB_CONTINUE_CATASTROPHIC | 
|  | int "KDB: continue after catastrophic errors" | 
|  | depends on KGDB_KDB | 
|  | default "0" | 
|  | help | 
|  | This integer controls the behaviour of kdb when the kernel gets a | 
|  | catastrophic error, i.e. for a panic or oops. | 
|  | When KDB is active and a catastrophic error occurs, nothing extra | 
|  | will happen until you type 'go'. | 
|  | CONFIG_KDB_CONTINUE_CATASTROPHIC == 0 (default). The first time | 
|  | you type 'go', you will be warned by kdb. The secend time you type | 
|  | 'go', KDB tries to continue. No guarantees that the | 
|  | kernel is still usable in this situation. | 
|  | CONFIG_KDB_CONTINUE_CATASTROPHIC == 1. KDB tries to continue. | 
|  | No guarantees that the kernel is still usable in this situation. | 
|  | CONFIG_KDB_CONTINUE_CATASTROPHIC == 2. KDB forces a reboot. | 
|  | If you are not sure, say 0. | 
|  |  | 
|  | config ARCH_HAS_EARLY_DEBUG | 
|  | bool | 
|  | default n | 
|  | help | 
|  | If an architecture can definitely handle entering the debugger | 
|  | when early_param's are parsed then it select this config. | 
|  | Otherwise, if "kgdbwait" is passed on the kernel command line it | 
|  | won't actually be processed until dbg_late_init() just after the | 
|  | call to kgdb_arch_late() is made. | 
|  |  | 
|  | NOTE: Even if this isn't selected by an architecture we will | 
|  | still try to register kgdb to handle breakpoints and crashes | 
|  | when early_param's are parsed, we just won't act on the | 
|  | "kgdbwait" parameter until dbg_late_init().  If you get a | 
|  | crash and try to drop into kgdb somewhere between these two | 
|  | places you might or might not end up being able to use kgdb | 
|  | depending on exactly how far along the architecture has initted. | 
|  |  | 
|  | endif # KGDB |