Message ID | 1587004688-19788-1-git-send-email-vincent.chen@sifive.com (mailing list archive) |
---|---|
Headers | show |
Series | Add KGDB and KDB support | expand |
On Wed, 15 Apr 2020 19:38:03 PDT (-0700), vincent.chen@sifive.com wrote: > This patch set implements required ports to enable RISC-V kernel to support > KGDB and KDB features. Because there is no immediate value in the RISC-V > trap instruction, the kernel cannot identify the purpose of each trap > exception through the opcode. This makes the existing identification > schemes in other architecture unsuitable for the RISC-V kernel. In order > to solve this problem, this patch adds the kgdb_has_hit_break() to kgdb.c > to help the RISC-V kernel identify the KGDB trap exception. In addition, > the XML target description was introduced in this patch set to enable KGDB > to report the contents of the $status, $cause and $badaddr registers. > > This patchset has passed the kgdbts test suite provided by Linux kernel on > HiFive unleashed board and QEMU. > > Changes since v3: > 1. remove duplicate macro defition > 2. Rename CONFIG_ARCH_SUPPORTS_GDB_XML to CONFIG_HAVE_ARCH_KGDB_QXFER_PKT > in the description of patch 03/05. > > Changes since v2: > 1. Fix typos > 2. Rename CONFIG_ARCH_SUPPORTS_GDB_XML to CONFIG_HAVE_ARCH_KGDB_QXFER_PKT > 3. Add the prefix kgdb_ to the handler functions and arrays that handle > "qxfer" packets > > Changes since v1: > 1. Replace the magic number with macro when filling the gdb_regs[]. > 2. Only support GDB XML packet instead of all query packets. > 3. Move the macros used to parse instructions to parse_asm.h > > Vincent Chen (5): > kgdb: Add kgdb_has_hit_break function > riscv: Add KGDB support > kgdb: enable arch to support XML packet support. > riscv: Use the XML target descriptions to report 3 system registers > riscv: Add SW single-step support for KDB > > arch/riscv/Kconfig | 2 + > arch/riscv/include/asm/gdb_xml.h | 117 +++++++++++ > arch/riscv/include/asm/kdebug.h | 12 ++ > arch/riscv/include/asm/kgdb.h | 112 +++++++++++ > arch/riscv/include/asm/parse_asm.h | 219 +++++++++++++++++++++ > arch/riscv/kernel/Makefile | 1 + > arch/riscv/kernel/kgdb.c | 390 +++++++++++++++++++++++++++++++++++++ > arch/riscv/kernel/traps.c | 5 + > include/linux/kgdb.h | 11 ++ > kernel/debug/debug_core.c | 12 ++ > kernel/debug/gdbstub.c | 13 ++ > lib/Kconfig.kgdb | 5 + > 12 files changed, 899 insertions(+) > create mode 100644 arch/riscv/include/asm/gdb_xml.h > create mode 100644 arch/riscv/include/asm/kdebug.h > create mode 100644 arch/riscv/include/asm/kgdb.h > create mode 100644 arch/riscv/include/asm/parse_asm.h > create mode 100644 arch/riscv/kernel/kgdb.c Thanks, I'm taking this into for-next.