Hi,

previously VTi and PV didn't save kr into the same place.  This wasted
a little bit of memory.
VTi now saves kr in privregs.

Tristan.
# HG changeset patch
# User Tristan Gingold <[EMAIL PROTECTED]>
# Date 1193187544 -7200
# Node ID 396f89316b8bc74aee932790e19f1c5885da117c
# Parent  91705524ac96026d374b866cf297d7e1fb4d46c8
Merge PV and VTi kr registers.

Signed-off-by: Tristan Gingold <[EMAIL PROTECTED]>

diff -r 91705524ac96 -r 396f89316b8b xen/arch/ia64/vmx/vmx_init.c
--- a/xen/arch/ia64/vmx/vmx_init.c      Wed Oct 24 02:52:49 2007 +0200
+++ b/xen/arch/ia64/vmx/vmx_init.c      Wed Oct 24 02:59:04 2007 +0200
@@ -232,14 +232,14 @@ vmx_save_state(struct vcpu *v)
        /* Need to save KR when domain switch, though HV itself doesn;t
         * use them.
         */
-       v->arch.arch_vmx.vkr[0] = ia64_get_kr(0);
-       v->arch.arch_vmx.vkr[1] = ia64_get_kr(1);
-       v->arch.arch_vmx.vkr[2] = ia64_get_kr(2);
-       v->arch.arch_vmx.vkr[3] = ia64_get_kr(3);
-       v->arch.arch_vmx.vkr[4] = ia64_get_kr(4);
-       v->arch.arch_vmx.vkr[5] = ia64_get_kr(5);
-       v->arch.arch_vmx.vkr[6] = ia64_get_kr(6);
-       v->arch.arch_vmx.vkr[7] = ia64_get_kr(7);
+       v->arch.privregs->krs[0] = ia64_get_kr(0);
+       v->arch.privregs->krs[1] = ia64_get_kr(1);
+       v->arch.privregs->krs[2] = ia64_get_kr(2);
+       v->arch.privregs->krs[3] = ia64_get_kr(3);
+       v->arch.privregs->krs[4] = ia64_get_kr(4);
+       v->arch.privregs->krs[5] = ia64_get_kr(5);
+       v->arch.privregs->krs[6] = ia64_get_kr(6);
+       v->arch.privregs->krs[7] = ia64_get_kr(7);
 }
 
 /* Even guest is in physical mode, we still need such double mapping */
@@ -253,14 +253,14 @@ vmx_load_state(struct vcpu *v)
                panic_domain(vcpu_regs(v),"Restore vp status failed\n");
        }
 
-       ia64_set_kr(0, v->arch.arch_vmx.vkr[0]);
-       ia64_set_kr(1, v->arch.arch_vmx.vkr[1]);
-       ia64_set_kr(2, v->arch.arch_vmx.vkr[2]);
-       ia64_set_kr(3, v->arch.arch_vmx.vkr[3]);
-       ia64_set_kr(4, v->arch.arch_vmx.vkr[4]);
-       ia64_set_kr(5, v->arch.arch_vmx.vkr[5]);
-       ia64_set_kr(6, v->arch.arch_vmx.vkr[6]);
-       ia64_set_kr(7, v->arch.arch_vmx.vkr[7]);
+       ia64_set_kr(0, v->arch.privregs->krs[0]);
+       ia64_set_kr(1, v->arch.privregs->krs[1]);
+       ia64_set_kr(2, v->arch.privregs->krs[2]);
+       ia64_set_kr(3, v->arch.privregs->krs[3]);
+       ia64_set_kr(4, v->arch.privregs->krs[4]);
+       ia64_set_kr(5, v->arch.privregs->krs[5]);
+       ia64_set_kr(6, v->arch.privregs->krs[6]);
+       ia64_set_kr(7, v->arch.privregs->krs[7]);
        /* Guest vTLB is not required to be switched explicitly, since
         * anchored in vcpu */
 }
diff -r 91705524ac96 -r 396f89316b8b xen/include/asm-ia64/vmx_vpd.h
--- a/xen/include/asm-ia64/vmx_vpd.h    Wed Oct 24 02:52:49 2007 +0200
+++ b/xen/include/asm-ia64/vmx_vpd.h    Wed Oct 24 02:59:04 2007 +0200
@@ -49,7 +49,6 @@ struct arch_vmx_struct {
     /* if the corresponding bit is 1, then this page size is
        used in this region */
     unsigned long   psbits[8];
-    unsigned long   vkr[8];
     unsigned long   cr_iipa;   /* for emulation */
     unsigned long   cr_isr;    /* for emulation */
     unsigned long   cause;
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to