[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v7 08/21] 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 <wei.liu2@xxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Elena Ufimtseva <ufimtseva@xxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- Changes in v4: 1. Use actual size of the map instead of using E820MAX. --- tools/libxl/libxl_x86.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/tools/libxl/libxl_x86.c b/tools/libxl/libxl_x86.c index 9ceb373..d012b4d 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; -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |