# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1190275283 -32400 # Node ID e3a2d16b969f5684e545d5cfcb390f56e3a2b851 # Parent 54e29e0600f6e3e6e8e51b1388abf82d55244792 avoid set cr.ivt when context switch if possible PATCHNAME: avoid_set_cr_ivt_when_context_switch Signed-off-by: Isaku Yamahata diff -r 54e29e0600f6 -r e3a2d16b969f xen/arch/ia64/xen/domain.c --- a/xen/arch/ia64/xen/domain.c Fri Sep 14 18:10:01 2007 +0900 +++ b/xen/arch/ia64/xen/domain.c Thu Sep 20 17:01:23 2007 +0900 @@ -206,7 +206,8 @@ void schedule_tail(struct vcpu *prev) migrate_timer(¤t->arch.arch_vmx.vtm.vtm_timer, current->processor); } else { - ia64_set_iva(&ia64_ivt); + if (VMX_DOMAIN(prev)) + ia64_set_iva(&ia64_ivt); load_region_regs(current); ia64_set_pta(vcpu_pta(current)); vcpu_load_kernel_regs(current); @@ -259,7 +260,8 @@ void context_switch(struct vcpu *prev, s struct domain *nd; extern char ia64_ivt; - ia64_set_iva(&ia64_ivt); + if (VMX_DOMAIN(prev)) + ia64_set_iva(&ia64_ivt); nd = current->domain; if (!is_idle_domain(nd)) { @@ -911,7 +913,7 @@ int arch_set_info_guest(struct vcpu *v, tr->dtrs[i].rid); } v->arch.event_callback_ip = c.nat->event_callback_ip; - v->arch.iva = c.nat->regs.cr.iva; + vcpu_set_iva(v, c.nat->regs.cr.iva); } return 0;