Skip to content

Commit

Permalink
xen: Remove debugger.h
Browse files Browse the repository at this point in the history
With x86 having dropped gdbstub, Xen's only debugger has gone.

Drop xen/debugger.h and remove the hooks spread around the codebase.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
  • Loading branch information
andyhhp committed Feb 1, 2024
1 parent d182f9f commit 3f819af
Show file tree
Hide file tree
Showing 9 changed files with 5 additions and 159 deletions.
2 changes: 0 additions & 2 deletions xen/arch/x86/include/asm/bug.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@

#ifndef __ASSEMBLY__

#define BUG_DEBUGGER_TRAP_FATAL(regs) debugger_trap_fatal(X86_EXC_GP,regs)

#define BUG_INSTR "ud2"
#define BUG_ASM_CONST "c"

Expand Down
30 changes: 0 additions & 30 deletions xen/arch/x86/include/asm/debugger.h

This file was deleted.

30 changes: 4 additions & 26 deletions xen/arch/x86/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include <xen/shutdown.h>
#include <xen/guest_access.h>
#include <asm/regs.h>
#include <xen/debugger.h>
#include <xen/delay.h>
#include <xen/event.h>
#include <xen/spinlock.h>
Expand Down Expand Up @@ -835,11 +834,6 @@ void fatal_trap(const struct cpu_user_regs *regs, bool show_remote)

void asmlinkage do_unhandled_trap(struct cpu_user_regs *regs)
{
unsigned int trapnr = regs->entry_vector;

if ( debugger_trap_fatal(trapnr, regs) )
return;

fatal_trap(regs, false);
}

Expand Down Expand Up @@ -941,9 +935,6 @@ void asmlinkage do_trap(struct cpu_user_regs *regs)
return;

hardware_trap:
if ( debugger_trap_fatal(trapnr, regs) )
return;

fatal_trap(regs, false);
}

Expand Down Expand Up @@ -1190,9 +1181,6 @@ void asmlinkage do_invalid_op(struct cpu_user_regs *regs)
if ( likely(extable_fixup(regs, true)) )
return;

if ( debugger_trap_fatal(X86_EXC_UD, regs) )
return;

show_execution_state(regs);
panic("FATAL TRAP: vector = %d (invalid opcode)\n", X86_EXC_UD);
}
Expand All @@ -1206,9 +1194,8 @@ void asmlinkage do_int3(struct cpu_user_regs *regs)
if ( likely(extable_fixup(regs, true)) )
return;

if ( !debugger_trap_fatal(X86_EXC_BP, regs) )
printk(XENLOG_DEBUG "Hit embedded breakpoint at %p [%ps]\n",
_p(regs->rip), _p(regs->rip));
printk(XENLOG_DEBUG "Hit embedded breakpoint at %p [%ps]\n",
_p(regs->rip), _p(regs->rip));

return;
}
Expand Down Expand Up @@ -1294,9 +1281,6 @@ void do_general_protection(struct cpu_user_regs *regs)
return;

hardware_gp:
if ( debugger_trap_fatal(X86_EXC_GP, regs) )
return;

show_execution_state(regs);
panic("GENERAL PROTECTION FAULT\n[error_code=%04x]\n", regs->error_code);
}
Expand Down Expand Up @@ -1620,9 +1604,6 @@ void asmlinkage do_page_fault(struct cpu_user_regs *regs)
}

fatal:
if ( debugger_trap_fatal(X86_EXC_PF, regs) )
return;

show_execution_state(regs);
show_page_walk(addr);
panic("FATAL PAGE FAULT\n"
Expand Down Expand Up @@ -1933,11 +1914,8 @@ void asmlinkage do_debug(struct cpu_user_regs *regs)
return;
}
#endif
if ( !debugger_trap_fatal(X86_EXC_DB, regs) )
{
WARN();
regs->eflags &= ~X86_EFLAGS_TF;
}
WARN();
regs->eflags &= ~X86_EFLAGS_TF;
}

/*
Expand Down
27 changes: 0 additions & 27 deletions xen/common/bug.c
Original file line number Diff line number Diff line change
@@ -1,23 +1,4 @@
#include <xen/bug.h>
/*
* Ideally <xen/debugger.h> should be included in <asm/bug.h>
* but an issue with compilation can occur as <xen/debugger.h> uses
* BUG/ASSERT/etc macros inside but they will be defined later in
* <xen/bug.h> after return from inclusion of <asm/bug.h>:
*
* <xen/bug.h>:
* ...
* <asm/bug.h>:
* ...
* <xen/debugger.h> -> some of included header in it uses BUG/ASSERT/etc
* ...
* ...
* #define BUG() ...
* ...
* #define ASSERT() ...
* ...
*/
#include <xen/debugger.h>
#include <xen/errno.h>
#include <xen/kernel.h>
#include <xen/livepatch.h>
Expand Down Expand Up @@ -96,10 +77,6 @@ int do_bug_frame(struct cpu_user_regs *regs, unsigned long pc)

