xen/x86-extra-trap-info.patch

90 lines
4.3 KiB
Diff

Index: xen-3.4.1-testing/xen/arch/x86/x86_32/entry.S
===================================================================
--- xen-3.4.1-testing.orig/xen/arch/x86/x86_32/entry.S
+++ xen-3.4.1-testing/xen/arch/x86/x86_32/entry.S
@@ -401,21 +401,33 @@ ring1: /* obtain ss/esp from oldss/olde
movl %eax,UREGS_eip+4(%esp)
ret
.section __ex_table,"a"
- .long .Lft6,domain_crash_synchronous , .Lft7,domain_crash_synchronous
- .long .Lft8,domain_crash_synchronous , .Lft9,domain_crash_synchronous
- .long .Lft10,domain_crash_synchronous , .Lft11,domain_crash_synchronous
- .long .Lft12,domain_crash_synchronous , .Lft13,domain_crash_synchronous
- .long .Lft14,domain_crash_synchronous , .Lft15,domain_crash_synchronous
- .long .Lft16,domain_crash_synchronous , .Lft17,domain_crash_synchronous
- .long .Lft18,domain_crash_synchronous , .Lft19,domain_crash_synchronous
- .long .Lft20,domain_crash_synchronous , .Lft21,domain_crash_synchronous
- .long .Lft22,domain_crash_synchronous , .Lft23,domain_crash_synchronous
- .long .Lft24,domain_crash_synchronous , .Lft25,domain_crash_synchronous
+ .long .Lft6,domain_crash_synchronous , .Lft7,domain_crash_page_fault
+ .long .Lft8,domain_crash_page_fault_4 , .Lft9,domain_crash_page_fault_8
+ .long .Lft10,domain_crash_page_fault_12, .Lft11,domain_crash_page_fault
+ .long .Lft12,domain_crash_page_fault_4 , .Lft13,domain_crash_synchronous
+ .long .Lft14,domain_crash_page_fault , .Lft15,domain_crash_page_fault_4
+ .long .Lft16,domain_crash_page_fault_8 , .Lft17,domain_crash_page_fault
+ .long .Lft18,domain_crash_page_fault , .Lft19,domain_crash_page_fault_4
+ .long .Lft20,domain_crash_page_fault_8 , .Lft21,domain_crash_page_fault_12
+ .long .Lft22,domain_crash_page_fault , .Lft23,domain_crash_page_fault_4
+ .long .Lft24,domain_crash_page_fault_8 , .Lft25,domain_crash_page_fault_12
.previous
+.section .rodata,"a"
domain_crash_synchronous_string:
.asciz "domain_crash_sync called from entry.S (%lx)\n"
+.previous
+domain_crash_page_fault_12:
+ addl $4,%esi
+domain_crash_page_fault_8:
+ addl $4,%esi
+domain_crash_page_fault_4:
+ addl $4,%esi
+domain_crash_page_fault:
+ pushl %esi
+ call show_page_walk
+ addl $4,%esp
domain_crash_synchronous:
pushl $domain_crash_synchronous_string
call printk
Index: xen-3.4.1-testing/xen/arch/x86/x86_64/entry.S
===================================================================
--- xen-3.4.1-testing.orig/xen/arch/x86/x86_64/entry.S
+++ xen-3.4.1-testing/xen/arch/x86/x86_64/entry.S
@@ -419,17 +419,30 @@ create_bounce_frame:
movq %rax,UREGS_rip+8(%rsp)
ret
.section __ex_table,"a"
- .quad .Lft2,domain_crash_synchronous , .Lft3,domain_crash_synchronous
- .quad .Lft4,domain_crash_synchronous , .Lft5,domain_crash_synchronous
- .quad .Lft6,domain_crash_synchronous , .Lft7,domain_crash_synchronous
- .quad .Lft8,domain_crash_synchronous , .Lft9,domain_crash_synchronous
- .quad .Lft10,domain_crash_synchronous , .Lft11,domain_crash_synchronous
- .quad .Lft12,domain_crash_synchronous , .Lft13,domain_crash_synchronous
+ .quad .Lft2,domain_crash_page_fault_32, .Lft3,domain_crash_page_fault_24
+ .quad .Lft4,domain_crash_page_fault_8 , .Lft5,domain_crash_page_fault_16
+ .quad .Lft6,domain_crash_page_fault , .Lft7,domain_crash_page_fault
+ .quad .Lft8,domain_crash_page_fault_24, .Lft9,domain_crash_page_fault_16
+ .quad .Lft10,domain_crash_page_fault_8 , .Lft11,domain_crash_page_fault
+ .quad .Lft12,domain_crash_page_fault_8 , .Lft13,domain_crash_page_fault
.previous
+.section .rodata,"a"
domain_crash_synchronous_string:
.asciz "domain_crash_sync called from entry.S\n"
+.previous
+domain_crash_page_fault_32:
+ addq $8,%rsi
+domain_crash_page_fault_24:
+ addq $8,%rsi
+domain_crash_page_fault_16:
+ addq $8,%rsi
+domain_crash_page_fault_8:
+ addq $8,%rsi
+domain_crash_page_fault:
+ movq %rsi,%rdi
+ call show_page_walk
ENTRY(domain_crash_synchronous)
# Get out of the guest-save area of the stack.
GET_GUEST_REGS(%rax)