Commit 4a5c3e77 authored by Jeremy Fitzhardinge's avatar Jeremy Fitzhardinge Committed by Ingo Molnar

xen64: implement failsafe callback

Implement the failsafe callback, so that iret and segment register
load exceptions are reported to the kernel.
Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stephen Tweedie <sct@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 0775b3db
...@@ -1365,10 +1365,8 @@ END(do_hypervisor_callback) ...@@ -1365,10 +1365,8 @@ END(do_hypervisor_callback)
# with its current contents: any discrepancy means we in category 1. # with its current contents: any discrepancy means we in category 1.
*/ */
ENTRY(xen_failsafe_callback) ENTRY(xen_failsafe_callback)
#if 1 framesz = (RIP-0x30) /* workaround buggy gas */
ud2a _frame framesz
#else
_frame (RIP-0x30)
CFI_REL_OFFSET rcx, 0 CFI_REL_OFFSET rcx, 0
CFI_REL_OFFSET r11, 8 CFI_REL_OFFSET r11, 8
movw %ds,%cx movw %ds,%cx
...@@ -1391,8 +1389,13 @@ ENTRY(xen_failsafe_callback) ...@@ -1391,8 +1389,13 @@ ENTRY(xen_failsafe_callback)
CFI_RESTORE r11 CFI_RESTORE r11
addq $0x30,%rsp addq $0x30,%rsp
CFI_ADJUST_CFA_OFFSET -0x30 CFI_ADJUST_CFA_OFFSET -0x30
movq $11,%rdi /* SIGSEGV */ pushq $0
jmp do_exit CFI_ADJUST_CFA_OFFSET 8
pushq %r11
CFI_ADJUST_CFA_OFFSET 8
pushq %rcx
CFI_ADJUST_CFA_OFFSET 8
jmp general_protection
CFI_RESTORE_STATE CFI_RESTORE_STATE
1: /* Segment mismatch => Category 1 (Bad segment). Retry the IRET. */ 1: /* Segment mismatch => Category 1 (Bad segment). Retry the IRET. */
movq (%rsp),%rcx movq (%rsp),%rcx
...@@ -1406,7 +1409,6 @@ ENTRY(xen_failsafe_callback) ...@@ -1406,7 +1409,6 @@ ENTRY(xen_failsafe_callback)
SAVE_ALL SAVE_ALL
jmp error_exit jmp error_exit
CFI_ENDPROC CFI_ENDPROC
#endif
END(xen_failsafe_callback) END(xen_failsafe_callback)
#endif /* CONFIG_XEN */ #endif /* CONFIG_XEN */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment