|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
[Xen-devel] [PATCH] x86/mm: don't override an existing shadow	memory all
 
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
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread> |  
- [Xen-devel] [PATCH] x86/mm: don't override an existing shadow	memory allocation,
Tim Deegan <=
  
 |  
  
 | 
    | 
  
  
    |   | 
    |