direct-io.hg
changeset 15341: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>
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