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

[Xen-devel] [PATCH] Fix OOS typecounting [was: Test report for Xen-3.3.0-rc4 (#18314)]



Hello,

Keir Fraser wrote:

We still need to decide whether to fix the second issue or disable OOS.

The attached patch should fix this issue. It was an all-my-fault breakage of set_l1e atomicity.

We're not decided on that just yet. If it reproed more reliably for us then
I'd be more optimistic about fixing it. Perhaps I will switch to 32pae as so
far I've been running 32e host.

A very easy way to reproduce this bug is to set SHADOW_OOS_FIXUPS to 1 in xen/include/asm-x86/mm.h. This will reproduce very quickly the typecount corruption.

Gianluca
diff -r d3947223dfae xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c    Thu Aug 14 13:46:48 2008 +0100
+++ b/xen/arch/x86/mm/shadow/multi.c    Thu Aug 14 10:31:12 2008 -0400
@@ -1415,6 +1415,15 @@ static int shadow_set_l1e(struct vcpu *v
     mfn_t new_gmfn = shadow_l1e_get_mfn(new_sl1e);
 #endif
     ASSERT(sl1e != NULL);
+
+#if SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC
+    if ( mfn_valid(new_gmfn) && mfn_oos_may_write(new_gmfn)
+         && ((shadow_l1e_get_flags(new_sl1e) & (_PAGE_RW|_PAGE_PRESENT))
+             == (_PAGE_RW|_PAGE_PRESENT)) )
+    {
+        oos_fixup_add(v, new_gmfn, sl1mfn, pgentry_ptr_to_slot(sl1e));
+    }
+#endif
     
     old_sl1e = *sl1e;
 
@@ -1434,14 +1443,6 @@ static int shadow_set_l1e(struct vcpu *v
             else
             {
                 shadow_vram_get_l1e(new_sl1e, sl1e, sl1mfn, d);
-#if SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC
-                if ( mfn_valid(new_gmfn) && mfn_oos_may_write(new_gmfn)
-                     && (shadow_l1e_get_flags(new_sl1e) & _PAGE_RW) )
-                {
-                    oos_fixup_add(v, new_gmfn, sl1mfn, 
pgentry_ptr_to_slot(sl1e));
-                }
-#endif
-
             }
         }
     } 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.