From: Wei Liu Date: Mon, 16 Mar 2015 09:52:27 +0000 (+0000) Subject: libxl: x86: factor out e820_host_sanitize X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3597 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=dabacf96aa9828df592ddd9968560fa149b47534;p=xen.git libxl: x86: factor out e820_host_sanitize This function gets the machine E820 map and sanitize it according to PV guest configuration. This will be used in later patch. No functional change introduced in this patch. Signed-off-by: Wei Liu Reviewed-by: Andrew Cooper Reviewed-by: Dario Faggioli Cc: Ian Campbell Cc: Ian Jackson Cc: Elena Ufimtseva Acked-by: Ian Campbell --- diff --git a/tools/libxl/libxl_x86.c b/tools/libxl/libxl_x86.c index 9ceb373b6e..d012b4ddae 100644 --- a/tools/libxl/libxl_x86.c +++ b/tools/libxl/libxl_x86.c @@ -207,6 +207,27 @@ static int e820_sanitize(libxl_ctx *ctx, struct e820entry src[], return 0; } +static int e820_host_sanitize(libxl__gc *gc, + libxl_domain_build_info *b_info, + struct e820entry map[], + uint32_t *nr) +{ + int rc; + + rc = xc_get_machine_memory_map(CTX->xch, map, *nr); + if (rc < 0) { + errno = rc; + return ERROR_FAIL; + } + + *nr = rc; + + rc = e820_sanitize(CTX, map, nr, b_info->target_memkb, + (b_info->max_memkb - b_info->target_memkb) + + b_info->u.pv.slack_memkb); + return rc; +} + static int libxl__e820_alloc(libxl__gc *gc, uint32_t domid, libxl_domain_config *d_config) { @@ -223,15 +244,8 @@ static int libxl__e820_alloc(libxl__gc *gc, uint32_t domid, if (!libxl_defbool_val(b_info->u.pv.e820_host)) return ERROR_INVAL; - rc = xc_get_machine_memory_map(ctx->xch, map, E820MAX); - if (rc < 0) { - errno = rc; - return ERROR_FAIL; - } - nr = rc; - rc = e820_sanitize(ctx, map, &nr, b_info->target_memkb, - (b_info->max_memkb - b_info->target_memkb) + - b_info->u.pv.slack_memkb); + nr = E820MAX; + rc = e820_host_sanitize(gc, b_info, map, &nr); if (rc) return ERROR_FAIL;