From: Ewan Mellor Date: Fri, 19 Jan 2007 10:12:39 +0000 (+0000) Subject: Tidy up the restore path following HVM save/restore patches. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15371^2~133^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=61a18d9c5413be9990fe14f922d4b9a1159bb708;p=xen.git Tidy up the restore path following HVM save/restore patches. Signed-off-by: Ewan Mellor --- diff --git a/tools/python/xen/xend/XendCheckpoint.py b/tools/python/xen/xend/XendCheckpoint.py index 1aa2d0bc88..ae0ffee917 100644 --- a/tools/python/xen/xend/XendCheckpoint.py +++ b/tools/python/xen/xend/XendCheckpoint.py @@ -175,29 +175,24 @@ def restore(xd, fd, dominfo = None, paused = False): nr_pfns = (dominfo.getMemoryTarget() + 3) / 4 # if hvm, pass mem size to calculate the store_mfn - hvm = 0 - apic = 0 - pae = 0 image_cfg = dominfo.info.get('image', {}) - hvm = image_cfg.has_key('hvm') - if hvm: - # the 'memory' in config has been removed + is_hvm = image_cfg.has_key('hvm') + if is_hvm: hvm = dominfo.info['memory_static_min'] apic = dominfo.info['image']['hvm'].get('apic', 0) pae = dominfo.info['image']['hvm'].get('pae', 0) log.info("restore hvm domain %d, mem=%d, apic=%d, pae=%d", dominfo.domid, hvm, apic, pae) + else: + hvm = 0 + apic = 0 + pae = 0 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") - + 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 + if max_pfn > 16*1024*1024: # XXX raise XendError( "not a valid guest state file: pfn count out of range") @@ -208,7 +203,6 @@ def restore(xd, fd, dominfo = None, paused = False): dominfo.info['memory_static_max'], dominfo.info['memory_static_min'], nr_pfns) - balloon.free(xc.pages_to_kib(nr_pfns) + shadow * 1024) shadow_cur = xc.shadow_mem_control(dominfo.getDomid(), shadow) @@ -231,7 +225,7 @@ def restore(xd, fd, dominfo = None, paused = False): dominfo.unpause() # get qemu state and create a tmp file for dm restore - if hvm: + if is_hvm: qemu_signature = read_exact(fd, len(QEMU_SIGNATURE), "invalid device model signature read") if qemu_signature != QEMU_SIGNATURE: