[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-ia64-devel] [PATCH] fix restoring HVM domain with PV driver



Applied.

thanks,

On Fri, May 09, 2008 at 05:10:14PM +0900, Kouya Shimura wrote:
Content-Description: message body text
> The HVM domain with PV driver always panics after save/restore or
> migration. This patch fixes it.
> 
> Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
> 

> diff -r f2457c7aff8d xen/arch/ia64/linux-xen/entry.S
> --- a/xen/arch/ia64/linux-xen/entry.S Fri Apr 25 20:13:52 2008 +0900
> +++ b/xen/arch/ia64/linux-xen/entry.S Thu May 08 19:25:17 2008 +0900
> @@ -651,13 +651,37 @@ GLOBAL_ENTRY(ia64_ret_from_clone)
>  #ifdef XEN
>       // new domains are cloned but not exec'ed so switch to user mode here
>       cmp.ne pKStk,pUStk=r0,r0
> -    adds r16 = IA64_VCPU_FLAGS_OFFSET, r13
> -    ;;
> -    ld8 r16 = [r16]
> -    ;;
> -    cmp.ne p6,p7 = r16, r0
> - (p6) br.cond.spnt ia64_leave_hypervisor     /* VTi */
> - (p7) br.cond.spnt ia64_leave_kernel         /* !VTi */
> +     adds r16 = IA64_VCPU_FLAGS_OFFSET, r13
> +     ;;
> +     ld8 r16 = [r16]                         // arch.arch_vmx.flags
> +     ;;
> +     cmp.eq p6,p0 = r16, r0
> +(p6) br.cond.spnt ia64_leave_kernel          // !VMX_DOMAIN
> +     ;;
> +     adds r16 = PT(CR_IFS)+16, r12
> +     ;;
> +     ld8 r16 = [r16]
> +     cmp.eq pNonSys,pSys=r0,r0               // pSys=0,pNonSys=1
> +     ;;
> +     cmp.eq p6,p7 = 0x6, r16
> +(p7) br.cond.sptk ia64_leave_hypervisor      // VMX_DOMAIN
> +     ;;
> +     /*
> +      * cr.ifs.v==0 && cr.ifm(ar.pfm)==6 means that HYPERVISOR_suspend
> +      * has been called. (i.e. HVM with PV driver is restored here)
> +      * We need to allocate a dummy RSE stack frame to resume.
> +      */
> +     alloc r32=ar.pfs, 0, 0, 6, 0
> +     cmp.eq pSys,pNonSys=r0,r0               // pSys=1,pNonSys=0
> +     ;;
> +     bsw.0
> +     ;;
> +     mov r21=r13                             // set current
> +     ;;
> +     bsw.1
> +     ;;
> +     mov r8=r0
> +     br.cond.sptk.many ia64_leave_hypercall
>  #else
>  .ret8:
>       adds r2=TI_FLAGS+IA64_TASK_SIZE,r13
> diff -r f2457c7aff8d xen/arch/ia64/vmx/vmx_init.c
> --- a/xen/arch/ia64/vmx/vmx_init.c    Fri Apr 25 20:13:52 2008 +0900
> +++ b/xen/arch/ia64/vmx/vmx_init.c    Fri May 09 17:05:13 2008 +0900
> @@ -55,7 +55,6 @@
>  #include <asm/vhpt.h>
>  #include <asm/vmx_pal_vsa.h>
>  #include <asm/patch.h>
> -#include "entry.h"
>  
>  /* Global flag to identify whether Intel vmx feature is on */
>  u32 vmx_enabled = 0;
> @@ -532,10 +531,6 @@ vmx_final_setup_guest(struct vcpu *v)
>       /* Set up guest 's indicator for VTi domain*/
>       set_bit(ARCH_VMX_DOMAIN, &v->arch.arch_vmx.flags);
>  
> -     /* Initialize pNonSys=1 for the first context switching */
> -     sw = (struct switch_stack *)vcpu_regs(v) - 1;
> -     sw->pr = (1UL << PRED_NON_SYSCALL);
> -
>       return 0;
>  }
>  

> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-ia64-devel

-- 
yamahata

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.