Zhai, Edwin
2007-Jan-19 16:39 UTC
[Xen-devel] [PATCH 3/4] HVM save/restore clean up: change max_pfn format
[PATCH 3/4] HVM save/restore clean up: change max_pfn format Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> change from unsigned long to int for 32 guest saved on 64 and restore on 32 in future. seems 2^32 pages is big enough. diff -r f6912b819d3c tools/libxc/ia64/xc_ia64_linux_save.c --- a/tools/libxc/ia64/xc_ia64_linux_save.c Fri Jan 19 19:29:26 2007 +0800 +++ b/tools/libxc/ia64/xc_ia64_linux_save.c Fri Jan 19 19:39:12 2007 +0800 @@ -223,7 +223,7 @@ xc_linux_save(int xc_handle, int io_fd, } /* This is expected by xm restore. */ - if (!write_exact(io_fd, &max_pfn, sizeof(unsigned long))) { + if (!write_exact(io_fd, &max_pfn, sizeof(unsigned int))) { ERROR("write: max_pfn"); goto out; } diff -r f6912b819d3c tools/libxc/xc_hvm_save.c --- a/tools/libxc/xc_hvm_save.c Fri Jan 19 19:29:26 2007 +0800 +++ b/tools/libxc/xc_hvm_save.c Fri Jan 19 19:39:12 2007 +0800 @@ -468,7 +468,7 @@ int xc_hvm_save(int xc_handle, int io_fd } /* Start writing out the saved-domain record. */ - if (!write_exact(io_fd, &max_pfn, sizeof(unsigned long))) { + if (!write_exact(io_fd, &max_pfn, sizeof(unsigned int))) { ERROR("write: max_pfn"); goto out; } diff -r f6912b819d3c tools/libxc/xc_linux_save.c --- a/tools/libxc/xc_linux_save.c Fri Jan 19 19:29:26 2007 +0800 +++ b/tools/libxc/xc_linux_save.c Fri Jan 19 19:39:12 2007 +0800 @@ -822,7 +822,7 @@ int xc_linux_save(int xc_handle, int io_ /* Start writing out the saved-domain record. */ - if (!write_exact(io_fd, &max_pfn, sizeof(unsigned long))) { + if (!write_exact(io_fd, &max_pfn, sizeof(unsigned int))) { ERROR("write: max_pfn"); goto out; } diff -r f6912b819d3c tools/python/xen/xend/XendCheckpoint.py --- a/tools/python/xen/xend/XendCheckpoint.py Fri Jan 19 19:29:26 2007 +0800 +++ b/tools/python/xen/xend/XendCheckpoint.py Fri Jan 19 19:40:06 2007 +0800 @@ -189,24 +189,19 @@ def restore(xd, fd, dominfo = None, paus dominfo.domid, hvm, apic, pae) try: - if hvm: - l = read_exact(fd, sizeof_unsigned_int, - "not a valid hvm guest state file: pfn count read") - nr_pfns = unpack("I", l)[0] # native sizeof int - else: - l = read_exact(fd, sizeof_unsigned_long, - "not a valid guest state file: pfn count read") - - max_pfn = unpack("L", l)[0] # native sizeof long + l = read_exact(fd, sizeof_unsigned_int, + "not a valid hvm guest state file: pfn count read") + max_pfn = unpack("I", l)[0] # native sizeof int + if max_pfn > 16*1024*1024: # XXX raise XendError( "not a valid guest state file: pfn count out of range") shadow = dominfo.info[''shadow_memory''] log.debug("restore:shadow=0x%x, _static_max=0x%x, _static_min=0x%x, " - "nr_pfns=0x%x.", dominfo.info[''shadow_memory''], + "nr_pfns=0x%x, max_pfn=0x%x.", dominfo.info[''shadow_memory''], dominfo.info[''memory_static_max''], - dominfo.info[''memory_static_min''], nr_pfns) + dominfo.info[''memory_static_min''], nr_pfns, max_pfn) balloon.free(xc.pages_to_kib(nr_pfns) + shadow * 1024) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel