# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 6b6bfa60707e3411cfdf0c78675ecbd9f2f01a3c
# Parent 1b85fbc8c013c76a5f66d2dcb95f0a02fed202be
[LINUX][ Fix x86/64 entry.S to use paravirtualized sti/cli properly.
This fixes
- one instance of using XEN_BLOCK_EVENTS where XEN_UNBLOCK_EVENTS was
meant
- four instances of left-over cli-s that should have been replaced
with XEN_BLOCK_EVENTS
- one instance of slightly wrong placement (without resulting in ill
behavior, but needlessly making the diff to native more complex)
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff -r 1b85fbc8c013 -r 6b6bfa60707e
linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S Mon Aug 14
15:17:42 2006 +0100
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S Mon Aug 14
15:24:59 2006 +0100
@@ -271,7 +271,7 @@ sysret_careful:
CFI_RESTORE_STATE
bt $TIF_NEED_RESCHED,%edx
jnc sysret_signal
- XEN_BLOCK_EVENTS(%rsi)
+ XEN_UNBLOCK_EVENTS(%rsi)
pushq %rdi
CFI_ADJUST_CFA_OFFSET 8
call schedule
@@ -295,7 +295,7 @@ 1: movl $_TIF_NEED_RESCHED,%edi
1: movl $_TIF_NEED_RESCHED,%edi
/* Use IRET because user could have changed frame. This
works because ptregscall_common has called FIXUP_TOP_OF_STACK. */
- cli
+ XEN_BLOCK_EVENTS(%rsi)
jmp int_with_check
badsys:
@@ -377,7 +377,7 @@ int_careful:
call schedule
popq %rdi
CFI_ADJUST_CFA_OFFSET -8
- cli
+ XEN_BLOCK_EVENTS(%rsi)
jmp int_with_check
/* handle signals and tracing -- both require a full stack frame */
@@ -395,7 +395,7 @@ int_very_careful:
popq %rdi
CFI_ADJUST_CFA_OFFSET -8
andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi
- cli
+ XEN_BLOCK_EVENTS(%rsi)
jmp int_restore_rest
int_signal:
@@ -407,7 +407,7 @@ 1: movl $_TIF_NEED_RESCHED,%edi
1: movl $_TIF_NEED_RESCHED,%edi
int_restore_rest:
RESTORE_REST
- cli
+ XEN_BLOCK_EVENTS(%rsi)
jmp int_with_check
CFI_ENDPROC
@@ -535,8 +535,8 @@ retint_careful:
call schedule
popq %rdi
CFI_ADJUST_CFA_OFFSET -8
+ GET_THREAD_INFO(%rcx)
XEN_BLOCK_EVENTS(%rsi)
- GET_THREAD_INFO(%rcx)
/* cli */
jmp retint_check
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|