On Fri, Apr 3, 2020 at 6:12 PM Daniel Thompson <daniel.thomp...@linaro.org> wrote: > > On Tue, Mar 31, 2020 at 11:23:06PM +0800, Vincent Chen 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 steal registers. > > > > This patchset has passed the kgdbts test suite provided by Linux kernel on > > HiFive unleashed board and QEMU. > > Can you share the defconfig and qemu boot lines used for testing. > > I'd like to see if they can easily be integrated into kgdbtest. Normally > figuring out the qemu boot line is the hardest bit of adding support for > an architecture one is not familar with. > The process of building a RISC-V kernel is a bit different from other architecture. Maybe you can refer the steps in https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html to build the kernel image and run it.
For the Linux configuration used by KGDB, I just enable KGDB related configuration based on riscv defconfig. The riscv defconfig can founded in arch/riscv/configs/defconfig The QEMU boot lines are listed in the following. qemu-system-riscv64 -M virt -m 256M -nographic \ -kernel <bbl image>\ -append "debug root=/dev/vda rw console=ttyS0" \ -drive file=<root file system>,format=raw,id=hd0 \ -serial tcp:localhost:2345,server \ -gdb tcp::1133 \ -device virtio-blk-device,drive=hd0 \ > > Daniel. > > > PS At the moment it helps kgdbtest a lot if qemu is configured with two > serial ports but I really should get round to relaxing that! > > > > > 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 instrcuton 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/Kbuild | 1 - > > arch/riscv/include/asm/gdb_xml.h | 117 ++++++++++++ > > arch/riscv/include/asm/kdebug.h | 12 ++ > > arch/riscv/include/asm/kgdb.h | 113 +++++++++++ > > arch/riscv/include/asm/parse_asm.h | 214 +++++++++++++++++++++ > > arch/riscv/kernel/Makefile | 1 + > > arch/riscv/kernel/kgdb.c | 382 > > +++++++++++++++++++++++++++++++++++++ > > arch/riscv/kernel/traps.c | 5 + > > include/linux/kgdb.h | 9 + > > kernel/debug/debug_core.c | 12 ++ > > kernel/debug/gdbstub.c | 13 ++ > > lib/Kconfig.kgdb | 5 + > > 13 files changed, 885 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/include/asm/parse_asm.h > > create mode 100644 arch/riscv/kernel/kgdb.c > > > > -- > > 2.7.4 > > _______________________________________________ Kgdb-bugreport mailing list Kgdb-bugreport@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport