From patchwork Mon Jan 27 14:34:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Cooper X-Patchwork-Id: 11352775 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8598C139A for ; Mon, 27 Jan 2020 14:41:56 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 62033214AF for ; Mon, 27 Jan 2020 14:41:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="EuxAUw6l" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 62033214AF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iw5Zb-0003K5-09; Mon, 27 Jan 2020 14:41:07 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iw5Za-0003JG-2N for xen-devel@lists.xenproject.org; Mon, 27 Jan 2020 14:41:06 +0000 X-Inumbo-ID: 0a8c5f56-4113-11ea-aecd-bc764e2007e4 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 0a8c5f56-4113-11ea-aecd-bc764e2007e4; Mon, 27 Jan 2020 14:41:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1580136064; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=XGsMkZQ7iaX5BEx0cLcWzcJNQZ5f9VzAHVUzuIVlipg=; b=EuxAUw6ltOFZthJwcIlqZdsdBhKTJiB43UnT/xIbynUECGlwUbJxhhDK GPlwhq1FJxB8UT94KY5qJWv6vvlm/+7qffxrzJkk8hVUQ6lHHZumsD0nT d4mvj7kb1AnvCnAZkT10ilXCpg5AHn7oCObxD6RUUOHkYeU2Hqggj5sw4 g=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=andrew.cooper3@citrix.com; spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of andrew.cooper3@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="andrew.cooper3@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa1.hc3370-68.iphmx.com: domain of Andrew.Cooper3@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="Andrew.Cooper3@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: 5XO6lmxEIoHZgj509ViesNwMqRTesGGIjKBXCPWjizaE3FiKzkdhJCUyR6kSTyPkih0Dgt3lV2 819jDPUcI5wdOwoQeh2Kc7jO6youJvoJAApWo1geuZAAJ0PopDcAhz5QRdvo3FMCO5N6GVaSqb KD1o+wf2ELZsKkDbusvQsu9iwYYGR0suNoPYtV6bSZOOeOh8oiyYeZ9c0+l4u+4P2ekoYZz5BQ 4YS+LwQk3LeVUMrKvfXddxcvppdSmSmw7fXXlS1R7EGrA5qjkE8M+E0ALbwNYJZ/823eLO8OC1 e+4= X-SBRS: 2.7 X-MesageID: 11665364 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,370,1574139600"; d="scan'208";a="11665364" From: Andrew Cooper To: Xen-devel Date: Mon, 27 Jan 2020 14:34:37 +0000 Message-ID: <20200127143444.25538-11-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20200127143444.25538-1-andrew.cooper3@citrix.com> References: <20200127143444.25538-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 10/17] tools/libxl: Plumb a restore boolean down into libxl__build_pre() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Andrew Cooper , Wei Liu , Ian Jackson Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To fix CPUID handling, libxl__build_pre() is going to have to distinguish between a brand new VM vs one which is being migrated-in/resumed. No functional change. Signed-off-by: Andrew Cooper --- CC: Ian Jackson CC: Wei Liu CC: Anthony PERARD v2: * New. This is c/s aacc1430064 "tools/libxl: Plumb domain_create_state down into libxl__build_pre()" take-2, without any collateral damage to stubdoms. --- tools/libxl/libxl_create.c | 9 +++++---- tools/libxl/libxl_dm.c | 2 +- tools/libxl/libxl_dom.c | 4 +++- tools/libxl/libxl_internal.h | 6 ++++-- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 12113185ac..1d2e193509 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -434,14 +434,15 @@ static void init_console_info(libxl__gc *gc, int libxl__domain_build(libxl__gc *gc, libxl_domain_config *d_config, uint32_t domid, - libxl__domain_build_state *state) + libxl__domain_build_state *state, + bool restore) { libxl_domain_build_info *const info = &d_config->b_info; char **vments = NULL, **localents = NULL; struct timeval start_time; int i, ret; - ret = libxl__build_pre(gc, domid, d_config, state); + ret = libxl__build_pre(gc, domid, d_config, state, restore); if (ret) goto out; @@ -1218,7 +1219,7 @@ static void domcreate_bootloader_done(libxl__egc *egc, dcs->sdss.callback = domcreate_devmodel_started; if (restore_fd < 0 && dcs->domid_soft_reset == INVALID_DOMID) { - rc = libxl__domain_build(gc, d_config, domid, state); + rc = libxl__domain_build(gc, d_config, domid, state, false); domcreate_rebuild_done(egc, dcs, rc); return; } @@ -1245,7 +1246,7 @@ static void domcreate_bootloader_done(libxl__egc *egc, goto out; } - rc = libxl__build_pre(gc, domid, d_config, state); + rc = libxl__build_pre(gc, domid, d_config, state, restore_fd >= 0); if (rc) goto out; diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index e92e412c1b..d3dfa8751c 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -2197,7 +2197,7 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss) if (ret) goto out; uint32_t dm_domid = sdss->pvqemu.guest_domid; - ret = libxl__domain_build(gc, dm_config, dm_domid, stubdom_state); + ret = libxl__domain_build(gc, dm_config, dm_domid, stubdom_state, false); if (ret) goto out; diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index b730365f47..1bac277351 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -244,7 +244,9 @@ static int numa_place_domain(libxl__gc *gc, uint32_t domid, } int libxl__build_pre(libxl__gc *gc, uint32_t domid, - libxl_domain_config *d_config, libxl__domain_build_state *state) + libxl_domain_config *d_config, + libxl__domain_build_state *state, + bool restore) { libxl_domain_build_info *const info = &d_config->b_info; libxl_ctx *ctx = libxl__gc_owner(gc); diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 50856ca703..e66b068d16 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1390,7 +1390,8 @@ _hidden void libxl__domain_build_state_dispose(libxl__domain_build_state *s); _hidden int libxl__build_pre(libxl__gc *gc, uint32_t domid, libxl_domain_config * const d_config, - libxl__domain_build_state *state); + libxl__domain_build_state *state, + bool restore); _hidden int libxl__build_post(libxl__gc *gc, uint32_t domid, libxl_domain_build_info *info, libxl__domain_build_state *state, char **vms_ents, char **local_ents); @@ -1963,7 +1964,8 @@ _hidden int libxl__domain_make(libxl__gc *gc, _hidden int libxl__domain_build(libxl__gc *gc, libxl_domain_config *d_config, uint32_t domid, - libxl__domain_build_state *state); + libxl__domain_build_state *state, + bool restore); /* for device model creation */ _hidden const char *libxl__domain_device_model(libxl__gc *gc,