From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id E3B641B1F4 for ; Mon, 8 Oct 2018 18:22:53 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181008162253euoutp0174ccba5d6aed29b118b3d273e0198759~brrEPEE-a0131601316euoutp01s for ; Mon, 8 Oct 2018 16:22:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181008162253euoutp0174ccba5d6aed29b118b3d273e0198759~brrEPEE-a0131601316euoutp01s DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1539015773; bh=EBZaP6DN6ZQHo4hXQ5ydOQm9NdDumu+y4vO7ubos8fY=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Xr7hubJp4oN5DMTklUbRau26A2pBa4lNsipvxaTRq671/iY57Q9m5e/1PqyMr0dv/ SnhTuWge0NEhayISG2uiE1Vvv14GjrwVfdt5SPRIe6rr7mxgctFt4GEXSwP5qZ7W5k DpXXePnuP15DmCD/612Xot6n1+2edaRoxKMNfNS4= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181008162252eucas1p1c2df73701804677c7166de3abce70be0~brrDWEe_W2288822888eucas1p1h; Mon, 8 Oct 2018 16:22:52 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id AF.60.04441.B548BBB5; Mon, 8 Oct 2018 17:22:51 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20181008162251eucas1p29fb65b432d9b202d635f37240baa2630~brrCTgLSL0635706357eucas1p2Z; Mon, 8 Oct 2018 16:22:51 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181008162250eusmtrp1c43d04dab8befc617f0a55bf66976acf~brrCCpIUF2288322883eusmtrp1y; Mon, 8 Oct 2018 16:22:50 +0000 (GMT) X-AuditID: cbfec7f2-5c9ff70000001159-ff-5bbb845b16fe Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id C3.C6.04284.A548BBB5; Mon, 8 Oct 2018 17:22:50 +0100 (BST) Received: from [106.109.129.180] (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181008162250eusmtip26b29376c87801b8673cd22c835a9477f~brrBbC4B01471814718eusmtip2n; Mon, 8 Oct 2018 16:22:50 +0000 (GMT) From: Ilya Maximets To: Maxime Coquelin , dev@dpdk.org, tiwei.bie@intel.com, zhihong.wang@intel.com, jfreimann@redhat.com, nicknickolaev@gmail.com, bruce.richardson@intel.com, alejandro.lucero@netronome.com Cc: dgilbert@redhat.com, stable@dpdk.org Date: Mon, 8 Oct 2018 19:25:16 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20181005142201eucas1p1359f104e0fc99b03019452350b44f631~avFrXXPTu2477524775eucas1p1A@eucas1p1.samsung.com> Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA02SfyyUcRzH+z7Pc/c86OxxmM+ksZstWfm15PmjUOuPa7ZW/1TrNhweP4qj O7//iAkhzNiS08Q4HDYrQudqOfLrmsb8XIhlQ8L8iE5NuXtY/nt93u/P+/v5fLYvhQs/8uyp KFk8K5dJo0V8c6Kt1zB0XpLZKfHQdF9khjZrMWaywY9Z22zHmIK2WZIZfWIgmaEmFcH05moJ Rl81TjD7OX9I5k36X4xpGS7G/C3Ee5UqnvitcoYUV2uXMXHp03lcvP5+jC8ubG1AN/n3zC+F sdFRiazc3TfYPLK93IDi1C7Jgxl6PB1tOOUhMwroC/DMsEDmIXNKSNcjqBnuRlyxjWBLtcvj ii0EhY1adBRZmRvEOKMOwW5r/2FkA8FSh87UZU3fgqX+eb6R+fQ5GGzsMTXZ0NMIRlUjJgOn XaB5bMEUIGhn6FWXk0a2pe9Cz1yVSRfQVjBQtkAY2YxOgq7NlzwuawcZ2+pDdoT21Re4cQDQ 4yT8WpwguHAiZA28O9z7GkzNfzpka/je10py7AD6knyC4zT4mrmMuIdyEJTq9jHO8IPWlaGD AHUw7Sw0a9w5+QoUFcxiRhloS5hcteL2sYTitlKckwWQky3kup3hd1cdzrE9TK1tkUVIpDx2 pfLYZcpjlyn/z61ERAOyYxMUMRGswlPGJrkppDGKBFmEW2hszGt08Ln0+32bHejnSIgO0RQS nRQ8l3VKhDxpoiIlRoeAwkU2Att2jUQoCJOmpLLy2CB5QjSr0KFTFCGyE9RWvJII6QhpPPuA ZeNY+ZGLUWb26SjLek05PRLwsEYWHM+7rnb1bboT/vmHY0skq/lQ74yhwMsl+s79+B2PldmG M24nqstnPa7KT5fdD1nz0hJbgQU+4cmPgkJ29kq8XX0DnOLSfJS5KtvUWP88L01PRba3/MbM 7W20vuFvqTWsWkxIvHLZ0MffnCwd8m0jv+CL6+4iQhEp9XTF5QrpPzYOsh5YAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOIsWRmVeSWpSXmKPExsVy+t/xe7pRLbujDea+0Lc492kZk8WNVfYW 7z5tZ7Lo3XaP3eJK+092i3NrlrJYHOvcw2JxeuE1Fot/HX/YLbY2/Gey2HxxEpMDt8evBUtZ PXbOusvusXjPSyaP6d0PmT3e77vK5tG3ZRVjAFuUnk1RfmlJqkJGfnGJrVK0oYWRnqGlhZ6R iaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsb22T8ZC1ZqVJxqOs3cwPhRoYuRk0NCwETi9YNT TF2MXBxCAksZJQ41/mCCSEhJ/Ph1gRXCFpb4c62LDaLoPaPE15/r2EESwgKBEi9OPGQDsdkE dCROrT7CCFIkInCHUWLLrDOMIAlmAQ2J9VefgNlCAluZJC4ccQOxeQXsJDq2PQMbxCKgInFs 5WwwW1QgQmL18hesEDWCEidnPmEBsTkFyiUOfprPCjFTXeLPvEvMELa4RNOXlVBxeYntb+cw T2AUmoWkfRaSlllIWmYhaVnAyLKKUSS1tDg3PbfYUK84Mbe4NC9dLzk/dxMjMFK3Hfu5eQfj pY3BhxgFOBiVeHhn5O2OFmJNLCuuzD3EKMHBrCTCK7p9V7QQb0piZVVqUX58UWlOavEhRlOg 5yYyS4km5wOTSF5JvKGpobmFpaG5sbmxmYWSOO95g8ooIYH0xJLU7NTUgtQimD4mDk6pBsa4 nVt6a/yvepy/MGdpCu/JQxdXvzaxYS+3MKj2lyjPNGEOYEy7lvncv3yjyZ7kuC0n95rI5q1b WpQTWpyYpvHibO7MA33rvZttpVkmn/uYGxG148YE2ZZ/rPW19vXs77df86nvudOWyPuf2zOv a66P9ryHH+s+iZ94XF19X303+zLxxzkeEkosxRmJhlrMRcWJANmxb7DqAgAA Message-Id: <20181008162251eucas1p29fb65b432d9b202d635f37240baa2630~brrCTgLSL0635706357eucas1p2Z@eucas1p2.samsung.com> X-CMS-MailID: 20181008162251eucas1p29fb65b432d9b202d635f37240baa2630 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20181004081624epcas5p245dd150d45f0bf4e8854b7ceaaa3ec49 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181004081624epcas5p245dd150d45f0bf4e8854b7ceaaa3ec49 References: <20181004081403.8039-1-maxime.coquelin@redhat.com> <20181004081403.8039-19-maxime.coquelin@redhat.com> <20181005142201eucas1p1359f104e0fc99b03019452350b44f631~avFrXXPTu2477524775eucas1p1A@eucas1p1.samsung.com> Subject: Re: [dpdk-dev] [PATCH v3 18/19] vhost: add flag to enable postcopy live-migration X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Oct 2018 16:22:54 -0000 Have you missed this mail while preparing v4? Best regards, Ilya Maximets. On 05.10.2018 17:24, Ilya Maximets wrote: > I think it'll be nice to have a warning in case zero-copy > and postcopy enabled at the same time. This warning will > clarify for users why postcopy is not enabled. > What do you think? > > Maybe we can also move the check from the previous patch to > rte_vhost_driver_register() like it done for VIRTIO_F_IN_ORDER ? > We can't change the set of enabled features in runtime anyway. > > Best regards, Ilya Maximets. > > On 04.10.2018 11:14, Maxime Coquelin wrote: >> Postcopy live-migration feature require the application to >> not populate the guest memory. As the vhost library cannot >> prevent the application to that (e.g. preventing the >> application to call mlockall()), the feature is disabled by >> default. >> >> The application should only enable the feature if it does not >> force the guest memory to be populated. >> >> In case the user passes the RTE_VHOST_USER_POSTCOPY_SUPPORT >> flag at registration but the feature was not compiled, >> registration fails. >> >> Signed-off-by: Maxime Coquelin >> --- >> doc/guides/prog_guide/vhost_lib.rst | 8 ++++++++ >> lib/librte_vhost/rte_vhost.h | 1 + >> lib/librte_vhost/socket.c | 19 +++++++++++++++++-- >> 3 files changed, 26 insertions(+), 2 deletions(-) >> >> diff --git a/doc/guides/prog_guide/vhost_lib.rst b/doc/guides/prog_guide/vhost_lib.rst >> index 77af4d775..c77df338f 100644 >> --- a/doc/guides/prog_guide/vhost_lib.rst >> +++ b/doc/guides/prog_guide/vhost_lib.rst >> @@ -106,6 +106,14 @@ The following is an overview of some key Vhost API functions: >> Enabling this flag with these Qemu version results in Qemu being blocked >> when multiple queue pairs are declared. >> >> + - ``RTE_VHOST_USER_POSTCOPY_SUPPORT`` >> + >> + Postcopy live-migration support will be enabled when this flag is set. >> + It is disabled by default. >> + >> + Enabling this flag should only be done when the calling application does >> + not pre-fault the guest shared memory, otherwise migration would fail. >> + >> * ``rte_vhost_driver_set_features(path, features)`` >> >> This function sets the feature bits the vhost-user driver supports. The >> diff --git a/lib/librte_vhost/rte_vhost.h b/lib/librte_vhost/rte_vhost.h >> index b3cc6990d..b26afbffa 100644 >> --- a/lib/librte_vhost/rte_vhost.h >> +++ b/lib/librte_vhost/rte_vhost.h >> @@ -28,6 +28,7 @@ extern "C" { >> #define RTE_VHOST_USER_NO_RECONNECT (1ULL << 1) >> #define RTE_VHOST_USER_DEQUEUE_ZERO_COPY (1ULL << 2) >> #define RTE_VHOST_USER_IOMMU_SUPPORT (1ULL << 3) >> +#define RTE_VHOST_USER_POSTCOPY_SUPPORT (1ULL << 4) >> >> /** Protocol features. */ >> #ifndef VHOST_USER_PROTOCOL_F_MQ >> diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c >> index c04d3d305..3df303be8 100644 >> --- a/lib/librte_vhost/socket.c >> +++ b/lib/librte_vhost/socket.c >> @@ -51,6 +51,8 @@ struct vhost_user_socket { >> uint64_t supported_features; >> uint64_t features; >> >> + uint64_t protocol_features; >> + >> /* >> * Device id to identify a specific backend device. >> * It's set to -1 for the default software implementation. >> @@ -731,7 +733,7 @@ rte_vhost_driver_get_protocol_features(const char *path, >> did = vsocket->vdpa_dev_id; >> vdpa_dev = rte_vdpa_get_device(did); >> if (!vdpa_dev || !vdpa_dev->ops->get_protocol_features) { >> - *protocol_features = VHOST_USER_PROTOCOL_FEATURES; >> + *protocol_features = vsocket->protocol_features; >> goto unlock_exit; >> } >> >> @@ -744,7 +746,7 @@ rte_vhost_driver_get_protocol_features(const char *path, >> goto unlock_exit; >> } >> >> - *protocol_features = VHOST_USER_PROTOCOL_FEATURES >> + *protocol_features = vsocket->protocol_features >> & vdpa_protocol_features; >> >> unlock_exit: >> @@ -863,6 +865,7 @@ rte_vhost_driver_register(const char *path, uint64_t flags) >> vsocket->use_builtin_virtio_net = true; >> vsocket->supported_features = VIRTIO_NET_SUPPORTED_FEATURES; >> vsocket->features = VIRTIO_NET_SUPPORTED_FEATURES; >> + vsocket->protocol_features = VHOST_USER_PROTOCOL_FEATURES; >> >> /* Dequeue zero copy can't assure descriptors returned in order */ >> if (vsocket->dequeue_zero_copy) { >> @@ -875,6 +878,18 @@ rte_vhost_driver_register(const char *path, uint64_t flags) >> vsocket->features &= ~(1ULL << VIRTIO_F_IOMMU_PLATFORM); >> } >> >> + if (!(flags & RTE_VHOST_USER_POSTCOPY_SUPPORT)) { >> + vsocket->protocol_features &= >> + ~(1ULL << VHOST_USER_PROTOCOL_F_PAGEFAULT); >> + } else { >> +#ifndef RTE_LIBRTE_VHOST_POSTCOPY >> + RTE_LOG(ERR, VHOST_CONFIG, >> + "Postcopy requested but not compiled\n"); >> + ret = -1; >> + goto out_mutex; >> +#endif >> + } >> + >> if ((flags & RTE_VHOST_USER_CLIENT) != 0) { >> vsocket->reconnect = !(flags & RTE_VHOST_USER_NO_RECONNECT); >> if (vsocket->reconnect && reconn_tid == 0) { >> > >