[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.