diff -r 16093532f384 xen/arch/x86/domain.c --- a/xen/arch/x86/domain.c Wed Nov 03 08:17:39 2010 +0000 +++ b/xen/arch/x86/domain.c Mon Nov 08 15:12:36 2010 -0500 @@ -395,7 +395,7 @@ int vcpu_initialise(struct vcpu *v) rc = 0; if ( is_pv_32on64_vcpu(v) ) rc = setup_compat_l4(v); - if ( !rc ) + if ( rc ) xfree(v->arch.xsave_area); return rc; diff -r 16093532f384 xen/arch/x86/i387.c --- a/xen/arch/x86/i387.c Wed Nov 03 08:17:39 2010 +0000 +++ b/xen/arch/x86/i387.c Mon Nov 08 15:13:53 2010 -0500 @@ -209,6 +209,7 @@ void xsave_init_save_area(void *save_are memset(save_area, 0, xsave_cntxt_size); ((u32 *)save_area)[6] = 0x1f80; /* MXCSR */ + *(uint64_t *)(save_area + 512) = XSTATE_FP_SSE; /* XSETBV */ } /*