direct-io.hg

changeset 10619:e97e31e26bd5

[IA64] ptc.g virtualization fix 2

When emulating ptc.ga, VMM needs to change pta temporarily,
which cause VHPT is not mapped by TR, then vhpt fault may
happen inside VMM, it is not correct.
This patch is to fix this issue.
When changing pta, VMM makes VHPT disabled temporarily.

Signed-off-by: Anthony Xu <anthony.xu@intel.com>
author awilliam@xenbuild.aw
date Tue Jun 27 16:35:59 2006 -0600 (2006-06-27)
parents 85958f34f183
children e4a75a3fd0e2
files xen/arch/ia64/vmx/vmmu.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmmu.c	Mon Jun 26 14:41:54 2006 -0600
     1.2 +++ b/xen/arch/ia64/vmx/vmmu.c	Tue Jun 27 16:35:59 2006 -0600
     1.3 @@ -526,7 +526,7 @@ static void ptc_ga_remote_func (void *va
     1.4      moldrid = ia64_get_rr(0x0);
     1.5      ia64_set_rr(0x0,vrrtomrr(v,args->rid));
     1.6      mpta = ia64_get_pta();
     1.7 -    ia64_set_pta(v->arch.arch_vmx.mpta);
     1.8 +    ia64_set_pta(v->arch.arch_vmx.mpta&(~1));
     1.9      ia64_srlz_d();
    1.10      vmx_vcpu_ptc_l(v, args->vadr, args->ps);
    1.11      VMX(v, vrr[0]) = oldrid; 
    1.12 @@ -561,6 +561,8 @@ IA64FAULT vmx_vcpu_ptc_ga(VCPU *vcpu,UIN
    1.13                  /* Try again if VCPU has migrated.  */
    1.14              } while (proc != v->processor);
    1.15          }
    1.16 +        else if(v == vcpu)
    1.17 +            vmx_vcpu_ptc_l(v, va, ps);
    1.18          else
    1.19              ptc_ga_remote_func(&args);
    1.20      }