[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |