mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen: put more code under CONFIG_CRASH_DEBUG
debugger_trap_entry() is not needed without CONFIG_CRASH_DEBUG, so only include it if CONFIG_CRASH_DEBUG is defined. While at it remove CONFIG_HAS_GDBSX as it can easily be replaced by CONFIG_CRASH_DEBUG. Signed-off-by: Juergen Gross <jgross@suse.com> Acked-by: George Dunlap <george.dunlap@citrix.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
1171a93b6c
commit
137a233186
7 files changed
+34
-31
No files matched your search
@@ -13,7 +13,6 @@ config X86
|
||||
select HAS_EHCI
|
||||
select HAS_EX_TABLE
|
||||
select HAS_FAST_MULTIPLY
|
||||
select HAS_GDBSX
|
||||
select HAS_IOPORTS
|
||||
select HAS_KEXEC
|
||||
select MEM_ACCESS_ALWAYS_ON
|
||||
|
||||
@@ -2317,6 +2317,19 @@ static int __init init_vcpu_kick_softirq(void)
|
||||
}
|
||||
__initcall(init_vcpu_kick_softirq);
|
||||
|
||||
void domain_pause_for_debugger(void)
|
||||
{
|
||||
#ifdef CONFIG_CRASH_DEBUG
|
||||
struct vcpu *curr = current;
|
||||
struct domain *d = curr->domain;
|
||||
|
||||
domain_pause_by_systemcontroller_nosync(d);
|
||||
|
||||
/* if gdbsx active, we just need to pause the domain */
|
||||
if ( curr->arch.gdbsx_vcpu_event == 0 )
|
||||
send_global_virq(VIRQ_DEBUGGER);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <xen/sched.h>
|
||||
#include <xen/paging.h>
|
||||
#include <xen/softirq.h>
|
||||
#include <asm/debugger.h>
|
||||
#include <asm/event.h>
|
||||
#include <asm/hvm/emulate.h>
|
||||
#include <asm/hvm/hvm.h>
|
||||
|
||||
@@ -57,9 +57,6 @@ config HAS_UBSAN
|
||||
config HAS_KEXEC
|
||||
bool
|
||||
|
||||
config HAS_GDBSX
|
||||
bool
|
||||
|
||||
config HAS_IOPORTS
|
||||
bool
|
||||
|
||||
|
||||
@@ -915,20 +915,6 @@ void vcpu_end_shutdown_deferral(struct vcpu *v)
|
||||
vcpu_check_shutdown(v);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAS_GDBSX
|
||||
void domain_pause_for_debugger(void)
|
||||
{
|
||||
struct vcpu *curr = current;
|
||||
struct domain *d = curr->domain;
|
||||
|
||||
domain_pause_by_systemcontroller_nosync(d);
|
||||
|
||||
/* if gdbsx active, we just need to pause the domain */
|
||||
if ( curr->arch.gdbsx_vcpu_event == 0 )
|
||||
send_global_virq(VIRQ_DEBUGGER);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Complete domain destroy after RCU readers are not holding old references. */
|
||||
static void complete_domain_destroy(struct rcu_head *head)
|
||||
{
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
#include <asm/regs.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
void domain_pause_for_debugger(void);
|
||||
|
||||
#ifdef CONFIG_CRASH_DEBUG
|
||||
|
||||
#include <xen/gdbstub.h>
|
||||
@@ -47,18 +49,6 @@ static inline bool debugger_trap_fatal(
|
||||
/* Int3 is a trivial way to gather cpu_user_regs context. */
|
||||
#define debugger_trap_immediate() __asm__ __volatile__ ( "int3" );
|
||||
|
||||
#else
|
||||
|
||||
static inline bool debugger_trap_fatal(
|
||||
unsigned int vector, struct cpu_user_regs *regs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#define debugger_trap_immediate() ((void)0)
|
||||
|
||||
#endif
|
||||
|
||||
static inline bool debugger_trap_entry(
|
||||
unsigned int vector, struct cpu_user_regs *regs)
|
||||
{
|
||||
@@ -84,6 +74,24 @@ static inline bool debugger_trap_entry(
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline bool debugger_trap_fatal(
|
||||
unsigned int vector, struct cpu_user_regs *regs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#define debugger_trap_immediate() ((void)0)
|
||||
|
||||
static inline bool debugger_trap_entry(
|
||||
unsigned int vector, struct cpu_user_regs *regs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
unsigned int dbg_rw_mem(void * __user addr, void * __user buf,
|
||||
unsigned int len, domid_t domid, bool toaddr,
|
||||
uint64_t pgd3);
|
||||
|
||||
@@ -655,7 +655,6 @@ void domain_destroy(struct domain *d);
|
||||
int domain_kill(struct domain *d);
|
||||
int domain_shutdown(struct domain *d, u8 reason);
|
||||
void domain_resume(struct domain *d);
|
||||
void domain_pause_for_debugger(void);
|
||||
|
||||
int domain_soft_reset(struct domain *d);
|
||||
|
||||
|
||||