[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] SMP Windows is up on VTI domain
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID 679683333917c0dfd5d7a48388872186a006dbd8 # Parent 7cde0d938ef49e2829d48fe5031d07d1234e0068 [IA64] SMP Windows is up on VTI domain This patch makes SMP Windows boot, Rewrite global purge to support multiple page size. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> --- xen/arch/ia64/vmx/vmmu.c | 10 +++++++--- xen/arch/ia64/vmx/vmx_vcpu.c | 4 +--- 2 files changed, 8 insertions(+), 6 deletions(-) diff -r 7cde0d938ef4 -r 679683333917 xen/arch/ia64/vmx/vmmu.c --- a/xen/arch/ia64/vmx/vmmu.c Fri Aug 04 09:02:43 2006 -0600 +++ b/xen/arch/ia64/vmx/vmmu.c Fri Aug 04 09:15:51 2006 -0600 @@ -528,19 +528,23 @@ struct ptc_ga_args { static void ptc_ga_remote_func (void *varg) { - u64 oldrid, moldrid, mpta; + u64 oldrid, moldrid, mpta, oldpsbits, vadr; struct ptc_ga_args *args = (struct ptc_ga_args *)varg; VCPU *v = args->vcpu; + vadr = args->vadr; oldrid = VMX(v, vrr[0]); VMX(v, vrr[0]) = args->rid; + oldpsbits = VMX(v, psbits[0]); + VMX(v, psbits[0]) = VMX(v, psbits[REGION_NUMBER(vadr)]); moldrid = ia64_get_rr(0x0); ia64_set_rr(0x0,vrrtomrr(v,args->rid)); mpta = ia64_get_pta(); ia64_set_pta(v->arch.arch_vmx.mpta&(~1)); ia64_srlz_d(); - vmx_vcpu_ptc_l(v, args->vadr, args->ps); + vmx_vcpu_ptc_l(v, REGION_OFFSET(vadr), args->ps); VMX(v, vrr[0]) = oldrid; + VMX(v, psbits[0]) = oldpsbits; ia64_set_rr(0x0,moldrid); ia64_set_pta(mpta); ia64_dv_serialize_data(); @@ -554,7 +558,7 @@ IA64FAULT vmx_vcpu_ptc_ga(VCPU *vcpu,UIN struct vcpu *v; struct ptc_ga_args args; - args.vadr = va<<3>>3; + args.vadr = va; vcpu_get_rr(vcpu, va, &args.rid); args.ps = ps; for_each_vcpu (d, v) { diff -r 7cde0d938ef4 -r 679683333917 xen/arch/ia64/vmx/vmx_vcpu.c --- a/xen/arch/ia64/vmx/vmx_vcpu.c Fri Aug 04 09:02:43 2006 -0600 +++ b/xen/arch/ia64/vmx/vmx_vcpu.c Fri Aug 04 09:15:51 2006 -0600 @@ -202,9 +202,7 @@ IA64FAULT vmx_vcpu_set_rr(VCPU *vcpu, UI newrr.rrval=val; if (newrr.rid >= (1 << vcpu->domain->arch.rid_bits)) panic_domain (NULL, "use of invalid rid %x\n", newrr.rid); - if(oldrr.ps!=newrr.ps){ - thash_purge_all(vcpu); - } + VMX(vcpu,vrr[reg>>61]) = val; switch((u64)(reg>>61)) { case VRN7: _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |