In order to at least have some minimal debuging capabilities when Xen
crashes really early, dump out registers and stack contents in a raw
form.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
Index: 2007-06-18/xen/arch/x86/boot/x86_32.S
===================================================================
--- 2007-06-18.orig/xen/arch/x86/boot/x86_32.S 2007-06-11 15:01:03.000000000
+0200
+++ 2007-06-18/xen/arch/x86/boot/x86_32.S 2007-06-18 16:43:47.000000000
+0200
@@ -38,15 +38,30 @@
/* This is the default interrupt handler. */
int_msg:
- .asciz "Unknown interrupt\n"
+ .asciz "Unknown interrupt (cr2=%08x)\n"
+hex_msg:
+ .asciz " %08x"
ALIGN
ignore_int:
+ pusha
cld
mov $(__HYPERVISOR_DS),%eax
mov %eax,%ds
mov %eax,%es
+ mov %cr2,%eax
+ push %eax
pushl $int_msg
call printk
+ add $8,%esp
+ mov %esp,%ebp
+0:
+ pushl (%ebp)
+ add $4,%ebp
+ pushl $hex_msg
+ call printk
+ add $8,%esp
+ test $0xffc,%ebp
+ jnz 0b
1: jmp 1b
ENTRY(stack_start)
Index: 2007-06-18/xen/arch/x86/boot/x86_64.S
===================================================================
--- 2007-06-18.orig/xen/arch/x86/boot/x86_64.S 2007-06-04 08:35:35.000000000
+0200
+++ 2007-06-18/xen/arch/x86/boot/x86_64.S 2007-06-18 16:48:00.000000000
+0200
@@ -58,12 +58,40 @@
/* This is the default interrupt handler. */
int_msg:
- .asciz "Unknown interrupt\n"
+ .asciz "Unknown interrupt (cr2=%016lx)\n"
+hex_msg:
+ .asciz " %016lx"
ignore_int:
+ pushq %r15
+ pushq %r14
+ pushq %r13
+ pushq %r12
+ pushq %r11
+ pushq %r10
+ pushq %r9
+ pushq %r8
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ pushq %rsp
+ pushq %rbx
+ pushq %rcx
+ pushq %rdx
+ pushq %rax
cld
+ movq %cr2,%rsi
leaq int_msg(%rip),%rdi
xorl %eax,%eax
call printk
+ movq %rsp,%rbp
+0:
+ movq (%rbp),%rsi
+ addq $8,%rbp
+ leaq hex_msg(%rip),%rdi
+ xorl %eax,%eax
+ call printk
+ testq $0xff8,%rbp
+ jnz 0b
1: jmp 1b
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|