mbox series

[0/5] riscv: Add KGDB and KDB support

Message ID 1583225076-25979-1-git-send-email-vincent.chen@sifive.com (mailing list archive)
Headers show
Series riscv: Add KGDB and KDB support | expand

Message

Vincent Chen March 3, 2020, 8:44 a.m. UTC
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 steal registers.
 
This patchset has passed the kgdbts test suite provided by Linux kernel on
HiFive unleashed board and QEMU.

Vincent Chen (5):
  kgdb: Add kgdb_has_hit_break function
  riscv: Add KGDB support
  kgdb: enable arch to handle more query packets
  riscv: Use the XML target descriptions to support system registers
    report
  riscv: Add SW single-step support for KDB

 arch/riscv/Kconfig               |   1 +
 arch/riscv/include/asm/Kbuild    |   1 -
 arch/riscv/include/asm/gdb_xml.h |  60 +++++
 arch/riscv/include/asm/kdebug.h  |  12 +
 arch/riscv/include/asm/kgdb.h    |  74 +++++++
 arch/riscv/kernel/Makefile       |   1 +
 arch/riscv/kernel/kgdb.c         | 467 +++++++++++++++++++++++++++++++++++++++
 arch/riscv/kernel/traps.c        |   5 +
 include/linux/kgdb.h             |  10 +
 kernel/debug/debug_core.c        |  12 +
 kernel/debug/gdbstub.c           |   6 +
 11 files changed, 648 insertions(+), 1 deletion(-)
 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/kernel/kgdb.c