[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [LINUX][ Fix x86/64 entry.S to use paravirtualized sti/cli properly.



# 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.