ia64/xen-unstable

changeset 9480:a40e66748ee9

[IA64] Fix domainU boot when VTi domainexists

This patch intends to fix domainU boot after VTi domain booted up.
Currently domainU can't boot after domain VTi booted up.The root
cause is when VTi domain exists, iva register points to ivt which
belongs to VTi domain but different to domU. After DomU createing
and being scheduled for fist time, context_switch won't be executed
completely but through another execution path to leave kernel.
This will lead to LP's(run domU) iva and pta point to VTi domain's
ivt and pta. So when DomainU boots, domain VTi and domainU will hang.

Singed-off-by: Zhang xiantao <xiantao.zhang@intel.com>
Singed-off-by: Kevin Tian <kevin.tian@intel.com>
author awilliam@xenbuild.aw
date Thu Mar 30 12:40:24 2006 -0700 (2006-03-30)
parents 2b6e531dab38
children 6796157b5f8a
files xen/arch/ia64/xen/process.c
line diff
     1.1 --- a/xen/arch/ia64/xen/process.c	Thu Mar 30 09:55:26 2006 -0700
     1.2 +++ b/xen/arch/ia64/xen/process.c	Thu Mar 30 12:40:24 2006 -0700
     1.3 @@ -30,6 +30,7 @@
     1.4  #include <asm/vcpu.h>
     1.5  #include <asm/ia64_int.h>
     1.6  #include <asm/dom_fw.h>
     1.7 +#include <asm/vhpt.h>
     1.8  #include "hpsim_ssc.h"
     1.9  #include <xen/multicall.h>
    1.10  #include <asm/debugger.h>
    1.11 @@ -63,11 +64,15 @@ extern unsigned long dom0_start, dom0_si
    1.12  
    1.13  void schedule_tail(struct vcpu *prev)
    1.14  {
    1.15 +	extern char ia64_ivt;
    1.16  	context_saved(prev);
    1.17  
    1.18  	if (VMX_DOMAIN(current)) {
    1.19  		vmx_do_launch(current);
    1.20  	} else {
    1.21 +		ia64_set_iva(&ia64_ivt);
    1.22 +        	ia64_set_pta(VHPT_ADDR | (1 << 8) | (VHPT_SIZE_LOG2 << 2) |
    1.23 +		        VHPT_ENABLED);
    1.24  		load_region_regs(current);
    1.25  		vcpu_load_kernel_regs(current);
    1.26  	}