login
Header Space

 
 

[PATCH 31 of 31] xen: jump to iret fixup

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Ingo Molnar <mingo@...>
Cc: LKML <linux-kernel@...>, Ian Campbell <ijc@...>
Date: Monday, March 17, 2008 - 7:37 pm

Use jmp rather than call for the iret fixup, so its consistent with
the sysexit fixup, and it simplifies the stack (which is already
complex).

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

---
 arch/x86/kernel/entry_32.S |    3 +--
 arch/x86/xen/xen-asm.S     |   22 +++++++++-------------
 2 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -1049,8 +1049,7 @@
 	cmpl $xen_iret_end_crit,%eax
 	jae  1f
 
-	call xen_iret_crit_fixup
-	jmp  2f
+	jmp  xen_iret_crit_fixup
 
 1:	cmpl $xen_sysexit_start_crit,%eax
 	jb   2f
diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S
--- a/arch/x86/xen/xen-asm.S
+++ b/arch/x86/xen/xen-asm.S
@@ -223,9 +223,7 @@
 	 ds		}  SAVE_ALL state
 	 eax		}
 	  :		:
-	 ebx		}
-	----------------
-	 return addr	 <- esp
+	 ebx		}<- esp
 	----------------
 
    In order to deliver the nested exception properly, we need to shift
@@ -240,10 +238,8 @@
    it's usermode state which we eventually need to restore.
  */
 ENTRY(xen_iret_crit_fixup)
-	/* offsets +4 for return address */
-
 	/*
-	   Paranoia: Make sure we're really coming from userspace.
+	   Paranoia: Make sure we're really coming from kernel space.
 	   One could imagine a case where userspace jumps into the
 	   critical range address, but just before the CPU delivers a GP,
 	   it decides to deliver an interrupt instead.  Unlikely?
@@ -252,32 +248,32 @@
 	   jump instruction itself, not the destination, but some virtual
 	   environments get this wrong.
 	 */
-	movl PT_CS+4(%esp), %ecx
+	movl PT_CS(%esp), %ecx
 	andl $SEGMENT_RPL_MASK, %ecx
 	cmpl $USER_RPL, %ecx
 	je 2f
 
-	lea PT_ORIG_EAX+4(%esp), %esi
-	lea PT_EFLAGS+4(%esp), %edi
+	lea PT_ORIG_EAX(%esp), %esi
+	lea PT_EFLAGS(%esp), %edi
 
 	/* If eip is before iret_restore_end then stack
 	   hasn't been restored yet. */
 	cmp $iret_restore_end, %eax
 	jae 1f
 
-	movl 0+4(%edi),%eax		/* copy EAX */
-	movl %eax, PT_EAX+4(%esp)
+	movl 0+4(%edi),%eax		/* copy EAX (just above top of frame) */
+	movl %eax, PT_EAX(%esp)
 
 	lea ESP_OFFSET(%edi),%edi	/* move dest up over saved regs */
 
 	/* set up the copy */
 1:	std
-	mov $(PT_EIP+4) / 4, %ecx	/* copy ret+saved regs up to orig_eax */
+	mov $PT_EIP / 4, %ecx		/* saved regs up to orig_eax */
 	rep movsl
 	cld
 
 	lea 4(%edi),%esp		/* point esp to new frame */
-2:	ret
+2:	jmp xen_do_upcall
 
 
 ENTRY(xen_sysexit)


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 13 of 31] x86/pgtable.h: demacro ptep_test_and_clear_..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 03 of 31] x86: convert pgalloc_64.h from macros to in..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 20 of 31] xen: unify pte operations on machine frames, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 01 of 31] xen: fix RMW when unmasking events, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 31 of 31] xen: jump to iret fixup, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 05 of 31] x86: put paravirt stubs into common asm/pga..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 24 of 31] xen: add support for callbackops hypercall, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 28 of 31] xen: make sure retriggered events are set p..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 18 of 31] xen: unify pte operations, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 25 of 31] x86: only enable interrupts when kernel sta..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 09 of 31] x86: move all the pgd_list handling to one ..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 29 of 31] xen: short-cut for recursive event handling, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 22 of 31] x86: unify KERNEL_PGD_PTRS, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 10 of 31] x86: rename paravirt_alloc_pt etc after the..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 19 of 31] xen: use phys_addr_t when referring to phys..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 02 of 31] xen: fix UP setup of shared_info, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 27 of 31] xen: implement a debug-interrupt handler, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 17 of 31] xen: make use of pte_t union, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 06 of 31] x86: move pte functions into common asm/pga..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 23 of 31] x86: unify pgd ctor/dtor, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 12 of 31] x86/pgtable.h: demacro ptep_set_access_flags, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 21 of 31] xen: make sure iret faults are trapped, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 14 of 31] x86/pgtable.h: demacro ptep_clear_flush_young, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 15 of 31] x86: demacro pgalloc paravirt stubs, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 04 of 31] x86: add common mm/pgtable.c, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 08 of 31] x86: move pgalloc pud and pgd operations in..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 3:05 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 3:46 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 4:02 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 4:09 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 5:12 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 5:33 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 5:54 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 6:00 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 5:58 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 6:04 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 6:15 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 7:52 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Thu Mar 20, 4:24 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Fri Mar 21, 9:17 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Fri Mar 21, 10:35 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Fri Mar 21, 11:15 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Fri Mar 21, 11:25 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Fri Mar 21, 10:34 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ian Campbell, (Wed Mar 19, 5:22 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 11:11 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 3:07 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 3:19 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ian Campbell, (Wed Mar 19, 12:50 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 2:45 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Zachary Amsden, (Tue Mar 18, 5:33 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Tue Mar 18, 5:37 pm)
[PATCH 30 of 31] xen: no need for domU to worry about MCE/MCA, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 26 of 31] xen: support sysenter/sysexit if hypervisor..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 11 of 31] x86: add pud_alloc for 4-level pagetables, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 16 of 31] xen: use appropriate pte types, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 07 of 31] x86: move pmd functions into common asm/pga..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
speck-geostationary