[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v5 3/6] x86/gdbsx: Move domain_pause_for_debugger() into gdbsx
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@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> CC: Wei Liu <wl@xxxxxxx> 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(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index a5048ed6546a..a72cc9552ad6 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -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 diff --git a/xen/arch/x86/gdbsx.c b/xen/arch/x86/gdbsx.c index 59eb31fc9a6a..6ef46e8ea77d 100644 --- a/xen/arch/x86/gdbsx.c +++ b/xen/arch/x86/gdbsx.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 diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 2455835eda62..0849a9dc5f41 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.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> diff --git a/xen/arch/x86/hvm/vmx/realmode.c b/xen/arch/x86/hvm/vmx/realmode.c index cc23afa788c2..4ac93e081015 100644 --- a/xen/arch/x86/hvm/vmx/realmode.c +++ b/xen/arch/x86/hvm/vmx/realmode.c @@ -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> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index af9ee7cebbe0..cc8c4e9f044a 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -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> diff --git a/xen/arch/x86/include/asm/debugger.h b/xen/arch/x86/include/asm/debugger.h index c5585752cae7..9a3132356fd6 100644 --- a/xen/arch/x86/include/asm/debugger.h +++ b/xen/arch/x86/include/asm/debugger.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> diff --git a/xen/arch/x86/include/asm/gdbsx.h b/xen/arch/x86/include/asm/gdbsx.h index eee746fc01d0..938eb74e2e25 100644 --- a/xen/arch/x86/include/asm/gdbsx.h +++ b/xen/arch/x86/include/asm/gdbsx.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__ */ diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index 302eaf2ff39a..765602374802 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -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> diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 84cd038dc38b..d91532461189 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -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> -- 2.11.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |