From: Wei Liu Date: Fri, 17 May 2019 17:05:55 +0000 (+0100) Subject: libxl: fix libxl_domain_need_memory after 899433f149d X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=278c64519c661c851d37e2a929f006fb8a1dcd01;p=people%2Fsstabellini%2Fxen-unstable.git%2F.git libxl: fix libxl_domain_need_memory after 899433f149d After 899433f149d libxl needs to know the content of d_config to determine which QEMU is used. The code is changed such that libxl__domain_set_device_model needs to be called before libxl__domain_build_info_setdefault. This is fine for libxl code, but it is problematic for libxl_domain_need_memory, which is the only public API that takes a build_info. To avoid breaking its users, provide a compatibility setting inside that function. Signed-off-by: Wei Liu Reviewed-by: Roger Pau Monné Acked-by: Ian Jackson --- diff --git a/tools/libxl/libxl_mem.c b/tools/libxl/libxl_mem.c index 448a2af8fd..4446754186 100644 --- a/tools/libxl/libxl_mem.c +++ b/tools/libxl/libxl_mem.c @@ -457,6 +457,24 @@ int libxl_domain_need_memory(libxl_ctx *ctx, libxl_domain_build_info_init(b_info); libxl_domain_build_info_copy(ctx, b_info, b_info_in); + /* + * It has become a requirement that to figure out which QEMU to + * use, libxl will need to peek d_config's content. The code has + * been changed such that one will need to call + * libxl__domain_set_device_model before calling + * libxl__domain_build_info_setdefault inside libxl. + * + * This (problematic) public API is the only one which takes a + * b_info. Imposing the same requirement on the users of this + * public API will break them. + * + * Provide a compatibility setting for this function. The + * calculation doesn't really care which QEMU is set here, so we + * go with the upstream default. + */ + if (!b_info->device_model_version) + b_info->device_model_version = LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN; + rc = libxl__domain_build_info_setdefault(gc, b_info); if (rc) goto out;