case BUGFRAME_bug:
printk("Xen BUG at %s%s:%d\n", prefix, filename, lineno);

if ( BUG_DEBUGGER_TRAP_FATAL(regs) )
break;

show_execution_state(regs);
panic("Xen BUG at %s%s:%d\n", prefix, filename, lineno);

Expand All @@ -111,10 +88,6 @@ int do_bug_frame(struct cpu_user_regs *regs, unsigned long pc)

printk("Assertion '%s' failed at %s%s:%d\n",
predicate, prefix, filename, lineno);

if ( BUG_DEBUGGER_TRAP_FATAL(regs) )
break;

show_execution_state(regs);
panic("Assertion '%s' failed at %s%s:%d\n",
predicate, prefix, filename, lineno);
Expand Down
22 changes: 1 addition & 21 deletions xen/common/keyhandler.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
*/

#include <asm/regs.h>
#include <xen/debugger.h>
#include <xen/delay.h>
#include <xen/keyhandler.h>
#include <xen/param.h>
Expand All @@ -29,8 +28,7 @@ static bool alt_key_handling;
static keyhandler_fn_t cf_check show_handlers, cf_check dump_hwdom_registers,
cf_check dump_domains, cf_check read_clocks;
static irq_keyhandler_fn_t cf_check do_toggle_alt_key, cf_check dump_registers,
cf_check reboot_machine, cf_check run_all_keyhandlers,
cf_check do_debug_key;
cf_check reboot_machine, cf_check run_all_keyhandlers;

static struct keyhandler {
union {
Expand All @@ -57,7 +55,6 @@ static struct keyhandler {
IRQ_KEYHANDLER('R', reboot_machine, "reboot machine", 0),
KEYHANDLER('t', read_clocks, "display multi-cpu clock info", 1),
KEYHANDLER('0', dump_hwdom_registers, "dump Dom0 registers", 1),
IRQ_KEYHANDLER('%', do_debug_key, "trap to xendbg", 0),
IRQ_KEYHANDLER('*', run_all_keyhandlers, "print all diagnostics", 0),

#ifdef CONFIG_PERF_COUNTERS
Expand Down Expand Up @@ -503,23 +500,6 @@ static void cf_check run_all_keyhandlers(
tasklet_schedule(&run_all_keyhandlers_tasklet);
}

static void cf_check do_debugger_trap_fatal(struct cpu_user_regs *regs)
{
(void)debugger_trap_fatal(0xf001, regs);

/* Prevent tail call optimisation, which confuses xendbg. */
barrier();
}

static void cf_check do_debug_key(unsigned char key, struct cpu_user_regs *regs)
{
printk("'%c' pressed -> trapping into debugger\n", key);
if ( regs )
do_debugger_trap_fatal(regs);
else
run_in_exception_handler(do_debugger_trap_fatal);
}

static void cf_check do_toggle_alt_key(
unsigned char key, struct cpu_user_regs *regs)
{
Expand Down
2 changes: 0 additions & 2 deletions xen/common/shutdown.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#include <xen/lib.h>
#include <xen/param.h>
#include <xen/sched.h>
#include <xen/debugger.h>
#include <xen/domain.h>
#include <xen/delay.h>
#include <xen/watchdog.h>
Expand Down Expand Up @@ -40,7 +39,6 @@ void hwdom_shutdown(u8 reason)
machine_halt();

case SHUTDOWN_crash:
debugger_trap_immediate();
printk("Hardware Dom%u crashed: ", hardware_domain->domain_id);
kexec_crash(CRASHREASON_HWDOM);
reboot_or_halt();
Expand Down
3 changes: 0 additions & 3 deletions xen/drivers/char/console.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
#include <xen/init.h>
#include <xen/event.h>
#include <xen/console.h>
#include <xen/debugger.h>
#include <xen/param.h>
#include <xen/serial.h>
#include <xen/softirq.h>
Expand Down Expand Up @@ -1297,8 +1296,6 @@ void panic(const char *fmt, ...)

spin_unlock_irqrestore(&lock, flags);

debugger_trap_immediate();

kexec_crash(CRASHREASON_PANIC);

if ( opt_noreboot )
Expand Down
4 changes: 0 additions & 4 deletions xen/include/xen/bug.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@

#ifndef __ASSEMBLY__

#ifndef BUG_DEBUGGER_TRAP_FATAL
#define BUG_DEBUGGER_TRAP_FATAL(regs) 0
#endif

#include <xen/macros.h>
#include <xen/types.h>

Expand Down
44 changes: 0 additions & 44 deletions xen/include/xen/debugger.h

This file was deleted.

0 comments on commit 3f819af

Please sign in to comment.