[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] fix vmx_vcpu_ptr_i(), vmx_vcpu_ptr_d()



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 34455164dd33c48adb8af1b183db4a6ccabda765
# Parent  b27139d8c1e1f57d8184c6799c89fc481655312d
[IA64] fix vmx_vcpu_ptr_i(), vmx_vcpu_ptr_d()

They must purge all tr registers which overlap. not only one.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/arch/ia64/vmx/vmmu.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff -r b27139d8c1e1 -r 34455164dd33 xen/arch/ia64/vmx/vmmu.c
--- a/xen/arch/ia64/vmx/vmmu.c  Sat Jun 03 11:16:47 2006 -0600
+++ b/xen/arch/ia64/vmx/vmmu.c  Sat Jun 03 13:21:14 2006 -0600
@@ -456,8 +456,7 @@ IA64FAULT vmx_vcpu_ptr_d(VCPU *vcpu,UINT
     u64 va;
 
     va = PAGEALIGN(ifa, ps);
-    index = vtr_find_overlap(vcpu, va, ps, DSIDE_TLB);
-    if (index>=0) {
+    while ((index = vtr_find_overlap(vcpu, va, ps, DSIDE_TLB)) >= 0) {
         vcpu->arch.dtrs[index].pte.p=0;
     }
     thash_purge_entries(vcpu, va, ps);
@@ -470,8 +469,7 @@ IA64FAULT vmx_vcpu_ptr_i(VCPU *vcpu,UINT
     u64 va;
 
     va = PAGEALIGN(ifa, ps);
-    index = vtr_find_overlap(vcpu, va, ps, ISIDE_TLB);
-    if (index>=0) {
+    while ((index = vtr_find_overlap(vcpu, va, ps, ISIDE_TLB)) >= 0) {
         vcpu->arch.itrs[index].pte.p=0;
     }
     thash_purge_entries(vcpu, va, ps);

_______________________________________________
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®.