* [PATCH 0/4] kgdb: Small usability improvements for x86
@ 2012-03-16 11:40 Jan Kiszka
2012-03-16 11:40 ` [PATCH 1/4] kgdb: x86: Return all segment registers also in 64-bit mode Jan Kiszka
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Jan Kiszka @ 2012-03-16 11:40 UTC (permalink / raw)
To: Jason Wessel
Cc: kvm, kgdb-bugreport, H. Peter Anvin, Ingo Molnar, Thomas Gleixner,
x86
This cleans up the "info register" result on x86 and adds gdb detach on
reboot/shutdown for this target arch. See patches for details.
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: Ingo Molnar <mingo@redhat.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: x86@kernel.org
Jan Kiszka (4):
kgdb: x86: Return all segment registers also in 64-bit mode
kgdb: Make gdbstub_exit a nop unless gdb is attached
kgdb: Respect that flush op is optional
kgdb: x86: Detach gdb if machine shuts down or reboots
arch/x86/include/asm/kgdb.h | 6 +++++-
arch/x86/kernel/kgdb.c | 6 ++++--
arch/x86/kernel/reboot.c | 6 ++++++
include/linux/kgdb.h | 1 +
kernel/debug/gdbstub.c | 6 +++++-
5 files changed, 21 insertions(+), 4 deletions(-)
--
1.7.3.4
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 1/4] kgdb: x86: Return all segment registers also in 64-bit mode 2012-03-16 11:40 [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka @ 2012-03-16 11:40 ` Jan Kiszka 2012-03-16 11:40 ` [PATCH 2/4] kgdb: Make gdbstub_exit a nop unless gdb is attached Jan Kiszka ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Jan Kiszka @ 2012-03-16 11:40 UTC (permalink / raw) To: Jason Wessel; +Cc: kvm, kgdb-bugreport Even if the content is always 0, gdb expects us to return also ds, es, fs, and gs while in x86-64 mode. Do this to avoid ugly errors on "info registers". Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- arch/x86/include/asm/kgdb.h | 6 +++++- arch/x86/kernel/kgdb.c | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/kgdb.h b/arch/x86/include/asm/kgdb.h index 77e95f5..e857f1a 100644 --- a/arch/x86/include/asm/kgdb.h +++ b/arch/x86/include/asm/kgdb.h @@ -64,9 +64,13 @@ enum regnames { GDB_PS, /* 17 */ GDB_CS, /* 18 */ GDB_SS, /* 19 */ + GDB_DS, /* 20 */ + GDB_ES, /* 21 */ + GDB_FS, /* 22 */ + GDB_GS, /* 23 */ }; #define GDB_ORIG_AX 57 -#define DBG_MAX_REG_NUM 20 +#define DBG_MAX_REG_NUM 24 /* 17 64 bit regs and 3 32 bit regs */ #define NUMREGBYTES ((17 * 8) + (3 * 4)) #endif /* ! CONFIG_X86_32 */ diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c index faba577..fdc37b3 100644 --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c @@ -67,8 +67,6 @@ struct dbg_reg_def_t dbg_reg_def[DBG_MAX_REG_NUM] = { "ss", 4, offsetof(struct pt_regs, ss) }, { "ds", 4, offsetof(struct pt_regs, ds) }, { "es", 4, offsetof(struct pt_regs, es) }, - { "fs", 4, -1 }, - { "gs", 4, -1 }, #else { "ax", 8, offsetof(struct pt_regs, ax) }, { "bx", 8, offsetof(struct pt_regs, bx) }, @@ -90,7 +88,11 @@ struct dbg_reg_def_t dbg_reg_def[DBG_MAX_REG_NUM] = { "flags", 4, offsetof(struct pt_regs, flags) }, { "cs", 4, offsetof(struct pt_regs, cs) }, { "ss", 4, offsetof(struct pt_regs, ss) }, + { "ds", 4, -1 }, + { "es", 4, -1 }, #endif + { "fs", 4, -1 }, + { "gs", 4, -1 }, }; int dbg_set_reg(int regno, void *mem, struct pt_regs *regs) -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] kgdb: Make gdbstub_exit a nop unless gdb is attached 2012-03-16 11:40 [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka 2012-03-16 11:40 ` [PATCH 1/4] kgdb: x86: Return all segment registers also in 64-bit mode Jan Kiszka @ 2012-03-16 11:40 ` Jan Kiszka 2012-03-16 11:41 ` [PATCH 3/4] kgdb: Respect that flush op is optional Jan Kiszka ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Jan Kiszka @ 2012-03-16 11:40 UTC (permalink / raw) To: Jason Wessel; +Cc: kvm, kgdb-bugreport This allows to call gdbstub_exit without worrying if - CONFIG_KGDB is enabled - if an kgdb I/O driver is loaded - if a gdb frontend is currently attached Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- include/linux/kgdb.h | 1 + kernel/debug/gdbstub.c | 3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h index fa39183..16410e2 100644 --- a/include/linux/kgdb.h +++ b/include/linux/kgdb.h @@ -306,6 +306,7 @@ extern atomic_t kgdb_active; extern bool dbg_is_early; extern void __init dbg_late_init(void); #else /* ! CONFIG_KGDB */ +static inline void gdbstub_exit(int status) { } #define in_dbg_master() (0) #define dbg_late_init() #endif /* ! CONFIG_KGDB */ diff --git a/kernel/debug/gdbstub.c b/kernel/debug/gdbstub.c index c22d8c2..5d7ed0a 100644 --- a/kernel/debug/gdbstub.c +++ b/kernel/debug/gdbstub.c @@ -1111,6 +1111,9 @@ void gdbstub_exit(int status) unsigned char checksum, ch, buffer[3]; int loop; + if (!dbg_io_ops || !kgdb_connected) + return; + buffer[0] = 'W'; buffer[1] = hex_asc_hi(status); buffer[2] = hex_asc_lo(status); -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] kgdb: Respect that flush op is optional 2012-03-16 11:40 [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka 2012-03-16 11:40 ` [PATCH 1/4] kgdb: x86: Return all segment registers also in 64-bit mode Jan Kiszka 2012-03-16 11:40 ` [PATCH 2/4] kgdb: Make gdbstub_exit a nop unless gdb is attached Jan Kiszka @ 2012-03-16 11:41 ` Jan Kiszka 2012-03-16 11:41 ` [PATCH 4/4] kgdb: x86: Detach gdb if machine shuts down or reboots Jan Kiszka 2012-03-16 12:14 ` [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka 4 siblings, 0 replies; 6+ messages in thread From: Jan Kiszka @ 2012-03-16 11:41 UTC (permalink / raw) To: Jason Wessel; +Cc: kvm, kgdb-bugreport Not all kgdb I/O drivers implement a flush operation. Adjust gdbstub_exit accordingly. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- kernel/debug/gdbstub.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/kernel/debug/gdbstub.c b/kernel/debug/gdbstub.c index 5d7ed0a..c174ea3 100644 --- a/kernel/debug/gdbstub.c +++ b/kernel/debug/gdbstub.c @@ -1132,5 +1132,6 @@ void gdbstub_exit(int status) dbg_io_ops->write_char(hex_asc_lo(checksum)); /* make sure the output is flushed, lest the bootloader clobber it */ - dbg_io_ops->flush(); + if (dbg_io_ops->flush) + dbg_io_ops->flush(); } -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] kgdb: x86: Detach gdb if machine shuts down or reboots 2012-03-16 11:40 [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka ` (2 preceding siblings ...) 2012-03-16 11:41 ` [PATCH 3/4] kgdb: Respect that flush op is optional Jan Kiszka @ 2012-03-16 11:41 ` Jan Kiszka 2012-03-16 12:14 ` [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka 4 siblings, 0 replies; 6+ messages in thread From: Jan Kiszka @ 2012-03-16 11:41 UTC (permalink / raw) To: Jason Wessel Cc: kvm, kgdb-bugreport, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86 Hook into machine restart/power-off/halt handlers and call gdbstub_exit so that a attached gdb frontend is properly informed. If kgdb is disabled or no frontend attached, gdbstub_exit will do nothing. CC: Thomas Gleixner <tglx@linutronix.de> CC: Ingo Molnar <mingo@redhat.com> CC: "H. Peter Anvin" <hpa@zytor.com> CC: x86@kernel.org Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- arch/x86/kernel/reboot.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index d840e69..926ac17 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c @@ -7,6 +7,7 @@ #include <linux/sched.h> #include <linux/tboot.h> #include <linux/delay.h> +#include <linux/kgdb.h> #include <acpi/reboot.h> #include <asm/io.h> #include <asm/apic.h> @@ -683,6 +684,7 @@ void native_machine_shutdown(void) static void __machine_emergency_restart(int emergency) { reboot_emergency = emergency; + gdbstub_exit(1); machine_ops.emergency_restart(); } @@ -730,6 +732,7 @@ struct machine_ops machine_ops = { void machine_power_off(void) { + gdbstub_exit(0); machine_ops.power_off(); } @@ -745,17 +748,20 @@ void machine_emergency_restart(void) void machine_restart(char *cmd) { + gdbstub_exit(0); machine_ops.restart(cmd); } void machine_halt(void) { + gdbstub_exit(0); machine_ops.halt(); } #ifdef CONFIG_KEXEC void machine_crash_shutdown(struct pt_regs *regs) { + gdbstub_exit(1); machine_ops.crash_shutdown(regs); } #endif -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] kgdb: Small usability improvements for x86 2012-03-16 11:40 [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka ` (3 preceding siblings ...) 2012-03-16 11:41 ` [PATCH 4/4] kgdb: x86: Detach gdb if machine shuts down or reboots Jan Kiszka @ 2012-03-16 12:14 ` Jan Kiszka 4 siblings, 0 replies; 6+ messages in thread From: Jan Kiszka @ 2012-03-16 12:14 UTC (permalink / raw) Cc: Jason Wessel, kvm, kgdb-bugreport, H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86 On 2012-03-16 12:40, Jan Kiszka wrote: > This cleans up the "info register" result on x86 and adds gdb detach on > reboot/shutdown for this target arch. See patches for details. > > CC: "H. Peter Anvin" <hpa@zytor.com> > CC: Ingo Molnar <mingo@redhat.com> > CC: Thomas Gleixner <tglx@linutronix.de> > CC: x86@kernel.org > > Jan Kiszka (4): > kgdb: x86: Return all segment registers also in 64-bit mode > kgdb: Make gdbstub_exit a nop unless gdb is attached > kgdb: Respect that flush op is optional > kgdb: x86: Detach gdb if machine shuts down or reboots > > arch/x86/include/asm/kgdb.h | 6 +++++- > arch/x86/kernel/kgdb.c | 6 ++++-- > arch/x86/kernel/reboot.c | 6 ++++++ > include/linux/kgdb.h | 1 + > kernel/debug/gdbstub.c | 6 +++++- > 5 files changed, 21 insertions(+), 4 deletions(-) > Sorry, wrong CC. Should have gone to LKML instead of the kvm list. I will repost. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-03-16 12:15 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-03-16 11:40 [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka 2012-03-16 11:40 ` [PATCH 1/4] kgdb: x86: Return all segment registers also in 64-bit mode Jan Kiszka 2012-03-16 11:40 ` [PATCH 2/4] kgdb: Make gdbstub_exit a nop unless gdb is attached Jan Kiszka 2012-03-16 11:41 ` [PATCH 3/4] kgdb: Respect that flush op is optional Jan Kiszka 2012-03-16 11:41 ` [PATCH 4/4] kgdb: x86: Detach gdb if machine shuts down or reboots Jan Kiszka 2012-03-16 12:14 ` [PATCH 0/4] kgdb: Small usability improvements for x86 Jan Kiszka
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox