@@ -2540,20 +2540,6 @@ static int __init cf_check 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:
* mode: C
@@ -18,6 +18,8 @@
#include <xen/mm.h>
#include <xen/domain_page.h>
#include <xen/guest_access.h>
+#include <xen/event.h>
+
#include <asm/gdbsx.h>
#include <asm/p2m.h>
@@ -164,6 +166,18 @@ int gdbsx_guest_mem_io(struct domain *d, struct xen_domctl_gdbsx_memio *iop)
return iop->remain ? -EFAULT : 0;
}
+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);
+}
+
/*
* Local variables:
* mode: C
@@ -58,7 +58,7 @@
#include <asm/hvm/trace.h>
#include <asm/hap.h>
#include <asm/apic.h>
-#include <asm/debugger.h>
+#include <asm/gdbsx.h>
#include <asm/hvm/monitor.h>
#include <asm/monitor.h>
#include <asm/xstate.h>
@@ -14,7 +14,8 @@
#include <xen/sched.h>
#include <xen/paging.h>
#include <xen/softirq.h>
-#include <asm/debugger.h>
+
+#include <asm/gdbsx.h>
#include <asm/event.h>
#include <asm/hvm/emulate.h>
#include <asm/hvm/hvm.h>
@@ -51,7 +51,7 @@
#include <asm/hvm/trace.h>
#include <asm/hvm/monitor.h>
#include <asm/xenoprof.h>
-#include <asm/debugger.h>
+#include <asm/gdbsx.h>
#include <asm/apic.h>
#include <asm/hvm/nestedhvm.h>
#include <asm/altp2m.h>
@@ -26,8 +26,6 @@
#include <asm/regs.h>
#include <asm/processor.h>
-void domain_pause_for_debugger(void);
-
#ifdef CONFIG_CRASH_DEBUG
#include <xen/gdbstub.h>
@@ -9,5 +9,11 @@ struct xen_domctl_gdbsx_memio;
int gdbsx_guest_mem_io(struct domain *d, struct xen_domctl_gdbsx_memio *iop);
+void domain_pause_for_debugger(void);
+
+#else
+
+static inline void domain_pause_for_debugger(void) {}
+
#endif /* CONFIG_GDBSX */
#endif /* __X86_GDBX_H__ */
@@ -30,7 +30,6 @@
#include <asm/msr.h>
#include <asm/mpspec.h>
#include <asm/nmi.h>
-#include <asm/debugger.h>
#include <asm/div64.h>
#include <asm/apic.h>
@@ -58,6 +58,7 @@
#include <xen/bitops.h>
#include <asm/desc.h>
#include <asm/debugreg.h>
+#include <asm/gdbsx.h>
#include <asm/smp.h>
#include <asm/flushtlb.h>
#include <asm/uaccess.h>
domain_pause_for_debugger() is guest debugging (CONFIG_GDBSX) not host debugging (CONFIG_CRASH_DEBUG). Move it into the new gdbsx.c to drop the (incorrect) ifdefary, and provide a static inline in the !CONFIG_GDBSX case so callers can optimise away everything rather than having to emit a call to an empty function. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Jan Beulich <JBeulich@suse.com> CC: Roger Pau Monné <roger.pau@citrix.com> CC: Wei Liu <wl@xen.org> v5: * Basically new. Reworked entirely after re-considering other cleanup. --- xen/arch/x86/domain.c | 14 -------------- xen/arch/x86/gdbsx.c | 14 ++++++++++++++ xen/arch/x86/hvm/svm/svm.c | 2 +- xen/arch/x86/hvm/vmx/realmode.c | 3 ++- xen/arch/x86/hvm/vmx/vmx.c | 2 +- xen/arch/x86/include/asm/debugger.h | 2 -- xen/arch/x86/include/asm/gdbsx.h | 6 ++++++ xen/arch/x86/nmi.c | 1 - xen/arch/x86/traps.c | 1 + 9 files changed, 25 insertions(+), 20 deletions(-)