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
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