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

[Xen-changelog] Fix save/restore and migrate on x86_64.



# HG changeset patch
# User smh22@xxxxxxxxxxxxxxxxxxxx
# Node ID 486f4c9e1c22b64c33c4b83e7e675eecc83cde00
# Parent  001ba14fbb1bcc91d4e02e70d5c64d661870c398
Fix save/restore and migrate on x86_64. 

Signed-off-by: Steven Hand <steven@xxxxxxxxxxxxx>

diff -r 001ba14fbb1b -r 486f4c9e1c22 tools/libxc/xc_linux_save.c
--- a/tools/libxc/xc_linux_save.c       Sat Nov 26 10:32:57 2005
+++ b/tools/libxc/xc_linux_save.c       Sat Nov 26 11:13:39 2005
@@ -457,6 +457,15 @@
             xen_start = (hvirt_start >> L2_PAGETABLE_SHIFT_PAE) & 0x1ff; 
     }
 
+       if (pt_levels == 4 && type == L4TAB) { 
+               /* 
+        ** XXX SMH: should compute these from hvirt_start (which we have) 
+               ** and hvirt_end (which we don't) 
+        */
+               xen_start = 256; 
+               xen_end   = 272; 
+       }
+
     /* Now iterate through the page table, canonicalizing each PTE */
     for (i = 0; i < pte_last; i++ ) {
 
@@ -721,12 +730,6 @@
     }
 
     /* Domain is still running at this point */
-
-    if (live && (pt_levels == 4)) {
-        ERR("Live migration not supported for 64-bit guests");
-        live = 0;
-    }
-
     if (live) {
 
         if (xc_shadow_control(xc_handle, dom, 
@@ -811,7 +814,7 @@
         for (i = 0; i < max_pfn; i++) {
 
             mfn = live_p2m[i];
-            if((mfn != 0xffffffffUL) && (mfn_to_pfn(mfn) != i)) { 
+            if((mfn != INVALID_P2M_ENTRY) && (mfn_to_pfn(mfn) != i)) { 
                 DPRINTF("i=0x%x mfn=%lx live_m2p=%lx\n", i, 
                         mfn, mfn_to_pfn(mfn));
                 err++;
diff -r 001ba14fbb1b -r 486f4c9e1c22 tools/python/xen/xend/XendCheckpoint.py
--- a/tools/python/xen/xend/XendCheckpoint.py   Sat Nov 26 10:32:57 2005
+++ b/tools/python/xen/xend/XendCheckpoint.py   Sat Nov 26 11:13:39 2005
@@ -128,7 +128,7 @@
     try:
         l = read_exact(fd, sizeof_unsigned_long,
                        "not a valid guest state file: pfn count read")
-        nr_pfns = unpack("=L", l)[0]   # XXX endianess
+        nr_pfns = unpack("L", l)[0]    # native sizeof long
         if nr_pfns > 16*1024*1024:     # XXX 
             raise XendError(
                 "not a valid guest state file: pfn count out of range")

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