[Xen-changelog] [xen-unstable] [IA64] Avoid recursively walking guest short VHPT

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Xen-changelog] [xen-unstable] [IA64] Avoid recursively walking guest short VHPT

Xen patchbot-unstable
# HG changeset patch
# User [hidden email]
# Date 1171299260 25200
# Node ID dea561992abe678932e2f5dde9346241bf9bc399
# Parent  81c4f90695a8838967f72c28f9515d64a67370fd
[IA64] Avoid recursively walking guest short VHPT

Signed-off-by: Anthony Xu <[hidden email]>
---
 xen/arch/ia64/vmx/vmx_process.c |   12 ++++++++++++
 1 files changed, 12 insertions(+)

diff -r 81c4f90695a8 -r dea561992abe xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c Mon Feb 12 09:48:56 2007 -0700
+++ b/xen/arch/ia64/vmx/vmx_process.c Mon Feb 12 09:54:20 2007 -0700
@@ -353,6 +353,18 @@ vmx_hpw_miss(u64 vadr , u64 vec, REGS* r
             }
         }
 
+        /* avoid recursively walking (short format) VHPT */
+        if ((((vadr ^ vpta.val) << 3) >> (vpta.size + 3)) == 0) {
+            if (vpsr.ic) {
+                vcpu_set_isr(v, misr.val);
+                dtlb_fault(v, vadr);
+                return IA64_FAULT;
+            } else {
+                nested_dtlb(v);
+                return IA64_FAULT;
+            }
+        }
+            
         vmx_vcpu_thash(v, vadr, &vhpt_adr);
         if (!guest_vhpt_lookup(vhpt_adr, &pteval)) {
             /* VHPT successfully read.  */

_______________________________________________
Xen-changelog mailing list
[hidden email]
http://lists.xensource.com/xen-changelog