|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 6/6] EXAMPLE TEST CODE
---
xen/arch/x86/traps.c | 17 +++++++++++++++++
xen/include/asm-x86/hvm/vmx/vmx.h | 4 +++-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index b32f696..bc34d56 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -4045,6 +4045,23 @@ void asm_domain_crash_synchronous(unsigned long addr)
__domain_crash_synchronous();
}
+#include <xen/keyhandler.h>
+#include <asm/hvm/vmx/vmx.h>
+
+static void do_extreme_debug(unsigned char key, struct cpu_user_regs *regs)
+{
+ printk("'%c' pressed -> Extreme debugging in progress...\n", key);
+
+ __vmptrld(0x2);
+}
+
+static int __init extreme_debug_keyhandler_init(void)
+{
+ register_irq_keyhandler('1', &do_extreme_debug, "Extreme debugging", 0);
+ return 0;
+}
+__initcall(extreme_debug_keyhandler_init);
+
/*
* Local variables:
* mode: C
diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h
b/xen/include/asm-x86/hvm/vmx/vmx.h
index f16a306..42f904e 100644
--- a/xen/include/asm-x86/hvm/vmx/vmx.h
+++ b/xen/include/asm-x86/hvm/vmx/vmx.h
@@ -292,14 +292,16 @@ static always_inline void __vmptrld(u64 addr)
/* CF==1 or ZF==1 --> BUG() */
UNLIKELY_START(be, vmptrld)
_ASM_BUGFRAME_TEXT(0)
+ "jmp 1f;"
UNLIKELY_END_SECTION
+ "\n1:"
:
#ifdef HAVE_GAS_VMX
: "m" (addr),
#else
: "a" (&addr),
#endif
- _ASM_BUGFRAME_INFO(BUGFRAME_bug, __LINE__, __FILE__, 0)
+ _ASM_BUGFRAME_INFO(BUGFRAME_warn, __LINE__, __FILE__, 0)
: "memory");
}
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |