[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |