From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017754; cv=none; d=zohomail.com; s=zohoarc; b=TkYEa+VtP1Ik2LuEBRg7ayOJkLLJlrf/CGosEUsc5lBx8Xv94EInPkyVvwrYTRKR2fygUyMDh+dB0pVqndRHqZgJ2KMYYbGYnKyCFDIcfzueUsR6jWdgjmmvv7abN8tNpAcR9AfwKZq2wNz93jX9ETyBsO3uIWi27eZ3lvm02ZE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017754; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8IXtcLZYCc4yp53Rpm751WvxEtEoSysKVWqOji26394=; b=X9me6whFvoIw0Zfg8EpePApxPWxtQaaAHPnDPkKpiUC757e//3Ft+INYXP8oLOxTli6ZJnAYcgM6zo+s4Dh2LbEwK/MYjBWrWe7RcW6Dl6DbLI4lIJ7nhui/+3I8UREjpTrjzgWiwT3Ue+CyB9L8rZxvNScourm794G0jnPjoWw= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017754597545.9840908642226; Mon, 1 Jun 2020 06:22:34 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOC-0006aV-MI; Mon, 01 Jun 2020 13:22:04 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOC-0006aQ-23 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:04 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id dcedcdc2-a40a-11ea-8993-bc764e2007e4; Mon, 01 Jun 2020 13:21:56 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:54 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:53 -0700 X-Inumbo-ID: dcedcdc2-a40a-11ea-8993-bc764e2007e4 IronPort-SDR: +BoH5IhwtvVz0OcmsrC/cDS4ULPjOhCjhVdV4VhWypMjtdD93xHOAOyi/ikgSJxysrteIYwEPP dVixSkxmwt1w== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: 1TRWz9hm2TCT2jHDQTuifUSnC7LwgEsZkSiKA/34n4hyfzde9BPl2lsLdM9C6SgIGkrW9MIDKN K3azX4n2y3SA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887253" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 01/13] x86/mem_sharing: block interrupt injection for forks Date: Mon, 1 Jun 2020 06:21:35 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Tian , Stefano Stabellini , Tamas K Lengyel , Jun Nakajima , Wei Liu , Andrew Cooper , Ian Jackson , George Dunlap , Tamas K Lengyel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" When running VM forks without device models (QEMU), it may be undesirable for Xen to inject interrupts. When creating such forks from Windows VMs we have observed the kernel trying to process interrupts immediately after the fork is executed. However without QEMU running such interrupt handling may not be possible because it may attempt to interact w= ith devices that are not emulated by a backend. In the best case scenario such interrupt handling would only present a detour in the VM forks' execution flow, but in the worst case as we actually observed can completely stall it. By disabling interrupt injection a fuzzer can exercise the target code with= out interference. For other use-cases this option probably doesn't make sense, that's why this is not enabled by default. Forks & memory sharing are only available on Intel CPUs so this only applies to vmx. Note that this is part of the experimental VM forking feature that's completely disabled by default and can only be enabled by using XEN_CONFIG_EXPERT during compile time. Signed-off-by: Tamas K Lengyel Reviewed-by: Roger Pau Monn=C3=A9 Reviewed-by he sent last week Reviewed-by: Wei Liu --- xen/arch/x86/hvm/vmx/intr.c | 6 ++++++ xen/arch/x86/mm/mem_sharing.c | 6 +++++- xen/include/asm-x86/hvm/domain.h | 2 +- xen/include/public/memory.h | 3 +++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/intr.c b/xen/arch/x86/hvm/vmx/intr.c index 000e14af49..80bfbb4787 100644 --- a/xen/arch/x86/hvm/vmx/intr.c +++ b/xen/arch/x86/hvm/vmx/intr.c @@ -256,6 +256,12 @@ void vmx_intr_assist(void) if ( unlikely(v->arch.vm_event) && v->arch.vm_event->sync_event ) return; =20 +#ifdef CONFIG_MEM_SHARING + /* Block event injection for VM fork if requested */ + if ( unlikely(v->domain->arch.hvm.mem_sharing.block_interrupts) ) + return; +#endif + /* Crank the handle on interrupt state. */ pt_vector =3D pt_update_irq(v); =20 diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c index 19922ab5d1..c428fd16ce 100644 --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -2106,7 +2106,8 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_= sharing_op_t) arg) rc =3D -EINVAL; if ( mso.u.fork.pad ) goto out; - if ( mso.u.fork.flags & ~XENMEM_FORK_WITH_IOMMU_ALLOWED ) + if ( mso.u.fork.flags & + ~(XENMEM_FORK_WITH_IOMMU_ALLOWED | XENMEM_FORK_BLOCK_INTERRUP= TS) ) goto out; =20 rc =3D rcu_lock_live_remote_domain_by_id(mso.u.fork.parent_domain, @@ -2134,6 +2135,9 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_= sharing_op_t) arg) rc =3D hypercall_create_continuation(__HYPERVISOR_memory_op, "lh", XENMEM_sharing_op, arg); + else if ( !rc && (mso.u.fork.flags & XENMEM_FORK_BLOCK_INTERRUPTS)= ) + d->arch.hvm.mem_sharing.block_interrupts =3D true; + rcu_unlock_domain(pd); break; } diff --git a/xen/include/asm-x86/hvm/domain.h b/xen/include/asm-x86/hvm/dom= ain.h index 95fe18cddc..9d247baf4d 100644 --- a/xen/include/asm-x86/hvm/domain.h +++ b/xen/include/asm-x86/hvm/domain.h @@ -67,7 +67,7 @@ struct hvm_ioreq_server { #ifdef CONFIG_MEM_SHARING struct mem_sharing_domain { - bool enabled; + bool enabled, block_interrupts; =20 /* * When releasing shared gfn's in a preemptible manner, recall where diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h index dbd35305df..850bd72c52 100644 --- a/xen/include/public/memory.h +++ b/xen/include/public/memory.h @@ -536,7 +536,10 @@ struct xen_mem_sharing_op { } debug; struct mem_sharing_op_fork { /* OP_FORK */ domid_t parent_domain; /* IN: parent's domain id */ +/* Only makes sense for short-lived forks */ #define XENMEM_FORK_WITH_IOMMU_ALLOWED (1u << 0) +/* Only makes sense for short-lived forks */ +#define XENMEM_FORK_BLOCK_INTERRUPTS (1u << 1) uint16_t flags; /* IN: optional settings */ uint32_t pad; /* Must be set to 0 */ } fork; --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017742; cv=none; d=zohomail.com; s=zohoarc; b=nUCVmeIUlGDvHfpQ23jpiLfc/10WJp7uPipWuYOS2/BkpsGr+hsNZMXCiPMJtxAqg6wPwhhwyIrcf1FpCmvWGNCWyEA/xB5vwCbc5C+3S9rBJUDcZArwbYH3jIhDkaU30ohNnDF4bfrqIHZ9BN6eh1y9Hjsa8Kgas+vKJJFLrA8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017742; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GagebDrJo51WnW9sleA+ZLgS8fdSw+QhVRxLpo6LGgE=; b=YhbL+9NOYsDO1Z5UiZxgaabwvlBzGWg9zX4sK22UcI05I6aWy1sCY23uEUV3firSHVkzKGRQW0w6yj3LJz+W4/TEkHBkrehdn7GdqIOJbIUqppiLMPnVrryXZtJMGUP5WRgvvcVhJfZOiil2Xh3Sb1KmtjAP73R39UdLo2oQJ80= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017742420479.53130833892374; Mon, 1 Jun 2020 06:22:22 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOA-0006a6-Dz; Mon, 01 Jun 2020 13:22:02 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkO9-0006Zz-SF for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:01 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id ddea53d0-a40a-11ea-ab1b-12813bfff9fa; Mon, 01 Jun 2020 13:21:56 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:54 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:54 -0700 X-Inumbo-ID: ddea53d0-a40a-11ea-ab1b-12813bfff9fa IronPort-SDR: Ji+TwovGG1LW3mC7YDXtNoadPZpzsZgTKai+7RNf0SB1nKJj3xYVIwGblJs44kWIDMGttKAe2H WuVxZrpAZHRg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: vyNToxXCPi1GYxEewQa8wW777KqdP2qZ/RwvvSPnmhxqv3gdY14S+abDy4+ksqb8Di5N8DUPHz Jb66VM7jxTIg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887260" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 02/13] tools/libxc: xc_memshr_fork with interrupts blocked Date: Mon, 1 Jun 2020 06:21:36 -0700 Message-Id: <03b382a38c62b5431c63d00f9acffacf43b55c1d.1591017086.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Ian Jackson , Tamas K Lengyel , Wei Liu , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Toolstack side for creating forks with interrupt injection blocked. Signed-off-by: Tamas K Lengyel Reviewed-by: Roger Pau Monn=C3=A9 Acked-by: Ian Jackson Acked-by: Wei Liu Reviewed-by he sent last week --- tools/libxc/include/xenctrl.h | 3 ++- tools/libxc/xc_memshr.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index f9e17ae424..5eeee1de46 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -2241,7 +2241,8 @@ int xc_memshr_range_share(xc_interface *xch, int xc_memshr_fork(xc_interface *xch, uint32_t source_domain, uint32_t client_domain, - bool allow_with_iommu); + bool allow_with_iommu, + bool block_interrupts); =20 /* * Note: this function is only intended to be used on short-lived forks th= at diff --git a/tools/libxc/xc_memshr.c b/tools/libxc/xc_memshr.c index 2300cc7075..a6cfd7dccf 100644 --- a/tools/libxc/xc_memshr.c +++ b/tools/libxc/xc_memshr.c @@ -240,7 +240,7 @@ int xc_memshr_debug_gref(xc_interface *xch, } =20 int xc_memshr_fork(xc_interface *xch, uint32_t pdomid, uint32_t domid, - bool allow_with_iommu) + bool allow_with_iommu, bool block_interrupts) { xen_mem_sharing_op_t mso; =20 @@ -251,6 +251,8 @@ int xc_memshr_fork(xc_interface *xch, uint32_t pdomid, = uint32_t domid, =20 if ( allow_with_iommu ) mso.u.fork.flags |=3D XENMEM_FORK_WITH_IOMMU_ALLOWED; + if ( block_interrupts ) + mso.u.fork.flags |=3D XENMEM_FORK_BLOCK_INTERRUPTS; =20 return xc_memshr_memop(xch, domid, &mso); } --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017742; cv=none; d=zohomail.com; s=zohoarc; b=RT9/IDdf8Tsek1nbRV9q9sc6JvlRREjTa+3o0LYU3+ZYQ7mMEifDtWrCrpY0hGg+yHhCpU4D77xKjZfeHLHgxd2SSQzmVwkFPIba3o1D01v4rcwiR6upnSFL2PSrug2+qd4gS0E03257OcHP+kik8KIsjeWDlHuKV5VckooGR3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017742; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QdDQdcuHYelGN42g+ZHafPDegunSm8JcTc1xT3U3lbA=; b=HlL2sf/MhukiQ17UayjS5T5Su5QY84gv21knILif5TK79n0Dw6kC7hRzAWgO3A3E7EiAjhs6uxCsxQPcGH4rw22GSuyalkqMBO8F3zFgap+D/yoSKaT0N3yjqAk0Fy7y+rSGbYDUkbrf5gnPrYDwKfmR65Qqtb5hfVs5H3CtkQY= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017742852920.9845846755259; Mon, 1 Jun 2020 06:22:22 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkO9-0006Zp-5r; Mon, 01 Jun 2020 13:22:01 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkO7-0006Zk-93 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:21:59 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id ddd06506-a40a-11ea-9dbe-bc764e2007e4; Mon, 01 Jun 2020 13:21:57 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:55 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:54 -0700 X-Inumbo-ID: ddd06506-a40a-11ea-9dbe-bc764e2007e4 IronPort-SDR: EKWuFPQTlQo2nXmEb57T0pwfRBTs2DWQkl+jsOS4QmLECQY9zltaVs3Ky3gGsn+XjAWdf8rwqJ hyjhlsy5da/Q== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: JYYGi1Zv63q1rClSv3u55YlsaJLhwwbopbhxoOvJBRFiPlzxskqtLck516JzHjYi6Gvvxy9p0B AiVbe0WNDnoQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887264" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 03/13] tools/libxl: Split libxl__domain_make Date: Mon, 1 Jun 2020 06:21:37 -0700 Message-Id: <853ceef8391bdfb7dc43ae2d9a9cb45818f256e4.1591017086.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Make part of libxl__domain_make into a separate function. No functional cha= nge. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_create.c | 62 +++++++++++++++++++++++------------- tools/libxl/libxl_internal.h | 4 ++- 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 75862dc6ed..09cf99d304 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -579,15 +579,7 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_con= fig *d_config, uint32_t *domid, bool soft_reset) { libxl_ctx *ctx =3D libxl__gc_owner(gc); - int ret, rc, nb_vm; - const char *dom_type; - char *uuid_string; - char *dom_path, *vm_path, *libxl_path; - struct xs_permissions roperm[2]; - struct xs_permissions rwperm[1]; - struct xs_permissions noperm[1]; - xs_transaction_t t =3D 0; - libxl_vminfo *vm_list; + int ret, rc; =20 /* convenience aliases */ libxl_domain_create_info *info =3D &d_config->c_info; @@ -595,12 +587,6 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_con= fig *d_config, =20 assert(soft_reset || *domid =3D=3D INVALID_DOMID); =20 - uuid_string =3D libxl__uuid2string(gc, info->uuid); - if (!uuid_string) { - rc =3D ERROR_NOMEM; - goto out; - } - if (!soft_reset) { struct xen_domctl_createdomain create =3D { .ssidref =3D info->ssidref, @@ -731,7 +717,37 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_con= fig *d_config, goto out; } =20 - dom_path =3D libxl__xs_get_dompath(gc, *domid); + rc =3D libxl__domain_make_xs_entries(gc, d_config, state, *domid); + + out: + return rc; +} + +int libxl__domain_make_xs_entries(libxl__gc *gc, libxl_domain_config *d_co= nfig, + libxl__domain_build_state *state, + uint32_t domid) +{ + libxl_ctx *ctx =3D libxl__gc_owner(gc); + int rc, nb_vm; + const char *dom_type; + char *uuid_string; + char *dom_path, *vm_path, *libxl_path; + struct xs_permissions roperm[2]; + struct xs_permissions rwperm[1]; + struct xs_permissions noperm[1]; + xs_transaction_t t =3D 0; + libxl_vminfo *vm_list; + + /* convenience aliases */ + libxl_domain_create_info *info =3D &d_config->c_info; + + uuid_string =3D libxl__uuid2string(gc, info->uuid); + if (!uuid_string) { + rc =3D ERROR_NOMEM; + goto out; + } + + dom_path =3D libxl__xs_get_dompath(gc, domid); if (!dom_path) { rc =3D ERROR_FAIL; goto out; @@ -739,12 +755,12 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_co= nfig *d_config, =20 vm_path =3D GCSPRINTF("/vm/%s", uuid_string); if (!vm_path) { - LOGD(ERROR, *domid, "cannot allocate create paths"); + LOGD(ERROR, domid, "cannot allocate create paths"); rc =3D ERROR_FAIL; goto out; } =20 - libxl_path =3D libxl__xs_libxl_path(gc, *domid); + libxl_path =3D libxl__xs_libxl_path(gc, domid); if (!libxl_path) { rc =3D ERROR_FAIL; goto out; @@ -755,10 +771,10 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_co= nfig *d_config, =20 roperm[0].id =3D 0; roperm[0].perms =3D XS_PERM_NONE; - roperm[1].id =3D *domid; + roperm[1].id =3D domid; roperm[1].perms =3D XS_PERM_READ; =20 - rwperm[0].id =3D *domid; + rwperm[0].id =3D domid; rwperm[0].perms =3D XS_PERM_NONE; =20 retry_transaction: @@ -776,7 +792,7 @@ retry_transaction: noperm, ARRAY_SIZE(noperm)); =20 xs_write(ctx->xsh, t, GCSPRINTF("%s/vm", dom_path), vm_path, strlen(vm= _path)); - rc =3D libxl__domain_rename(gc, *domid, 0, info->name, t); + rc =3D libxl__domain_rename(gc, domid, 0, info->name, t); if (rc) goto out; =20 @@ -866,7 +882,7 @@ retry_transaction: =20 vm_list =3D libxl_list_vm(ctx, &nb_vm); if (!vm_list) { - LOGD(ERROR, *domid, "cannot get number of running guests"); + LOGD(ERROR, domid, "cannot get number of running guests"); rc =3D ERROR_FAIL; goto out; } @@ -890,7 +906,7 @@ retry_transaction: t =3D 0; goto retry_transaction; } - LOGED(ERROR, *domid, "domain creation ""xenstore transaction commi= t failed"); + LOGED(ERROR, domid, "domain creation ""xenstore transaction commit= failed"); rc =3D ERROR_FAIL; goto out; } diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index c7ece066c4..19b367daca 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1983,7 +1983,9 @@ _hidden int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config, libxl__domain_build_state *state, uint32_t *domid, bool soft_reset); - +_hidden int libxl__domain_make_xs_entries(libxl__gc *gc, libxl_domain_conf= ig *d_config, + libxl__domain_build_state *state, + uint32_t domid); _hidden int libxl__domain_build(libxl__gc *gc, libxl_domain_config *d_config, uint32_t domid, --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017744; cv=none; d=zohomail.com; s=zohoarc; b=Mfh2AAsJsr+ol6rbE+nF0mdhdqU201FY2EWpVO2UVGY0m3x5i7c62MsN5NU7n4HGAXZBn4DmcRrOocV5KObSsKTzeINq1keSXljKVx9LihaQF9y6zIphdmNuNLbKUd2K7SI1YHJ8ww5fGMmusQmsMLJuXuwbVk1GkoMwsq494mQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017744; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lKVMbI+8sI187/UrD+mkzOGR8+qtHoyg+6rJ+YTr4tk=; b=DegOdh9Hhr7Gd5Bp/zr4c0lRwWEO3sKxtGWfQoq757m0k6b01+pV2saCbyQjoYmj4UivWO3We8MZdH+VnuA/jeYEE1UpYGPW0PdBk5ICZUwnXA8NmQsOTannoLP72Cpf1VIJnlesKRgjBQBkmclOg9+iO+pBARoLdNtv0g6MKdM= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017744602815.6665100053729; Mon, 1 Jun 2020 06:22:24 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOG-0006bd-3Y; Mon, 01 Jun 2020 13:22:08 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOE-0006bE-SS for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:06 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id dea7aff2-a40a-11ea-ab1b-12813bfff9fa; Mon, 01 Jun 2020 13:21:58 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:56 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:55 -0700 X-Inumbo-ID: dea7aff2-a40a-11ea-ab1b-12813bfff9fa IronPort-SDR: 7eWO+wTg+OD+E2zkbkm3GRWBTgtNS6aCZmQicZunUHASRlRfGwdwer19Xq2lPrBNTranExw6Qj hnDOMTq4QIjg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: LEuwBODCIKLx545PJycekkq8RxaL8o3E7DHJvs7J4Cqfhf+06K1UkXYWFFeuEr9vUCpsVW90uC VxmKNAsxFN9w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887271" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 04/13] tools/libxl: populate xenstore entries when launching dm for VM fork Date: Mon, 1 Jun 2020 06:21:38 -0700 Message-Id: <52246b2d22313368a063902a868cc2c66fefaf82.1591017086.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" No need to call libxl__domain_make since the domain already exists, only ne= ed to populate the xenstore entries via libxl__domain_make_xs_entries. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_create.c | 11 ++++++++++- tools/libxl/libxl_types.idl | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 09cf99d304..c3614e5a30 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -1244,7 +1244,13 @@ static void initiate_domain_create(libxl__egc *egc, ret =3D libxl__domain_config_setdefault(gc,d_config,domid); if (ret) goto error_out; =20 - ret =3D libxl__domain_make(gc, d_config, dbs, &domid, dcs->soft_reset); + /* If no dm_restore_file is specified we are in the normal path */ + if (!d_config->dm_restore_file) + ret =3D libxl__domain_make(gc, d_config, dbs, &domid, dcs->soft_re= set); + else + ret =3D libxl__domain_make_xs_entries(gc, d_config, &dcs->build_st= ate, + domid); + if (ret) { LOGD(ERROR, domid, "cannot make domain: %d", ret); dcs->guest_domid =3D domid; @@ -2052,6 +2058,9 @@ static int do_domain_create(libxl_ctx *ctx, libxl_dom= ain_config *d_config, cdcs->dcs.domid =3D INVALID_DOMID; cdcs->dcs.soft_reset =3D false; =20 + if (d_config->dm_restore_file) + cdcs->dcs.domid =3D *domid; + if (cdcs->dcs.restore_params.checkpointed_stream =3D=3D LIBXL_CHECKPOINTED_STREAM_COLO) { cdcs->dcs.colo_proxy_script =3D diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 9d3f05f399..b9cc139b0a 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -961,6 +961,7 @@ libxl_domain_config =3D Struct("domain_config", [ ("on_watchdog", libxl_action_on_shutdown), ("on_crash", libxl_action_on_shutdown), ("on_soft_reset", libxl_action_on_shutdown), + ("dm_restore_file", string, {'const': True}), ], dir=3DDIR_IN) =20 libxl_diskinfo =3D Struct("diskinfo", [ --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017743; cv=none; d=zohomail.com; s=zohoarc; b=PfDyFiZBjHsCdn2S5pYBwFW2ws+bH3UjzULvgvDR7i3WjoHrKRgK8vqgue46fOpm3nEAJ+kB09Hk9gvRVQ6DkqrxIU0viBJpakhVS0vRwqm9dhIAW8MLPBBJTU0XQ3tzC0RbdXUc26ky1XUcd9/Y8H5MCnnsaRNmZq+BgLKcwdo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017743; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6IZ41qCop+6xMFpEqhrn1IEu2m87PeUPYPaD3ovRH8Y=; b=TtKnj3HDhsKHexqTqipSFzIhJcwePktqWAO1eHXkog3nSz+gRpRX7islKZcMVQtTwmgUvrLdPBTNsUBQ2+5eORm9seRizpMrcBQy7eZHg0pgnV6bh9NHt1/Awq5KLJaS+X314pilC/Jg1FEawOo/DupB0STv+q/sApv6qDQRR18= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 159101774325985.90187554023714; Mon, 1 Jun 2020 06:22:23 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOI-0006dV-Bh; Mon, 01 Jun 2020 13:22:10 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOH-0006ct-2F for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:09 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id df3da6c4-a40a-11ea-9dbe-bc764e2007e4; Mon, 01 Jun 2020 13:21:59 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:56 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:56 -0700 X-Inumbo-ID: df3da6c4-a40a-11ea-9dbe-bc764e2007e4 IronPort-SDR: C8ptVWxodiBB3EqGFrAnjm23FTmPKQY+qGvbMdzuOQ5cL59d+ufNks+0mr4Q2Eg1YMi1TLCZnn BK9utKMQXIig== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: CSscI0DActZay7lfaxFXLbg3psQfkSGDofDsdx7FRzi1axZMAj514VZFPcJ4KqOUJ+k4+/WIWn WObTr+DekdPg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887275" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 05/13] tools/libxl: Add checks for dm_restore_file Date: Mon, 1 Jun 2020 06:21:39 -0700 Message-Id: <1f439c9d611458426917b5d6b9a350ff7dc6559f.1591017086.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" We can skip a bunch of steps a normal domain creation would entail, similar to how domain restore & soft_reset skips them. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_create.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index c3614e5a30..3f0745acc6 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -1294,7 +1294,7 @@ static void initiate_domain_create(libxl__egc *egc, if (ret) goto error_out; =20 - if (dbs->restore || dcs->soft_reset) { + if (dbs->restore || dcs->soft_reset || d_config->dm_restore_file) { LOGD(DEBUG, domid, "restoring, not running bootloader"); domcreate_bootloader_done(egc, &dcs->bl, 0); } else { @@ -1370,7 +1370,7 @@ static void domcreate_bootloader_done(libxl__egc *egc, dcs->sdss.dm.callback =3D domcreate_devmodel_started; dcs->sdss.callback =3D domcreate_devmodel_started; =20 - if (restore_fd < 0 && !dcs->soft_reset) { + if (restore_fd < 0 && !dcs->soft_reset && !d_config->dm_restore_file) { rc =3D libxl__domain_build(gc, d_config, domid, state); domcreate_rebuild_done(egc, dcs, rc); return; --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017750; cv=none; d=zohomail.com; s=zohoarc; b=kw0DHPywpczv+nRljBnD1TqdmavfCuv1lK42nc1095lmCdljxkhUScBzv0oD09/v4M70EWtOL+Nki+m6zVubGAkJBsm/asm8yqIYp8Y1rDHZwUGG+M8C8fQ/eZdpw+1csQbKcfpRn3uAaJkEhwD6f8mGNMXNgkBJOoAEOoa5beI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017750; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VxaKuqBRroaHJXlyTLVkq39ZF4hYYtDQ2NKFguKIuq4=; b=cPG1XnFnO/hp84bUcD/tUMetRitU8oIgJE5Jo0wJ2mPR+o4J/xKrW+IjDzVP9DJh6ZVgxidlKM9nCQIOZxD7PIohxb4ZMTPtrG0qxc9+5eqz0/RNTBHMyZZJkn7OvKHR49vOMyaeVKQJNiqcSZulqPl/ySb1Ruit3FCTTOAvTZ8= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017750095266.5009355950633; Mon, 1 Jun 2020 06:22:30 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOM-0006gj-VH; Mon, 01 Jun 2020 13:22:14 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOM-0006gF-2B for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:14 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id df4e475e-a40a-11ea-8993-bc764e2007e4; Mon, 01 Jun 2020 13:21:59 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:57 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:56 -0700 X-Inumbo-ID: df4e475e-a40a-11ea-8993-bc764e2007e4 IronPort-SDR: OiTlxfAXUtm6i+b2l+ZzI3kOknlRorIT78wliQmC8X7xL8saYQAuXRKZOVfQwoA2mtJDAwL2eV eMpEY7raiHSQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: CVuO+4ehU7TfZV95N6Qju9mNN4lwVMxQYdLjW2RpEurT0ArwV6c/GEHsjkX9BPecavBOl1FcS4 GhG+5ki6KQBg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887281" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 06/13] tools/libxl: adjust domcreate_bootloader_done Date: Mon, 1 Jun 2020 06:21:40 -0700 Message-Id: <0772dc7d3002e02b2c5775b32980a7719a4176b7.1591017086.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Add special handling when only the the device model needs launching for for= ks. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_create.c | 9 +++++++++ tools/libxl/libxl_internal.h | 1 + 2 files changed, 10 insertions(+) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 3f0745acc6..ab3ac096ee 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -1376,6 +1376,15 @@ static void domcreate_bootloader_done(libxl__egc *eg= c, return; } =20 + if (d_config->dm_restore_file) { + dcs->srs.dcs =3D dcs; + dcs->srs.ao =3D ao; + state->forked_vm =3D true; + rc =3D libxl__domain_build(gc, d_config, domid, state); + domcreate_rebuild_done(egc, dcs, rc); + return; + } + /* Prepare environment for domcreate_stream_done */ dcs->srs.dcs =3D dcs; =20 diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 19b367daca..eaae955658 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1376,6 +1376,7 @@ typedef struct { =20 char *saved_state; int dm_monitor_fd; + bool forked_vm; =20 libxl__file_reference pv_kernel; libxl__file_reference pv_ramdisk; --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017743; cv=none; d=zohomail.com; s=zohoarc; b=D2qdiASs1r+VzxcgQ4+ssTrUjSm6YcF0NikGNDvXxjn4KSFGqeeGu44JYcGWmtkblQHQEfhSQy4AZrTq38Xznx+LHz1bzfytG+Zy0iN6X2GuB2FY1LR7P1RssE80qwPSaabw9EsKqsn49ai8HowYnWkk7yEioJDwJmZTT+ZpXBo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017743; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oLmmrla+pRXIGo0fpJFFeHgXjhoEbJFS0KQkLs4PCdc=; b=KjKV2KAvpj0EG4mo2svcN4Lv3TIVZlBrdSlhSUm6fuESek9WZMH075KlGi3DI/VetBnJN0WR6USkk7tJZYdxNcRf5hbRqFVBtSr6ovEPtC1uHSpxjy6Ip4o0/vNIjW+VIBSwO6Xl9wkrQzGXRLwX9A6yEw+5z4tDTbjfqjOz6pM= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017743822200.61629927454135; Mon, 1 Jun 2020 06:22:23 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOK-0006f4-LQ; Mon, 01 Jun 2020 13:22:12 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOJ-0006eX-Se for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:11 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id dea7aff3-a40a-11ea-ab1b-12813bfff9fa; Mon, 01 Jun 2020 13:21:59 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:57 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:57 -0700 X-Inumbo-ID: dea7aff3-a40a-11ea-ab1b-12813bfff9fa IronPort-SDR: ExGWDZMH5GWwQEkJjcFMcIanFAIhhumLpPK09RcYRo00igFeixwnxOyffCGITwYPRMc2ZfeJrJ VJJc76bbQ2/g== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: AAatOggz3HYKUTbjHTpoBX7UjXaEbcFir0FwqigBWNA8hm4nXhBOwsx5nL1oNXc1iPQidkp7gn YQY/Qpjej3yA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887289" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 07/13] tools/libxl: Adjust libxl__build_pre Date: Mon, 1 Jun 2020 06:21:41 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Skips parts not relevant for VM forks. No functional change in existing cod= e, only relocating some bits that don't need to be done at the very end. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_dom.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index dd1aff89a3..1b55097a1a 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -249,9 +249,12 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, libxl_domain_build_info *const info =3D &d_config->b_info; libxl_ctx *ctx =3D libxl__gc_owner(gc); char *xs_domid, *con_domid; - int rc; + int rc =3D 0; uint64_t size; =20 + if (state->forked_vm) + goto skip_fork; + if (xc_domain_max_vcpus(ctx->xch, domid, info->max_vcpus) !=3D 0) { LOG(ERROR, "Couldn't set max vcpu count"); return ERROR_FAIL; @@ -374,6 +377,16 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, return ERROR_FAIL; } =20 + if ( (rc =3D libxl__arch_domain_create(gc, d_config, domid)) ) + return rc; + + /* Construct a CPUID policy, but only for brand new domains. Domains + * being migrated-in/restored have CPUID handled during the + * static_data_done() callback. */ + if (!state->restore) + libxl__cpuid_legacy(ctx, domid, info); + +skip_fork: xs_domid =3D xs_read(ctx->xsh, XBT_NULL, "/tool/xenstored/domid", NULL= ); state->store_domid =3D xs_domid ? atoi(xs_domid) : 0; free(xs_domid); @@ -385,14 +398,6 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, state->store_port =3D xc_evtchn_alloc_unbound(ctx->xch, domid, state->= store_domid); state->console_port =3D xc_evtchn_alloc_unbound(ctx->xch, domid, state= ->console_domid); =20 - rc =3D libxl__arch_domain_create(gc, d_config, domid); - - /* Construct a CPUID policy, but only for brand new domains. Domains - * being migrated-in/restored have CPUID handled during the - * static_data_done() callback. */ - if (!state->restore) - libxl__cpuid_legacy(ctx, domid, info); - return rc; } =20 --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017758; cv=none; d=zohomail.com; s=zohoarc; b=jSNYh2J5SoNOboUR5d6Tpt6uI0hDxgD3BeMpoIALBpgFdwzyZM0/W9thzceVrcpPC3TTM1mfLFoTid7vfQD/kzrmbZYZvbdtNYs9+4P27ywu78I3ZJnRM4nYO/wQX6cyFt0x4431+EVIuvUGbb0b2Ff0PiU4yq5Ou8JQ6iN/UT0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017758; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jTo3cg+yz+WZIoJaCvIsSwoY5T6gbmkV2uuPuV7vwpE=; b=gdp/3TT6vUodDa6BQ3rGLa3sJh92wra5muUDiVCQRMFmeZL28BhPlt0VzTKtEzHLPMWo4hElAa0CE9Cu3EGYAis9JstlaayQi3Yb+8lbUL1Kaq1hTbWhOKKNEeCJAsRnJ6MlEW0LXprRbNx4mPWCdpUIdgLS+hMZU8kiSvp3chg= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017758280745.9281771508356; Mon, 1 Jun 2020 06:22:38 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOX-0006qK-A3; Mon, 01 Jun 2020 13:22:25 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOW-0006p5-35 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:24 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id dfe083bc-a40a-11ea-9dbe-bc764e2007e4; Mon, 01 Jun 2020 13:22:00 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:58 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:57 -0700 X-Inumbo-ID: dfe083bc-a40a-11ea-9dbe-bc764e2007e4 IronPort-SDR: XjUeCg2bF3qGzFJsbJOzRBFy5uuT9p5WuMZvn6HKmpY+KcPBONBM9i/zpgJ8EVPH1wyjeJpI/c dOBtgNG4c3Sg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: zRzIgK3NLGrwOWakh5KTlXg84PUXiwRHwTb+oRhNxnL4DfIGf/h+7YZJJwdivG0FiLCHJuVfck sgCu+QJko7dQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887296" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 08/13] tools/libxl: Adjust libxl__build_post Date: Mon, 1 Jun 2020 06:21:42 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Skips parts not relevant to VM forks. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_dom.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 1b55097a1a..52d49437cc 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -455,6 +455,9 @@ int libxl__build_post(libxl__gc *gc, uint32_t domid, char **ents; int i, rc; =20 + if (state->forked_vm) + goto skip_fork; + if (info->num_vnuma_nodes && !info->num_vcpu_soft_affinity) { rc =3D set_vnuma_affinity(gc, domid, info); if (rc) @@ -475,6 +478,7 @@ int libxl__build_post(libxl__gc *gc, uint32_t domid, } } =20 +skip_fork: ents =3D libxl__calloc(gc, 12 + (info->max_vcpus * 2) + 2, sizeof(char= *)); ents[0] =3D "memory/static-max"; ents[1] =3D GCSPRINTF("%"PRId64, info->max_memkb); --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017751; cv=none; d=zohomail.com; s=zohoarc; b=QrT0ykeRiKJsrBn3T32iagV/uhmAHrvtMLB+fv76a/vTMkLkTQrTi85H8k9DjKTXHjdhRiQsFxQQHASUz2CBVaIoaPsD2SJvy/5cohZkB58Z1kSN3Rxpq7R+xn4jxKTFA8+7y6sJqge3jsyV+bU+DdWxrZgX0AKx+KRBJyTkMYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017751; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=wbl0U8T3b0Sl6f6Xtkjr3W1se1T6rMo97KHA0hFsQxk=; b=GL5/2FmCdzWy8+8Svwmu8RxTIa7E62G8iQC8PBdOdNr4xO+OShzJcZSjm+XeoSEK8NoarPNVvdXyYuHlYKnTPfR3SUYNdueRot8yJ1XJ1bTwJeB0mVZdtVqCBbD4/glWfD5gRufD3pYTjkgEfbdefO24gXewCY5glfGc+H9LDCY= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017751503839.8146914071731; Mon, 1 Jun 2020 06:22:31 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOS-0006kj-HI; Mon, 01 Jun 2020 13:22:20 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOR-0006jj-3Z for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:19 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id dfe0775a-a40a-11ea-8993-bc764e2007e4; Mon, 01 Jun 2020 13:22:00 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:59 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:58 -0700 X-Inumbo-ID: dfe0775a-a40a-11ea-8993-bc764e2007e4 IronPort-SDR: eYkBbxAJMifG3uobCYKDtbUo66UTDRrtjr6rSuqfo4WRxHjrY2Wu0njUu8noRvfReD46pBDn1i gCp64f2LXSDQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: 1cKPzYsYfgfjZpS+CJvwDNcWA1oIpmOii7uxMrS2NR4p369xdncM4O4Cb+skp6ZkpXnKytCb/w 9KI+RA07J8JQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887304" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 09/13] tools/libxl: libxl__build_hvm_fork Date: Mon, 1 Jun 2020 06:21:43 -0700 Message-Id: <688d79b662bce099e847329426dd6fd61479f8c2.1591017086.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Add libxl__build_hvm_fork function that performs only the steps needed for = VM forks, skipping a large chunk of libxl__build_hvm. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_dom.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 52d49437cc..28117f0907 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -741,14 +741,15 @@ static int hvm_build_set_params(xc_interface *handle,= uint32_t domid, libxl_domain_build_info *info, int store_evtchn, unsigned long *store_mfn, int console_evtchn, unsigned long *console= _mfn, - domid_t store_domid, domid_t console_domid) + domid_t store_domid, domid_t console_domid, + bool forked_vm) { struct hvm_info_table *va_hvm; uint8_t *va_map, sum; uint64_t str_mfn, cons_mfn; int i; =20 - if (info->type =3D=3D LIBXL_DOMAIN_TYPE_HVM) { + if (info->type =3D=3D LIBXL_DOMAIN_TYPE_HVM && !forked_vm) { va_map =3D xc_map_foreign_range(handle, domid, XC_PAGE_SIZE, PROT_READ | PROT_WRITE, HVM_INFO_PFN); @@ -1053,6 +1054,28 @@ out: return rc; } =20 +static int libxl__build_hvm_fork(libxl__gc *gc, uint32_t domid, + libxl_domain_config *d_config, + libxl__domain_build_state *state) +{ + libxl_ctx *ctx =3D libxl__gc_owner(gc); + libxl_domain_build_info *const info =3D &d_config->b_info; + + int rc =3D hvm_build_set_params(ctx->xch, domid, info, state->store_po= rt, + &state->store_mfn, state->console_port, + &state->console_mfn, state->store_domid, + state->console_domid, state->forked_vm); + + if ( rc ) + return rc; + + return xc_dom_gnttab_seed(ctx->xch, domid, true, + state->console_mfn, + state->store_mfn, + state->console_domid, + state->store_domid); +} + int libxl__build_hvm(libxl__gc *gc, uint32_t domid, libxl_domain_config *d_config, libxl__domain_build_state *state) @@ -1064,6 +1087,9 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid, struct xc_dom_image *dom =3D NULL; bool device_model =3D info->type =3D=3D LIBXL_DOMAIN_TYPE_HVM ? true := false; =20 + if (state->forked_vm) + return libxl__build_hvm_fork(gc, domid, d_config, state); + xc_dom_loginit(ctx->xch); =20 /* @@ -1188,7 +1214,7 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid, rc =3D hvm_build_set_params(ctx->xch, domid, info, state->store_port, &state->store_mfn, state->console_port, &state->console_mfn, state->store_domid, - state->console_domid); + state->console_domid, false); if (rc !=3D 0) { LOG(ERROR, "hvm build set params failed"); goto out; --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017759; cv=none; d=zohomail.com; s=zohoarc; b=HKlaS34iNa2akBs+ElHNkKP+5tW8kD1YolY0PEzbJmn7uGp++ZnV+iXxIkPEY9+zTiBv2/H9pQf3a9TxcPAnDy1FVkgrWcNpa+MIh+QsvK8zKQYBKfZkPitLDi6SkApXGuMrBIAIbgbZBAbuBtAUqCPt4Q0Og5tfo5S+ihi/nUo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017759; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cTSFowoMDOU3NJnSC8mcxhzs9WU+PyxAJlmN/my72JA=; b=RSrymMxy1IRh1QnD2PJ6ruR/O85Dr0xChOpvtqmMZBH5EMNMMA/4d1l7i+MZYWv5KDd4NUHpqAnXYQ2u+7/XLaFd5xyj+M9dQv0iM9RLFyMgxlIZoJR69ADYGTnoNj4aOU+7mqhR8Y92BcSKF6s1Y6H2EFCZZIxyTcniUApg3cQ= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017759117168.77886358738692; Mon, 1 Jun 2020 06:22:39 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOQ-0006in-7m; Mon, 01 Jun 2020 13:22:18 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOO-0006hy-Sl for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:16 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id dfe2868a-a40a-11ea-ab1b-12813bfff9fa; Mon, 01 Jun 2020 13:22:00 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:21:59 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:59 -0700 X-Inumbo-ID: dfe2868a-a40a-11ea-ab1b-12813bfff9fa IronPort-SDR: dtsesG4qtqvwgW/7QUL6kHCpoISg2oRiSj5CcYVOCaDPVN6eDl5mgR+gbDSRgnzOfrr2fiFbRh CuTM/oE78Ykg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: s05BZVyhXR9Xjv9kvjrGZR6UjA2OEFZ7oMD1wRB96A31J2ARk1FPu3vk378eDdVja7owOMV67R BePbFwgEmOUA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887309" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 10/13] tools/libxl: set QEMU saved_state from dm_restore_file Date: Mon, 1 Jun 2020 06:21:44 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" And make sure we don't remove the file once done. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl_create.c | 4 ++++ tools/libxl/libxl_dm.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index ab3ac096ee..27f790cae1 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -1602,6 +1602,7 @@ static void domcreate_rebuild_done(libxl__egc *egc, /* convenience aliases */ const uint32_t domid =3D dcs->guest_domid; libxl_domain_config *const d_config =3D dcs->guest_config; + libxl__domain_build_state *const state =3D &dcs->build_state; =20 if (ret) { LOGD(ERROR, domid, "cannot (re-)build domain: %d", ret); @@ -1609,6 +1610,9 @@ static void domcreate_rebuild_done(libxl__egc *egc, goto error_out; } =20 + if (d_config->dm_restore_file) + state->saved_state =3D GCSPRINTF("%s", d_config->dm_restore_file); + store_libxl_entry(gc, domid, &d_config->b_info); =20 libxl__multidev_begin(ao, &dcs->multidev); diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index f2dc5696b9..9b22836e12 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -3104,7 +3104,7 @@ static void device_model_spawn_outcome(libxl__egc *eg= c, =20 libxl__domain_build_state *state =3D dmss->build_state; =20 - if (state->saved_state) { + if (state->saved_state && !state->forked_vm) { ret2 =3D unlink(state->saved_state); if (ret2) { LOGED(ERROR, dmss->guest_domid, "%s: failed to remove device-m= odel state %s", --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017755; cv=none; d=zohomail.com; s=zohoarc; b=LxKaX0HuzT3280264H457EWQkwq0nm53C41IbIdvgDxnuPDtjV9FnTAoPwotrzpqn9KrZnDZN4X0OxrM2DD96/n0u/kzHpUoeaQ+pC5trU5xKMi+BwyI9LssegGxDmMRUNhVue6SRSKMcHqZn1RJWP8JNntWsYqmgWQBCAMXnRk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017755; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xYRXbMtQVl2dgxLjQrOPpFkTvZ7YayqJtvB+nFwsaqg=; b=ktGKHpvoK7rWhqHlFaXp6cCBYQOmbyX5+KtND16evFgTDOsIghHJc73fYvxnGdimaLZnCapT5Hp6Vl1U8F8h1vDZlHTPuux/06+pWbMZuApzPR0jrARKKcWqSCtqQl/ojzlEThzUgKU1+0RdsKI8BXmLnx2p5uIED+5dgpm8M2w= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 159101775581637.878833633370505; Mon, 1 Jun 2020 06:22:35 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOU-0006nZ-R8; Mon, 01 Jun 2020 13:22:22 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOT-0006m3-Sq for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:21 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id dfe2868b-a40a-11ea-ab1b-12813bfff9fa; Mon, 01 Jun 2020 13:22:01 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:22:00 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:21:59 -0700 X-Inumbo-ID: dfe2868b-a40a-11ea-ab1b-12813bfff9fa IronPort-SDR: Q/Mehip2yzTT5iUIc/0IwmuMBlveXybEMeJ7RqwJnMIMPACRFzKgM7ZMx39oZU8m6NtGRYSQlv WDdgPvOaQahQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: kpzPta1L2TR2Hn5MiCYUdBSMcpJ4Q9SEdlvlxVA9nx4wfpYjCo7pZ3UFLt34zhjd2pmBEwP4Si Ew8Pd/1LBd+w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887319" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 11/13] tools/libxl: Add VM forking public functions Date: Mon, 1 Jun 2020 06:21:45 -0700 Message-Id: <5c477725d701be72172a6aebf983a1bf956cec40.1591017086.git.tamas.lengyel@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/libxl/libxl.h | 10 +++++++++ tools/libxl/libxl_create.c | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 71709dc585..79792d6e29 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -2704,6 +2704,16 @@ static inline int libxl_qemu_monitor_command_0x04120= 0(libxl_ctx *ctx, */ int libxl_clear_domid_history(libxl_ctx *ctx); =20 +/* + * Experimental VM forking functions + */ +int libxl_domain_fork_vm(libxl_ctx *ctx, uint32_t pdomid, uint32_t *domid) + LIBXL_EXTERNAL_CALLERS_ONLY; + +int libxl_domain_fork_launch_dm(libxl_ctx *ctx, libxl_domain_config *d_con= fig, + uint32_t domid, + const libxl_asyncprogress_how *aop_console= _how) + LIBXL_EXTERNAL_CALLERS_ONLY; #endif /* LIBXL_H */ =20 /* diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 27f790cae1..9190e4e263 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -2339,6 +2339,50 @@ int libxl_domain_soft_reset(libxl_ctx *ctx, aop_console_how); } =20 +/* + * The parent domain is expected to be created with default settings for + * - max_evtch_port + * - max_grant_frames + * - max_maptrack_frames + */ +int libxl_domain_fork_vm(libxl_ctx *ctx, uint32_t pdomid, uint32_t *domid) +{ + int rc; + xc_dominfo_t info; + struct xen_domctl_createdomain create =3D {0}; + + if ( 1 !=3D xc_domain_getinfo(ctx->xch, pdomid, 1, &info) ) + return ERROR_INVAL; + + if ( info.domid !=3D pdomid || !info.hvm || !info.hap ) + return ERROR_INVAL; + + create.flags |=3D XEN_DOMCTL_CDF_hvm; + create.flags |=3D XEN_DOMCTL_CDF_hap; + create.flags |=3D XEN_DOMCTL_CDF_oos_off; + create.arch.emulation_flags =3D info.arch_config.emulation_flags; + create.ssidref =3D info.ssidref; + create.max_vcpus =3D info.max_vcpu_id + 1; + create.max_evtchn_port =3D 1023; + create.max_grant_frames =3D LIBXL_MAX_GRANT_FRAMES_DEFAULT; + create.max_maptrack_frames =3D LIBXL_MAX_MAPTRACK_FRAMES_DEFAULT; + + if ( (rc =3D xc_domain_create(ctx->xch, domid, &create)) ) + return rc; + + if ( (rc =3D xc_memshr_fork(ctx->xch, pdomid, *domid, false, false)) ) + xc_domain_destroy(ctx->xch, *domid); + + return rc; +} + +int libxl_domain_fork_launch_dm(libxl_ctx *ctx, libxl_domain_config *d_con= fig, + uint32_t domid, + const libxl_asyncprogress_how *aop_console= _how) +{ + return do_domain_create(ctx, d_config, &domid, -1, -1, 0, 0, aop_conso= le_how); +} + /* * Local variables: * mode: C --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017765; cv=none; d=zohomail.com; s=zohoarc; b=doLLziiRC9G4wo1SEDlqFgGjwTLtObtLv03l0jKnbiE1XjNLmXyGVsQ4PD1ZIABY2ESNL8MqXYq/rC/3IigG1Wk+rZa5zxHe3koo4idCxLwaoAio1On7z4a/HQdKe+vrpqatfLvZMgUVGzqUEJL4kF4c0NruWTaTC8iYuIXVMGY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017765; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=I07HqBCRopW+2GEjhENLArlC63fdqmgNB3/GS/uFaVI=; b=GsxvgIoOZ8r2vdfnqXnkDy9cyXxfbKzjBPcsrAPNuIeRsmBopSnISvNSNqjgtTWKdUVqTA0HQ6gJ/5Q6W8C2Z7uoWCtmMdHmYHn1X4E7Wdbpxwy6U7a6r6rV+75DyB3l5pbyeqvpuZ47KNj66txUzcf8tzylH3kGnojrtqgyAeA= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017765029737.3933612247922; Mon, 1 Jun 2020 06:22:45 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOc-0006wI-Ko; Mon, 01 Jun 2020 13:22:30 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOb-0006uV-3W for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:29 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e0867e0c-a40a-11ea-8993-bc764e2007e4; Mon, 01 Jun 2020 13:22:01 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:22:00 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:22:00 -0700 X-Inumbo-ID: e0867e0c-a40a-11ea-8993-bc764e2007e4 IronPort-SDR: swwNZtVJOd6u4QhrFDPrBdlamAA74Yp2isDHdnSQf0hnEp3F2CBbYsaV1Cfa8JHOrQUN+UoiPY 91wY0fFtIAWA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: 6fAP/sT786E5b+wVau0KnNKPiBUnslAnYMWwlPPMG2gDSjTHUFKlyREzr2kMpPdNsThtjKfXCD ptNRwxkDwFTA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887324" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 12/13] tools/xl: Add xl fork-vm command Date: Mon, 1 Jun 2020 06:21:46 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Adding the xl fork-vm command, compiled only on x86. Only the essential bits are available via this command to create a fork and launch QEMU for it. The command still allows to perform the task in a split-model, first creating t= he fork and launching QEMU only later. Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- tools/xl/Makefile | 2 +- tools/xl/xl.h | 4 ++ tools/xl/xl_cmdtable.c | 13 +++++ tools/xl/xl_forkvm.c | 122 ++++++++++++++++++++++++++++++++++++++++ tools/xl/xl_vmcontrol.c | 13 +++++ 5 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 tools/xl/xl_forkvm.c diff --git a/tools/xl/Makefile b/tools/xl/Makefile index af4912e67a..073222233b 100644 --- a/tools/xl/Makefile +++ b/tools/xl/Makefile @@ -15,7 +15,7 @@ LDFLAGS +=3D $(PTHREAD_LDFLAGS) CFLAGS_XL +=3D $(CFLAGS_libxenlight) CFLAGS_XL +=3D -Wshadow =20 -XL_OBJS-$(CONFIG_X86) =3D xl_psr.o +XL_OBJS-$(CONFIG_X86) =3D xl_psr.o xl_forkvm.o XL_OBJS =3D xl.o xl_cmdtable.o xl_sxp.o xl_utils.o $(XL_OBJS-y) XL_OBJS +=3D xl_parse.o xl_cpupool.o xl_flask.o XL_OBJS +=3D xl_vtpm.o xl_block.o xl_nic.o xl_usb.o diff --git a/tools/xl/xl.h b/tools/xl/xl.h index 06569c6c4a..4b4442e875 100644 --- a/tools/xl/xl.h +++ b/tools/xl/xl.h @@ -50,6 +50,8 @@ struct domain_create { int migrate_fd; /* -1 means none */ int send_back_fd; /* -1 means none */ char **migration_domname_r; /* from malloc */ + uint32_t dm_restore_domid; /* restore dm for this domid */ + const char *dm_restore_file; /* path to dm restore file */ }; =20 int create_domain(struct domain_create *dom_info); @@ -131,6 +133,8 @@ int main_restore(int argc, char **argv); int main_migrate_receive(int argc, char **argv); int main_save(int argc, char **argv); int main_migrate(int argc, char **argv); +int main_fork_vm(int argc, char **argv); +int main_fork_launch_dm(int argc, char **argv); #endif int main_dump_core(int argc, char **argv); int main_pause(int argc, char **argv); diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c index 08335394e5..523d955317 100644 --- a/tools/xl/xl_cmdtable.c +++ b/tools/xl/xl_cmdtable.c @@ -187,6 +187,19 @@ struct cmd_spec cmd_table[] =3D { "Restore a domain from a saved state", "- for internal use only", }, +#if defined(__i386__) || defined(__x86_64__) + { "fork-vm", + &main_fork_vm, 0, 1, + "Fork a domain from the running parent domid. Experimental. Most con= fig settings must match parent.", + "[options] ", + "-h Print this help.\n" + "-C Use config file for VM fork.\n" + "-Q Use qemu save file for VM fork.\n" + "--launch-dm Launch device model (QEMU) for VM fork= (default yes).\n" + "-p Do not unpause fork VM fork after oper= ation.\n" + "-d Enable debug messages.\n" + }, +#endif #endif { "dump-core", &main_dump_core, 0, 1, diff --git a/tools/xl/xl_forkvm.c b/tools/xl/xl_forkvm.c new file mode 100644 index 0000000000..5ab57ae41b --- /dev/null +++ b/tools/xl/xl_forkvm.c @@ -0,0 +1,122 @@ +/* + * Copyright 2020 Intel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation; version 2.1 only. with the special + * exception on linking described in file LICENSE. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "xl.h" +#include "xl_utils.h" +#include "xl_parse.h" + +int main_fork_vm(int argc, char **argv) +{ + int rc, debug =3D 0; + uint32_t domid_in =3D INVALID_DOMID, domid_out =3D INVALID_DOMID; + int launch_dm =3D 1; + bool pause =3D 0; + const char *config_file =3D NULL; + const char *dm_restore_file =3D NULL; + + int opt; + static struct option opts[] =3D { + {"launch-dm", 1, 0, 'l'}, + COMMON_LONG_OPTS + }; + + SWITCH_FOREACH_OPT(opt, "phdC:Q:l:", opts, "fork-vm", 1) { + case 'd': + debug =3D 1; + break; + case 'p': + pause =3D 1; + break; + case 'C': + config_file =3D optarg; + break; + case 'Q': + dm_restore_file =3D optarg; + break; + case 'l': + if ( !strcmp(optarg, "no") ) + launch_dm =3D 0; + if ( !strcmp(optarg, "yes") ) + launch_dm =3D 1; + if ( !strcmp(optarg, "late") ) + launch_dm =3D 2; + break; + default: + fprintf(stderr, "Unimplemented option(s)\n"); + return EXIT_FAILURE; + } + + if (argc-optind =3D=3D 1) { + domid_in =3D atoi(argv[optind]); + } else { + help("fork-vm"); + return EXIT_FAILURE; + } + + if (launch_dm && (!config_file || !dm_restore_file)) { + fprintf(stderr, "Currently you must provide both -C and -Q options= \n"); + return EXIT_FAILURE; + } + + if (launch_dm =3D=3D 2) { + domid_out =3D domid_in; + rc =3D EXIT_SUCCESS; + } else { + rc =3D libxl_domain_fork_vm(ctx, domid_in, &domid_out); + } + + if (rc =3D=3D EXIT_SUCCESS) { + if ( launch_dm ) { + struct domain_create dom_info; + memset(&dom_info, 0, sizeof(dom_info)); + dom_info.dm_restore_domid =3D domid_out; + dom_info.dm_restore_file =3D dm_restore_file; + dom_info.debug =3D debug; + dom_info.paused =3D pause; + dom_info.config_file =3D config_file; + dom_info.migrate_fd =3D -1; + dom_info.send_back_fd =3D -1; + rc =3D create_domain(&dom_info) < 0 ? EXIT_FAILURE : EXIT_SUCC= ESS; + } else if ( !pause ) + rc =3D libxl_domain_unpause(ctx, domid_out, NULL); + } + + if (rc =3D=3D EXIT_SUCCESS) + fprintf(stderr, "fork-vm command successfully returned domid: %u\n= ", domid_out); + else if ( domid_out !=3D INVALID_DOMID ) + libxl_domain_destroy(ctx, domid_out, 0); + + return rc; +} + +/* + * Local variables: + * mode: C + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c index 17b4514c94..508a7c70bb 100644 --- a/tools/xl/xl_vmcontrol.c +++ b/tools/xl/xl_vmcontrol.c @@ -676,6 +676,12 @@ int create_domain(struct domain_create *dom_info) =20 int restoring =3D (restore_file || (migrate_fd >=3D 0)); =20 +#if defined(__i386__) || defined(__x86_64__) + /* VM forking, restore dm for this domain */ + uint32_t dm_restore_domid =3D dom_info->dm_restore_domid; + const char *dm_restore_file =3D dom_info->dm_restore_file; +#endif + libxl_domain_config_init(&d_config); =20 if (restoring) { @@ -934,6 +940,13 @@ start: 0, autoconnect_console_how); domid =3D domid_soft_reset; domid_soft_reset =3D INVALID_DOMID; +#if defined(__i386__) || defined(__x86_64__) + } else if (dm_restore_file) { + d_config.dm_restore_file =3D dm_restore_file; + ret =3D libxl_domain_fork_launch_dm(ctx, &d_config, dm_restore_dom= id, + autoconnect_console_how); + domid =3D dm_restore_domid; +#endif } else { ret =3D libxl_domain_create_new(ctx, &d_config, &domid, 0, autoconnect_console_how); --=20 2.25.1 From nobody Tue May 7 06:43:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591017777; cv=none; d=zohomail.com; s=zohoarc; b=bkTOqlKaEZjLcBP5OouuoPNTvG/05u7aG13LXb63/S8xFmznlz1aFPi6T2lEIodYe0ZUmBn/jBlKaR8RiJyqajnwTCXXF/gAxyk+kxlUV7f83FvNiuuIUDuWnqTvraKPRXR+aeIu9Aol7LsHlOMeEINFHsKToxnid7acxsLihSQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591017777; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sdd1mMFPbsQmtXgXFWsrkSoE/ehcloopbpulSqzewUY=; b=WhbP4ou9i175dU3n/sS0PrgEHkSuLBjQwgQJuHCPofOFjq/S+Dv6PR7CjWzoA6HmSfGn9uSNogMg8vLtkNagem0bPgaSvUEN7DUEue3mlXq8YeKH77LcXl2ixhstgD1EG3M6a1JCHo6qz2u+zxRk1V/SxczQ38E/XMrAG2SdkaM= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1591017777461654.6525117531816; Mon, 1 Jun 2020 06:22:57 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOg-00071P-Vc; Mon, 01 Jun 2020 13:22:34 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jfkOg-00070X-3m for xen-devel@lists.xenproject.org; Mon, 01 Jun 2020 13:22:34 +0000 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e14aa228-a40a-11ea-8993-bc764e2007e4; Mon, 01 Jun 2020 13:22:02 +0000 (UTC) Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2020 06:22:01 -0700 Received: from alayek-mobl.amr.corp.intel.com (HELO ubuntu.localdomain) ([10.209.11.99]) by orsmga008.jf.intel.com with ESMTP; 01 Jun 2020 06:22:00 -0700 X-Inumbo-ID: e14aa228-a40a-11ea-8993-bc764e2007e4 IronPort-SDR: k2VvIlGHeuF5FHzawTp51swC4PNEusRm4BONrgxIy4XUSIsaVdm4B5QWKqUU3dwKOQqQwiyGkW OKZxsiPGsWJA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False IronPort-SDR: H1aV+v7D8iqBCn+kOObTwwAklxRSIFRI2v89rHm0OiToMY/GQuN4Op2Uk9MAHvIs6P9uNmgRXf XwA23kt8+UuA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,460,1583222400"; d="scan'208";a="303887330" From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Subject: [PATCH v19 for-4.14 13/13] tools/xl: document fork-vm command Date: Mon, 1 Jun 2020 06:21:47 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Ian Jackson , Tamas K Lengyel , Wei Liu Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Tamas K Lengyel Reviewed-by he sent last week --- docs/man/xl.1.pod.in | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/man/xl.1.pod.in b/docs/man/xl.1.pod.in index 09339282e6..9e87b0314f 100644 --- a/docs/man/xl.1.pod.in +++ b/docs/man/xl.1.pod.in @@ -708,6 +708,45 @@ above). =20 =3Dback =20 +=3Ditem B [I] I + +Create a fork of a running VM. The domain will be paused after the operat= ion +and remains paused while forks of it exist. Experimental and x86 only. +Forks can only be made of domains with HAP enabled and on Intel hardware. = The +parent domain must be created with the xl toolstack and its configuration = must +not manually define max_grant_frames, max_maptrack_frames or max_event_cha= nnels. + +B + +=3Dover 4 + +=3Ditem B<-p> + +Leave the forked VM paused after creating it. The parent always remains p= aused +while there are forks active from it and that's enforced by the hypervisor. + +=3Ditem B<--launch-dm> + +Specify whether the device model (QEMU) should be launched for the fork. = Late +launch allows to start the device model for an already running fork previo= usly +created with "--launch-dm no". + +=3Ditem B<-C> + +The config file to use when launching the device model. Currently require= d when +launching the device model. Most config settings MUST match the parent do= main +exactly, only change VM name, disk path and network configurations. + +=3Ditem B<-Q> + +The path to the QEMU save file to use when launching the device model. Cu= rrently +required when launching the device model. Generate it by connecting to th= e parent +domain's QMP socket and issuing: + { "execute": "qmp_capabilities" } + { "execute": "xen-save-devices-state", "arguments": { "filename": "/path/= to/qemu.save", "live": false} } + +=3Dback + =3Ditem B [I] =20 Display the number of shared pages for a specified domain. If no domain is --=20 2.25.1