From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55462) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZxDJG-0006DA-FB for qemu-devel@nongnu.org; Fri, 13 Nov 2015 07:18:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZxDJC-00012K-RK for qemu-devel@nongnu.org; Fri, 13 Nov 2015 07:18:30 -0500 Received: from smtp.citrix.com ([66.165.176.89]:65424) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZxDJC-00011o-N6 for qemu-devel@nongnu.org; Fri, 13 Nov 2015 07:18:26 -0500 From: Roger Pau Monne Date: Fri, 13 Nov 2015 13:18:20 +0100 Message-ID: <1447417100-24921-1-git-send-email-roger.pau@citrix.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH QEMU v2 2/2] xen: fix usage of xc_domain_create in domain builder List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , qemu-devel@nongnu.org, Roger Pau Monne Due to the addition of HVMlite and the requirement to always provide a valid xc_domain_configuration_t, xc_domain_create now always takes an arch domain config, which can be NULL in order to mimic previous behaviour. Add a small stub called xen_domain_create that encapsulates the correct call to xc_domain_create depending on the libxc version detected. Signed-off-by: Roger Pau Monné --- Cc: Stefano Stabellini Cc: qemu-devel@nongnu.org --- Changes since v1: - Add a compat layer to support previous libxc versions. - Add machinery to detect current Xen unstable (4.7). --- configure | 17 +++++++++++++++++ hw/xenpv/xen_domainbuild.c | 2 +- include/hw/xen/xen_common.h | 12 ++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 779623a..001982f 100755 --- a/configure +++ b/configure @@ -1863,6 +1863,23 @@ EOF elif cat > $TMPC < +#include +int main(void) { + xc_interface *xc = NULL; + xen_domain_handle_t handle; + xc_domain_create(xc, 0, handle, 0, NULL, NULL); + return 0; +} +EOF + compile_prog "" "$xen_libs" + then + xen_ctrl_version=470 + xen=yes + + # Xen 4.6 + elif + cat > $TMPC < #include #include #include diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c index c0ab753..07814f6 100644 --- a/hw/xenpv/xen_domainbuild.c +++ b/hw/xenpv/xen_domainbuild.c @@ -234,7 +234,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk, int rc; memcpy(uuid, qemu_uuid, sizeof(uuid)); - rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); + rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid, NULL); if (rc < 0) { fprintf(stderr, "xen: xc_domain_create() failed\n"); goto err; diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h index 5923290..e5ba732 100644 --- a/include/hw/xen/xen_common.h +++ b/include/hw/xen/xen_common.h @@ -417,4 +417,16 @@ static inline int xen_set_ioreq_server_state(XenXC xc, domid_t dom, #endif +static inline int xen_domain_create(XenXC xc, uint32_t ssidref, + xen_domain_handle_t handle, uint32_t flags, + uint32_t *pdomid, + xc_domain_configuration_t *config) +{ +#if CONFIG_XEN_CTRL_INTERFACE_VERSION < 470 + return xc_domain_create(xc, ssidref, handle, flags, pdomid); +#else + return xc_domain_create(xc, ssidref, handle, flags, pdomid, config); +#endif +} + #endif /* QEMU_HW_XEN_COMMON_H */ -- 1.9.5 (Apple Git-50.3)