[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] libxl: create PVH guests with max memory assigned
Since PVH guests are very similar to HVM guests in terms of memory management, start the guest with the maximum memory assigned and let it balloon down. Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> --- tools/libxl/libxl_dom.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 661999c..eada87d 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -233,6 +233,7 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, libxl_domain_build_info *const info = &d_config->b_info; libxl_ctx *ctx = libxl__gc_owner(gc); char *xs_domid, *con_domid; + unsigned long mem; int rc; if (xc_domain_max_vcpus(ctx->xch, domid, info->max_vcpus) != 0) { @@ -263,8 +264,12 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, libxl_domain_set_nodeaffinity(ctx, domid, &info->nodemap); libxl_set_vcpuaffinity_all(ctx, domid, info->max_vcpus, &info->cpumap); - if (xc_domain_setmaxmem(ctx->xch, domid, info->target_memkb + - LIBXL_MAXMEM_CONSTANT) < 0) { + if (info->type == LIBXL_DOMAIN_TYPE_PV) + mem = libxl_defbool_val(d_config->c_info.pvh) ? info->max_memkb : + info->target_memkb; + else + mem = info->target_memkb; + if (xc_domain_setmaxmem(ctx->xch, domid, mem + LIBXL_MAXMEM_CONSTANT) < 0) { LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Couldn't set max memory"); return ERROR_FAIL; } @@ -370,6 +375,7 @@ int libxl__build_pv(libxl__gc *gc, uint32_t domid, { libxl_ctx *ctx = libxl__gc_owner(gc); struct xc_dom_image *dom; + unsigned long mem; int ret; int flags = 0; @@ -440,7 +446,8 @@ int libxl__build_pv(libxl__gc *gc, uint32_t domid, LOGE(ERROR, "libxl__arch_domain_init_hw_description failed"); goto out; } - if ( (ret = xc_dom_mem_init(dom, info->target_memkb / 1024)) != 0 ) { + mem = state->pvh_enabled ? info->max_memkb : info->target_memkb; + if ( (ret = xc_dom_mem_init(dom, mem / 1024)) != 0 ) { LOGE(ERROR, "xc_dom_mem_init failed"); goto out; } -- 1.7.7.5 (Apple Git-26) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |