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