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