# 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
|