ia64/xen-unstable

changeset 11107:6b6bfa60707e

[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@novell.com>
author kfraser@localhost.localdomain
date Mon Aug 14 15:24:59 2006 +0100 (2006-08-14)
parents 1b85fbc8c013
children f8c53e937b30
files linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S
line diff
     1.1 --- a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S	Mon Aug 14 15:17:42 2006 +0100
     1.2 +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S	Mon Aug 14 15:24:59 2006 +0100
     1.3 @@ -271,7 +271,7 @@ sysret_careful:
     1.4  	CFI_RESTORE_STATE
     1.5  	bt $TIF_NEED_RESCHED,%edx
     1.6  	jnc sysret_signal
     1.7 -        XEN_BLOCK_EVENTS(%rsi)        
     1.8 +	XEN_UNBLOCK_EVENTS(%rsi)
     1.9  	pushq %rdi
    1.10  	CFI_ADJUST_CFA_OFFSET 8
    1.11  	call schedule
    1.12 @@ -295,7 +295,7 @@ sysret_signal:
    1.13  1:	movl $_TIF_NEED_RESCHED,%edi
    1.14  	/* Use IRET because user could have changed frame. This
    1.15  	   works because ptregscall_common has called FIXUP_TOP_OF_STACK. */
    1.16 -	cli
    1.17 +	XEN_BLOCK_EVENTS(%rsi)
    1.18  	jmp int_with_check
    1.19  	
    1.20  badsys:
    1.21 @@ -377,7 +377,7 @@ int_careful:
    1.22  	call schedule
    1.23  	popq %rdi
    1.24  	CFI_ADJUST_CFA_OFFSET -8
    1.25 -	cli
    1.26 +	XEN_BLOCK_EVENTS(%rsi)
    1.27  	jmp int_with_check
    1.28  
    1.29  	/* handle signals and tracing -- both require a full stack frame */
    1.30 @@ -395,7 +395,7 @@ int_very_careful:
    1.31  	popq %rdi
    1.32  	CFI_ADJUST_CFA_OFFSET -8
    1.33  	andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi
    1.34 -	cli
    1.35 +	XEN_BLOCK_EVENTS(%rsi)
    1.36  	jmp int_restore_rest
    1.37  	
    1.38  int_signal:
    1.39 @@ -407,7 +407,7 @@ int_signal:
    1.40  1:	movl $_TIF_NEED_RESCHED,%edi	
    1.41  int_restore_rest:
    1.42  	RESTORE_REST
    1.43 -	cli
    1.44 +	XEN_BLOCK_EVENTS(%rsi)
    1.45  	jmp int_with_check
    1.46  	CFI_ENDPROC
    1.47  		
    1.48 @@ -535,8 +535,8 @@ retint_careful:
    1.49  	call  schedule
    1.50  	popq %rdi		
    1.51  	CFI_ADJUST_CFA_OFFSET	-8
    1.52 +	GET_THREAD_INFO(%rcx)
    1.53  	XEN_BLOCK_EVENTS(%rsi)		
    1.54 -	GET_THREAD_INFO(%rcx)
    1.55  /*	cli */
    1.56  	jmp retint_check
    1.57