
config HAVE_ARCH_KGDB
	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_SERIAL_CONSOLE
	tristate "KGDB: use kgdb over the serial console"
	select CONSOLE_POLL
	select MAGIC_SYSRQ
	depends on TTY && HW_CONSOLE
	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
	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.

endif # KGDB
