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

[Xen-devel] [PATCH] x86/mm: don't override an existing shadow memory allocation



x86/mm: don't override an existing shadow memory allocation when enabling 
log-dirty shadows on a PV guest.

Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx>

diff -r 9f1257be88ad xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c   Thu Nov 18 12:42:07 2010 +0000
+++ b/xen/arch/x86/mm/shadow/common.c   Thu Nov 18 12:45:44 2010 +0000
@@ -3328,11 +3328,10 @@ static int shadow_one_bit_enable(struct 
 
     mode |= PG_SH_enable;
 
-    if ( d->arch.paging.mode == 0 )
+    if ( d->arch.paging.shadow.total_pages == 0 )
     {
-        /* Init the shadow memory allocation and the hash table */
-        if ( sh_set_allocation(d, 1, NULL) != 0 
-             || shadow_hash_alloc(d) != 0 )
+        /* Init the shadow memory allocation if the user hasn't done so */
+        if ( sh_set_allocation(d, 1, NULL) != 0 )
         {
             sh_set_allocation(d, 0, NULL);
             return -ENOMEM;
@@ -3343,6 +3342,13 @@ static int shadow_one_bit_enable(struct 
         d->arch.paging.free_page = shadow_free_p2m_page;
     }
 
+    if ( d->arch.paging.mode == 0 )
+    {
+        /* Init the shadow hash table */
+        if ( shadow_hash_alloc(d) != 0 )
+            return -ENOMEM;
+    }
+
     /* Update the bits */
     sh_new_mode(d, d->arch.paging.mode | mode);
 

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