ia64/xen-unstable

changeset 3182:51574b413767

bitkeeper revision 1.1159.1.468 (41a9b9fdocbFzAlI5oA7FnZaCSeEuQ)

Merge arcadians.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-unstable.bk
into arcadians.cl.cam.ac.uk:/auto/groups/xeno/users/cl349/BK/xen.bk-smp
author cl349@arcadians.cl.cam.ac.uk
date Sun Nov 28 11:43:57 2004 +0000 (2004-11-28)
parents 91d462a4e723 ee14738f68ba
children 2c2d547ca702
files linux-2.4.28-xen-sparse/arch/xen/kernel/process.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c xen/arch/x86/x86_32/entry.S
line diff
     1.1 --- a/linux-2.4.28-xen-sparse/arch/xen/kernel/process.c	Sat Nov 27 16:19:59 2004 +0000
     1.2 +++ b/linux-2.4.28-xen-sparse/arch/xen/kernel/process.c	Sun Nov 28 11:43:57 2004 +0000
     1.3 @@ -344,6 +344,7 @@ void fastcall __switch_to(struct task_st
     1.4          op.cmd           = DOM0_IOPL;
     1.5          op.u.iopl.domain = DOMID_SELF;
     1.6          op.u.iopl.iopl   = next->io_pl;
     1.7 +        op.interface_version = DOM0_INTERFACE_VERSION;
     1.8          queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op);
     1.9      }
    1.10  
     2.1 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S	Sat Nov 27 16:19:59 2004 +0000
     2.2 +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S	Sun Nov 28 11:43:57 2004 +0000
     2.3 @@ -207,6 +207,7 @@ ENTRY(ret_from_fork)
     2.4  	call schedule_tail
     2.5  	GET_THREAD_INFO(%ebp)
     2.6  	popl %eax
     2.7 +	movl HYPERVISOR_shared_info, %esi
     2.8  	jmp syscall_exit
     2.9  
    2.10  /*
    2.11 @@ -227,6 +228,7 @@ ret_from_intr:
    2.12  	testl $(VM_MASK | 2), %eax
    2.13  	jz resume_kernel		# returning to kernel or vm86-space
    2.14  ENTRY(resume_userspace)
    2.15 +	movl HYPERVISOR_shared_info, %esi
    2.16  	XEN_BLOCK_EVENTS(%esi)		# make sure we don't miss an interrupt
    2.17  					# setting need_resched or sigpending
    2.18  					# between sampling and the iret
    2.19 @@ -238,14 +240,15 @@ ENTRY(resume_userspace)
    2.20  
    2.21  #ifdef CONFIG_PREEMPT
    2.22  ENTRY(resume_kernel)
    2.23 +	movl HYPERVISOR_shared_info, %esi
    2.24  	cmpl $0,TI_preempt_count(%ebp)	# non-zero preempt_count ?
    2.25  	jnz restore_all
    2.26  need_resched:
    2.27  	movl TI_flags(%ebp), %ecx	# need_resched set ?
    2.28  	testb $_TIF_NEED_RESCHED, %cl
    2.29  	jz restore_all
    2.30 -	testl $IF_MASK,EFLAGS(%esp)     # interrupts off (exception path) ?
    2.31 -	jz restore_all
    2.32 +	testb $0xFF,EVENT_MASK(%esp)	# interrupts off (exception path) ?
    2.33 +	jnz restore_all
    2.34  	movl $PREEMPT_ACTIVE,TI_preempt_count(%ebp)
    2.35  	XEN_UNBLOCK_EVENTS(%esi)
    2.36  	call schedule
    2.37 @@ -566,13 +569,13 @@ critical_fixup_table:
    2.38  
    2.39  # Hypervisor uses this for application faults while it executes.
    2.40  ENTRY(failsafe_callback)
    2.41 -1:      popl %ds
    2.42 -2:      popl %es
    2.43 -3:      popl %fs
    2.44 -4:      pop  %gs
    2.45 -        subl $4,%esp
    2.46 -        SAVE_ALL
    2.47 -        jmp  ret_from_exception
    2.48 +1:	popl %ds
    2.49 +2:	popl %es
    2.50 +3:	popl %fs
    2.51 +4:	popl %gs
    2.52 +	subl $4,%esp
    2.53 +	SAVE_ALL
    2.54 +	jmp  ret_from_exception
    2.55  .section .fixup,"ax";	\
    2.56  6:	movl $0,(%esp);	\
    2.57  	jmp 1b;		\
     3.1 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c	Sat Nov 27 16:19:59 2004 +0000
     3.2 +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c	Sun Nov 28 11:43:57 2004 +0000
     3.3 @@ -534,6 +534,7 @@ struct task_struct fastcall * __switch_t
     3.4  		op.cmd           = DOM0_IOPL;
     3.5  		op.u.iopl.domain = DOMID_SELF;
     3.6  		op.u.iopl.iopl   = next->io_pl;
     3.7 +		op.interface_version = DOM0_INTERFACE_VERSION;
     3.8  		queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op);
     3.9  	}
    3.10  
     4.1 --- a/xen/arch/x86/x86_32/entry.S	Sat Nov 27 16:19:59 2004 +0000
     4.2 +++ b/xen/arch/x86/x86_32/entry.S	Sun Nov 28 11:43:57 2004 +0000
     4.3 @@ -585,8 +585,8 @@ do_switch_vm86:
     4.4          # Discard the return address
     4.5          addl $4,%esp
     4.6  
     4.7 -        movl XREGS_eflags(%esp),%ecx
     4.8 -                
     4.9 +        movl XREGS_eflags(%esp),%edx
    4.10 +
    4.11          # GS:ESI == Ring-1 stack activation
    4.12          movl XREGS_esp(%esp),%esi
    4.13  VFLT1:  movl XREGS_ss(%esp),%gs
    4.14 @@ -608,11 +608,11 @@ VFLT3:  movl %gs:(%esi),%eax
    4.15  
    4.16          # Fix up EFLAGS
    4.17          andl $~X86_EFLAGS_IOPL,XREGS_eflags(%esp)
    4.18 -        andl $X86_EFLAGS_IOPL,%ecx # Ignore attempts to change EFLAGS.IOPL
    4.19 +        andl $X86_EFLAGS_IOPL,%edx # Ignore attempts to change EFLAGS.IOPL
    4.20          jnz  1f
    4.21 -        orl  $X86_EFLAGS_IF,%ecx   # EFLAGS.IOPL=0 => no messing with EFLAGS.IF
    4.22 -1:      orl  $X86_EFLAGS_VM,%ecx   # Force EFLAGS.VM
    4.23 -        orl  %ecx,XREGS_eflags(%esp)
    4.24 +        orl  $X86_EFLAGS_IF,%edx   # EFLAGS.IOPL=0 => no messing with EFLAGS.IF
    4.25 +1:      orl  $X86_EFLAGS_VM,%edx   # Force EFLAGS.VM
    4.26 +        orl  %edx,XREGS_eflags(%esp)
    4.27          
    4.28          jmp test_all_events
    4.29