From: kfraser@localhost.localdomain Date: Mon, 14 Aug 2006 14:24:59 +0000 (+0100) Subject: [LINUX][ Fix x86/64 entry.S to use paravirtualized sti/cli properly. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15710^2~122 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3ef9a82056e892b3e2bf49f34a15816cef079d5c;p=xen.git [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 --- diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S index 05e7ce0b7e..7edd8d5cb6 100644 --- a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S @@ -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 @@ sysret_signal: 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 @@ int_signal: 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 - XEN_BLOCK_EVENTS(%rsi) GET_THREAD_INFO(%rcx) + XEN_BLOCK_EVENTS(%rsi) /* cli */ jmp retint_check