ChangeSet 1.1715, 2005/06/10 10:34:30+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx
user -> kernel syscall path must enable interrupts after all, since
it calls create_bounce_frame which can potentially fault. Thus we must
also test_all_events.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
entry.S | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff -Nru a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
--- a/xen/arch/x86/x86_64/entry.S 2005-06-10 06:02:44 -04:00
+++ b/xen/arch/x86/x86_64/entry.S 2005-06-10 06:02:44 -04:00
@@ -19,15 +19,16 @@
movq (reg),reg;
ALIGN
-/* %rbx: struct vcpu, interrupts disabled */
+/* %rbx: struct vcpu */
switch_to_kernel:
leaq VCPU_trap_bounce(%rbx),%rdx
movq VCPU_syscall_addr(%rbx),%rax
movq %rax,TRAPBOUNCE_eip(%rdx)
movw $0,TRAPBOUNCE_flags(%rdx)
call create_bounce_frame
+ jmp test_all_events
-/* %rbx: struct vcpu */
+/* %rbx: struct vcpu, interrupts disabled */
restore_all_guest:
RESTORE_ALL
testw $TRAP_syscall,4(%rsp)
@@ -38,7 +39,6 @@
popq %r11 # CS
cmpw $__GUEST_CS32,%r11
popq %r11 # RFLAGS
- cli # No interrupts after stack switch
popq %rsp # RSP
je 1f
sysretq
@@ -107,6 +107,7 @@
*/
ALIGN
ENTRY(syscall_enter)
+ sti
movl $__GUEST_SS,24(%rsp)
pushq %rcx
pushq $0
@@ -117,7 +118,6 @@
jz switch_to_kernel
/*hypercall:*/
- sti
movq %r10,%rcx
andq $(NR_hypercalls-1),%rax
leaq hypercall_table(%rip),%r10
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|