From: Jim Fehlig Date: Thu, 22 Feb 2018 01:48:38 +0000 (-0700) Subject: libxl: round memory values to next 1MiB increment X-Git-Tag: v4.1.0-rc1^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ef71caeaa81ab75daf441fe702d267c9b722bafb;p=thirdparty%2Flibvirt.git libxl: round memory values to next 1MiB increment libxl requires the memory sizes to be rounded to 1MiB increments. Attempting to start a domain that violates this requirement will fail with the marginally helpful error 2018-02-22 01:55:32.921+0000: xc: panic: xc_dom_boot.c:141: xc_dom_boot_mem_init: can't allocate low memory for domain: Out of memory 2018-02-22 01:55:32.921+0000: libxl: libxl_dom.c:671:libxl__build_dom: xc_dom_boot_mem_init failed: No such file or directory Round the maximum and current memory values to the next 1MiB increment when generating the libxl_domain_config object. Signed-off-by: Jim Fehlig --- diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index dcd46873c7..ea2b0c588f 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -367,6 +367,10 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, } b_info->sched_params.weight = 1000; + /* Xen requires the memory sizes to be rounded to 1MiB increments */ + virDomainDefSetMemoryTotal(def, + VIR_ROUND_UP(virDomainDefGetMemoryInitial(def), 1024)); + def->mem.cur_balloon = VIR_ROUND_UP(def->mem.cur_balloon, 1024); b_info->max_memkb = virDomainDefGetMemoryInitial(def); b_info->target_memkb = def->mem.cur_balloon; if (hvm) {