ia64/xen-unstable

changeset 15164:2fd72ec88a9a

[IA64] Fix HVM boot failure

HVM sometimes fails to boot with the message
"Guest nested fault vector=0x5400!".

The cause of this issue is that cr.ifs never be initialized in very
first context switching. To optimize hypercall on HVM, cr.ifs is only
set with the predicate pNonSys(pr5)=1.

Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
author Alex Williamson <alex.williamson@hp.com>
date Wed Jun 06 09:13:50 2007 -0600 (2007-06-06)
parents 9daa40cae3d6
children 96331db61e47
files xen/arch/ia64/vmx/vmx_init.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmx_init.c	Wed Jun 06 09:10:52 2007 -0600
     1.2 +++ b/xen/arch/ia64/vmx/vmx_init.c	Wed Jun 06 09:13:50 2007 -0600
     1.3 @@ -51,6 +51,7 @@
     1.4  #include <asm/viosapic.h>
     1.5  #include <xen/event.h>
     1.6  #include <asm/vlsapic.h>
     1.7 +#include "entry.h"
     1.8  
     1.9  /* Global flag to identify whether Intel vmx feature is on */
    1.10  u32 vmx_enabled = 0;
    1.11 @@ -296,6 +297,7 @@ vmx_final_setup_guest(struct vcpu *v)
    1.12  {
    1.13  	vpd_t *vpd;
    1.14  	int rc;
    1.15 +	struct switch_stack *sw;
    1.16  
    1.17  	vpd = alloc_vpd();
    1.18  	ASSERT(vpd);
    1.19 @@ -331,6 +333,10 @@ vmx_final_setup_guest(struct vcpu *v)
    1.20  	/* Set up guest 's indicator for VTi domain*/
    1.21  	set_bit(ARCH_VMX_DOMAIN, &v->arch.arch_vmx.flags);
    1.22  
    1.23 +	/* Initialize pNonSys=1 for the first context switching */
    1.24 +	sw = (struct switch_stack *)vcpu_regs(v) - 1;
    1.25 +	sw->pr = (1UL << PRED_NON_SYSCALL);
    1.26 +
    1.27  	return 0;
    1.28  }
    1.29