Thomas Gleixner | ec8f24b | 2019-05-19 13:07:45 +0100 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0-only |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 2 | |
Jan Engelhardt | e024cbd | 2008-04-25 18:35:29 +0200 | [diff] [blame] | 3 | config HAVE_ARCH_KGDB |
| 4 | bool |
| 5 | |
Vincent Chen | 8c080d3 | 2020-06-23 13:36:42 +0800 | [diff] [blame] | 6 | # set if architecture has the its kgdb_arch_handle_qxfer_pkt |
| 7 | # function to enable gdb stub to address XML packet sent from GDB. |
| 8 | config HAVE_ARCH_KGDB_QXFER_PKT |
| 9 | bool |
| 10 | |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 11 | menuconfig KGDB |
Jason Wessel | dcc7871 | 2010-05-20 21:04:21 -0500 | [diff] [blame] | 12 | bool "KGDB: kernel debugger" |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 13 | depends on HAVE_ARCH_KGDB |
Kees Cook | 525c1f9 | 2013-01-16 18:54:16 -0800 | [diff] [blame] | 14 | depends on DEBUG_KERNEL |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 15 | help |
| 16 | If you say Y here, it will be possible to remotely debug the |
Jason Wessel | 5f5ddfb | 2008-08-01 08:39:34 -0500 | [diff] [blame] | 17 | kernel using gdb. It is recommended but not required, that |
| 18 | you also turn on the kernel config option |
| 19 | CONFIG_FRAME_POINTER to aid in producing more reliable stack |
| 20 | backtraces in the external debugger. Documentation of |
| 21 | kernel debugger is available at http://kgdb.sourceforge.net |
Mauro Carvalho Chehab | 08c76a2 | 2017-05-14 12:06:29 -0300 | [diff] [blame] | 22 | as well as in Documentation/dev-tools/kgdb.rst. If |
Jason Wessel | 5f5ddfb | 2008-08-01 08:39:34 -0500 | [diff] [blame] | 23 | unsure, say N. |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 24 | |
Jan Engelhardt | e024cbd | 2008-04-25 18:35:29 +0200 | [diff] [blame] | 25 | if KGDB |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 26 | |
Daniel Thompson | f2d10ff | 2020-09-27 22:15:29 +0100 | [diff] [blame] | 27 | config KGDB_HONOUR_BLOCKLIST |
| 28 | bool "KGDB: use kprobe blocklist to prohibit unsafe breakpoints" |
| 29 | depends on HAVE_KPROBES |
| 30 | depends on MODULES |
| 31 | select KPROBES |
| 32 | default y |
| 33 | help |
| 34 | If set to Y the debug core will use the kprobe blocklist to |
| 35 | identify symbols where it is unsafe to set breakpoints. |
| 36 | In particular this disallows instrumentation of functions |
| 37 | called during debug trap handling and thus makes it very |
| 38 | difficult to inadvertently provoke recursive trap handling. |
| 39 | |
| 40 | If unsure, say Y. |
| 41 | |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 42 | config KGDB_SERIAL_CONSOLE |
| 43 | tristate "KGDB: use kgdb over the serial console" |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 44 | select CONSOLE_POLL |
| 45 | select MAGIC_SYSRQ |
Jiri Slaby | c5d2cac | 2016-05-23 16:26:20 -0700 | [diff] [blame] | 46 | depends on TTY && HW_CONSOLE |
Jason Wessel | dc7d552 | 2008-04-17 20:05:37 +0200 | [diff] [blame] | 47 | default y |
| 48 | help |
| 49 | Share a serial console with kgdb. Sysrq-g must be used |
| 50 | to break in initially. |
Jason Wessel | e8d31c2 | 2008-03-07 16:34:17 -0600 | [diff] [blame] | 51 | |
| 52 | config KGDB_TESTS |
| 53 | bool "KGDB: internal test suite" |
Jason Wessel | e8d31c2 | 2008-03-07 16:34:17 -0600 | [diff] [blame] | 54 | default n |
| 55 | help |
| 56 | This is a kgdb I/O module specifically designed to test |
| 57 | kgdb's internal functions. This kgdb I/O module is |
| 58 | intended to for the development of new kgdb stubs |
| 59 | as well as regression testing the kgdb internals. |
| 60 | See the drivers/misc/kgdbts.c for the details about |
| 61 | the tests. The most basic of this I/O module is to boot |
| 62 | a kernel boot arguments "kgdbwait kgdbts=V1F100" |
Jason Wessel | 974460c | 2008-03-20 13:43:44 -0500 | [diff] [blame] | 63 | |
| 64 | config KGDB_TESTS_ON_BOOT |
| 65 | bool "KGDB: Run tests on boot" |
| 66 | depends on KGDB_TESTS |
| 67 | default n |
| 68 | help |
| 69 | Run the kgdb tests on boot up automatically without the need |
| 70 | to pass in a kernel parameter |
| 71 | |
| 72 | config KGDB_TESTS_BOOT_STRING |
| 73 | string "KGDB: which internal kgdb tests to run" |
| 74 | depends on KGDB_TESTS_ON_BOOT |
| 75 | default "V1F100" |
| 76 | help |
| 77 | This is the command string to send the kgdb test suite on |
| 78 | boot. See the drivers/misc/kgdbts.c for detailed |
| 79 | information about other strings you could use beyond the |
| 80 | default of V1F100. |
Jan Engelhardt | e024cbd | 2008-04-25 18:35:29 +0200 | [diff] [blame] | 81 | |
Jason Wessel | f503b5a | 2010-05-20 21:04:25 -0500 | [diff] [blame] | 82 | config KGDB_LOW_LEVEL_TRAP |
| 83 | bool "KGDB: Allow debugging with traps in notifiers" |
Jason Wessel | 5dd11d5 | 2010-05-20 21:04:26 -0500 | [diff] [blame] | 84 | depends on X86 || MIPS |
Jason Wessel | f503b5a | 2010-05-20 21:04:25 -0500 | [diff] [blame] | 85 | default n |
| 86 | help |
Krzysztof Kozlowski | 68d4b3d | 2019-12-06 17:04:08 -0800 | [diff] [blame] | 87 | This will add an extra call back to kgdb for the breakpoint |
| 88 | exception handler which will allow kgdb to step through a |
| 89 | notify handler. |
Jason Wessel | f503b5a | 2010-05-20 21:04:25 -0500 | [diff] [blame] | 90 | |
Jason Wessel | dcc7871 | 2010-05-20 21:04:21 -0500 | [diff] [blame] | 91 | config KGDB_KDB |
| 92 | bool "KGDB_KDB: include kdb frontend for kgdb" |
| 93 | default n |
| 94 | help |
| 95 | KDB frontend for kernel |
| 96 | |
Daniel Thompson | b801717 | 2014-11-06 14:36:47 +0000 | [diff] [blame] | 97 | config KDB_DEFAULT_ENABLE |
| 98 | hex "KDB: Select kdb command functions to be enabled by default" |
| 99 | depends on KGDB_KDB |
| 100 | default 0x1 |
| 101 | help |
| 102 | Specifiers which kdb commands are enabled by default. This may |
| 103 | be set to 1 or 0 to enable all commands or disable almost all |
| 104 | commands. |
| 105 | |
| 106 | Alternatively the following bitmask applies: |
| 107 | |
| 108 | 0x0002 - allow arbitrary reads from memory and symbol lookup |
| 109 | 0x0004 - allow arbitrary writes to memory |
| 110 | 0x0008 - allow current register state to be inspected |
| 111 | 0x0010 - allow current register state to be modified |
| 112 | 0x0020 - allow passive inspection (backtrace, process list, lsmod) |
| 113 | 0x0040 - allow flow control management (breakpoint, single step) |
| 114 | 0x0080 - enable signalling of processes |
| 115 | 0x0100 - allow machine to be rebooted |
| 116 | |
| 117 | The config option merely sets the default at boot time. Both |
| 118 | issuing 'echo X > /sys/module/kdb/parameters/cmd_enable' or |
Krzysztof Kozlowski | 68d4b3d | 2019-12-06 17:04:08 -0800 | [diff] [blame] | 119 | setting with kdb.cmd_enable=X kernel command line option will |
Daniel Thompson | b801717 | 2014-11-06 14:36:47 +0000 | [diff] [blame] | 120 | override the default settings. |
| 121 | |
Jason Wessel | ada64e4 | 2010-05-20 21:04:24 -0500 | [diff] [blame] | 122 | config KDB_KEYBOARD |
| 123 | bool "KGDB_KDB: keyboard as input device" |
| 124 | depends on VT && KGDB_KDB |
| 125 | default n |
| 126 | help |
| 127 | KDB can use a PS/2 type keyboard for an input device |
| 128 | |
Robert Obermeier | 3b0eb71 | 2012-12-16 05:59:36 +0100 | [diff] [blame] | 129 | config KDB_CONTINUE_CATASTROPHIC |
| 130 | int "KDB: continue after catastrophic errors" |
| 131 | depends on KGDB_KDB |
| 132 | default "0" |
| 133 | help |
| 134 | This integer controls the behaviour of kdb when the kernel gets a |
| 135 | catastrophic error, i.e. for a panic or oops. |
| 136 | When KDB is active and a catastrophic error occurs, nothing extra |
| 137 | will happen until you type 'go'. |
| 138 | CONFIG_KDB_CONTINUE_CATASTROPHIC == 0 (default). The first time |
| 139 | you type 'go', you will be warned by kdb. The secend time you type |
| 140 | 'go', KDB tries to continue. No guarantees that the |
| 141 | kernel is still usable in this situation. |
| 142 | CONFIG_KDB_CONTINUE_CATASTROPHIC == 1. KDB tries to continue. |
| 143 | No guarantees that the kernel is still usable in this situation. |
| 144 | CONFIG_KDB_CONTINUE_CATASTROPHIC == 2. KDB forces a reboot. |
| 145 | If you are not sure, say 0. |
| 146 | |
Douglas Anderson | b1a57bb | 2020-05-07 13:08:42 -0700 | [diff] [blame] | 147 | config ARCH_HAS_EARLY_DEBUG |
| 148 | bool |
| 149 | default n |
| 150 | help |
| 151 | If an architecture can definitely handle entering the debugger |
| 152 | when early_param's are parsed then it select this config. |
| 153 | Otherwise, if "kgdbwait" is passed on the kernel command line it |
| 154 | won't actually be processed until dbg_late_init() just after the |
| 155 | call to kgdb_arch_late() is made. |
| 156 | |
| 157 | NOTE: Even if this isn't selected by an architecture we will |
| 158 | still try to register kgdb to handle breakpoints and crashes |
| 159 | when early_param's are parsed, we just won't act on the |
| 160 | "kgdbwait" parameter until dbg_late_init(). If you get a |
| 161 | crash and try to drop into kgdb somewhere between these two |
| 162 | places you might or might not end up being able to use kgdb |
| 163 | depending on exactly how far along the architecture has initted. |
| 164 | |
Jan Engelhardt | e024cbd | 2008-04-25 18:35:29 +0200 | [diff] [blame] | 165 | endif # KGDB |