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

[Xen-changelog] [xen-unstable] Fix PV guest restore.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1176209188 -3600
# Node ID 099593da38cba5bba3b90f2ea44dfd060e94cb1f
# Parent  17b360da7887502d905e89d76cfca88bbf4840cf
Fix PV guest restore.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 tools/libxc/xc_domain_restore.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff -r 17b360da7887 -r 099593da38cb tools/libxc/xc_domain_restore.c
--- a/tools/libxc/xc_domain_restore.c   Tue Apr 10 10:31:42 2007 +0100
+++ b/tools/libxc/xc_domain_restore.c   Tue Apr 10 13:46:28 2007 +0100
@@ -119,6 +119,7 @@ static int uncanonicalize_pagetable(int 
         {
             /* Have a 'valid' PFN without a matching MFN - need to alloc */
             p2m_batch[nr_mfns++] = pfn; 
+            p2m[pfn]--;
         }
     }
 
@@ -146,8 +147,8 @@ static int uncanonicalize_pagetable(int 
             continue;
         
         pfn = (pte >> PAGE_SHIFT) & MFN_MASK_X86;
-        
-        if ( p2m[pfn] == INVALID_P2M_ENTRY )
+
+        if ( p2m[pfn] == (INVALID_P2M_ENTRY-1) )
             p2m[pfn] = p2m_batch[nr_mfns++];
 
         pte &= ~MADDR_MASK_X86;
@@ -489,6 +490,7 @@ int xc_domain_restore(int xc_handle, int
             {
                 /* Have a live PFN which hasn't had an MFN allocated */
                 p2m_batch[nr_mfns++] = pfn; 
+                p2m[pfn]--;
             }
         } 
 
@@ -514,7 +516,7 @@ int xc_domain_restore(int xc_handle, int
                 region_mfn[i] = ~0UL; /* map will fail but we don't care */
             else 
             {
-                if ( p2m[pfn] == INVALID_P2M_ENTRY )
+                if ( p2m[pfn] == (INVALID_P2M_ENTRY-1) )
                 {
                     /* We just allocated a new mfn above; update p2m */
                     p2m[pfn] = p2m_batch[nr_mfns++]; 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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