From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4033EA04E6; Wed, 9 Dec 2020 15:16:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C6AE8C9BE; Wed, 9 Dec 2020 15:16:23 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 3F767C9AC for ; Wed, 9 Dec 2020 15:16:20 +0100 (CET) IronPort-SDR: J7ybft8T6jEfy8vCTdgQ+kTUgf9zgetx+McVmYnt4Fv7/HOHSD1FiWIvg30l+VmxmQd14+Bn07 PyP8gHJP4hTw== X-IronPort-AV: E=McAfee;i="6000,8403,9829"; a="161842257" X-IronPort-AV: E=Sophos;i="5.78,405,1599548400"; d="scan'208";a="161842257" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Dec 2020 06:16:09 -0800 IronPort-SDR: /1hVWYg/NaO1OdN2jDptjntauKsiV9XjI6zi6CtfPwMLvtnj7vwjm8c6QHrsEhRqDJYLMKiN6g 2fdsSt32fHlg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,405,1599548400"; d="scan'208";a="370835252" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga002.fm.intel.com with ESMTP; 09 Dec 2020 06:16:09 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 9 Dec 2020 06:16:09 -0800 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 9 Dec 2020 06:16:08 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 9 Dec 2020 06:16:08 -0800 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 9 Dec 2020 06:16:08 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MQ0Y+ZTNArr+BnWweArXheRt1oITUxDryXy7VWIgfpGCVYPwbyWPFBQ2KAXle5v1AGbE5NoQ9uRUXSuuaLLksLV0sVXqzq3EJiMjwvVBlJMLcAQ1UPoeRiGISyLVUuTfh0uFY/nkoOSGCinmVoX5fo2L9p+2WvYtQ6fHOXSjGuHDYWnAR/n39nb9x28AbbFn6F1r/2bE2kmKcG4agFypWSF6cYRiXHCDfe2tgqfARnxMdqEQsc18C7orJ9RbcKmo1IbmW+tCQLosmDi6ZKer2TizeOXzn1RNQQOB1DAjlOONAju1hgZWSPn9HgcpZ7YXRYxqVDp+RrtH7u53WQfP3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MpRIm4kNXOtO56rXkqE6aKhwlMy9dS5HkN8GMM2/jNo=; b=juBPM2xbHHwLfIiTSzBvCUIOIgAtyPY236pDZgTnsShd7J4eGMb66nVkuZW4j7SkWHy2AmY6PRcN7zVQKcgj/PJ40xGyIFvvlOd77e/XEP6d5J8I0VntOpGnVno88vZ8H6/4OrPfzM1IfgNkYXmhgcLTDItFwVr4pqPJARsOb4T5aN7wnN+7rUTlPQkR9dm/PNYRtLpOk64bemsNIdbyY+kfoQmHJr8WaG1cQvpDCmx+dKdT0PKKcCg9Rqj/tL8SgmmxoUQ7pyrlkJFLirFuTSwCBUytobF8s7lUxnZlK9E0mpSd1Bl40oUxqPaSBB9TdH7RDMgs0GYTrRQwc0e3sg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MpRIm4kNXOtO56rXkqE6aKhwlMy9dS5HkN8GMM2/jNo=; b=GzapHkT/NmOjBigjtIIzgOS8CAygdCWjCaGjkOzpPKsMMClSziu1M1BIfB61jHkI/a+2Q3HILUYZgCWIOfOx3TUyi1h6NExZbRXI7m2SGHR89ybsh+GJrtt7s5nAb2kBSRxuJowvtvraxWBDjmFyYvjHffPJKKBNuYpqs84eQcI= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3581.namprd11.prod.outlook.com (2603:10b6:208:f0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12; Wed, 9 Dec 2020 14:16:07 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::74f2:ba7f:cb22:5272]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::74f2:ba7f:cb22:5272%7]) with mapi id 15.20.3632.023; Wed, 9 Dec 2020 14:16:07 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "Ding, Xuan" Thread-Topic: [PATCH 21.02 2/3] vhost: refactor postcopy registration Thread-Index: AQHWvAzB4igIb5+io0OndmA5JsmVsKnu5jjg Date: Wed, 9 Dec 2020 14:16:07 +0000 Message-ID: References: <20201116113620.587073-1-maxime.coquelin@redhat.com> <20201116113620.587073-3-maxime.coquelin@redhat.com> In-Reply-To: <20201116113620.587073-3-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.218] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d03177fc-e14a-4014-5daa-08d89c4cf873 x-ms-traffictypediagnostic: MN2PR11MB3581: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UhStUu2Vyrh02qsm5zFfmG5wY78LoagilBtzphgldRuTt1aqIqgebpo2BonKFvTdmSGwQMiDhK7LRf3EuzmhAoluxejd7czFWaCFRbVxuh5C3rXTS5j8Wft0b1sFhzbEUYTwNQwSGwGnJ8GxL+GCT4AdJkpk+NsEIcUzBwYriQ93FUX5DP3/IUH5Bcqarpw+ljUNbCvuXdq6bkpIeNrvjHeyH/pldE2+sR/4n1fwUV2AlBM8D59WiJkW5xaMvfc6K3ou3hI7SluEq7pVACYPGU5vTu5jqKYkEF6QoW2STe8dWx5do02ibJe3dUJPPjqBnGCXFoQNW8BEcNMjc4gjjQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(346002)(376002)(136003)(55016002)(33656002)(6636002)(9686003)(2906002)(71200400001)(8676002)(8936002)(6506007)(53546011)(64756008)(66476007)(5660300002)(86362001)(7696005)(66946007)(26005)(76116006)(83380400001)(110136005)(52536014)(186003)(508600001)(66556008)(66446008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?zphWcTKrXRHdQEjR82Fis/rtLoq3AVdQTQXuP/LguFhvbTUroY7TSbDopDN1?= =?us-ascii?Q?eImeYP02JJc2BYFBjXr3440tkr7DPGb34UTpd3olP6yHUOwturPG+CZhDVTL?= =?us-ascii?Q?lCZJ/QqH3PR7YS8dl8B31TbLQFfVdwKemU7iZIrjyOqu81QGIdD09UXIagCP?= =?us-ascii?Q?v/HBqQ+xUBbSvxMbMnBS4531qgQAW4XM955f2ISv1voaBgyo8TBVGcuUHf30?= =?us-ascii?Q?qYQ9lC9wFBFpMZZZgVQeUXSs43+73+MJ/LpjQeo50gSVKRRxBwha4ANrLyWc?= =?us-ascii?Q?K8FqwXu2Kp4TfkiyuDjS3zp3cSP5fAJKVH8QpmD6Ulnz2D8Go1WsKUudGoZG?= =?us-ascii?Q?HQRCGMhYficClh/BEsJcts6PNC6Bi+BktE/m+sFXs/bzSa/TjriGscw/MpIi?= =?us-ascii?Q?QMqvBy8JCrYa+ti2S4cndgoEu8ZVfB0spCBfuRMl0DKYrWfWZQ33Cbst2RCY?= =?us-ascii?Q?eUPKeELzzxGrlTn3E2BtdPaDym0Ugq+ynzNfrwxJo4kg7A5ZFyFi8luy27Tl?= =?us-ascii?Q?jbHCPexkfcvac57SbWYwSnNFmDMKM8m8lXU3rUCRLlW+JYRxTTH8fQ0t72S/?= =?us-ascii?Q?uHEVh+E/xX/xNa8M6pougQ9g7R+bMxufJlyl9c/LYl9w6Qys/cYnh6Y+ChtO?= =?us-ascii?Q?5KbxtCLoeafYa+fvJRNZ3gThpkv7bG8pVmLOOls6A0hMGZGjoSMeDkFjBKDW?= =?us-ascii?Q?FjEufpWbKuAcSjcXa/hZgPxvIS44hDjYyrC8YUrzuwyJq54OxqJm3IaujCy5?= =?us-ascii?Q?B8F1SYByG0iz3cyJuaBPLln20xy1HrxAi1U7T6TAolwqLBU3SdCEikxpiqEd?= =?us-ascii?Q?caSxE5bIBvDXu6D2KOfeFaBs/sKP0FPn+XcPAMf+pFzYWZWcgzJcIza1QcEy?= =?us-ascii?Q?aqgq2WL7TZ8BItME14oVrVF8X4+IusQ3zsID+b3BVxGVu73ihhnnzkkqxq3w?= =?us-ascii?Q?afhXNur47CtmMkwpCQU3kgz68Mddf/gy8d0VDPK/wy8=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4063.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d03177fc-e14a-4014-5daa-08d89c4cf873 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Dec 2020 14:16:07.1893 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FsYRNeAAOFU03yZLNTqUyefcriDPBWDekY//PkHaUMH3x3s2n29ScljiB1G80knUq0hRo4LfoUnOsprDQFv/Bg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3581 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 21.02 2/3] vhost: refactor postcopy registration 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > -----Original Message----- > From: Maxime Coquelin > Sent: Monday, November 16, 2020 7:36 PM > To: dev@dpdk.org; Xia, Chenbo ; Ding, Xuan > > Cc: Maxime Coquelin > Subject: [PATCH 21.02 2/3] vhost: refactor postcopy registration >=20 > This patch moves the registration of postcopy to a > dedicated function, with the goal of simplifying > VHOST_USER_SET_MEM_TABLE request handling function. >=20 > Signed-off-by: Maxime Coquelin > --- > lib/librte_vhost/vhost_user.c | 98 +++++++++++++++++++++-------------- > 1 file changed, 58 insertions(+), 40 deletions(-) >=20 > diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.= c > index b8a9e41a2d..2ee22ef76d 100644 > --- a/lib/librte_vhost/vhost_user.c > +++ b/lib/librte_vhost/vhost_user.c > @@ -1041,6 +1041,62 @@ vhost_user_postcopy_region_register(struct > virtio_net *dev, > } > #endif >=20 > +static int > +vhost_user_postcopy_register(struct virtio_net *dev, int main_fd, > + struct VhostUserMsg *msg) > +{ > + struct VhostUserMemory *memory; > + struct rte_vhost_mem_region *reg; > + VhostUserMsg ack_msg; > + uint32_t i; > + > + if (!dev->postcopy_listening) > + return 0; > + > + /* > + * We haven't a better way right now than sharing > + * DPDK's virtual address with Qemu, so that Qemu can > + * retrieve the region offset when handling userfaults. > + */ > + memory =3D &msg->payload.memory; > + for (i =3D 0; i < memory->nregions; i++) { > + reg =3D &dev->mem->regions[i]; > + memory->regions[i].userspace_addr =3D reg->host_user_addr; > + } > + > + /* Send the addresses back to qemu */ > + msg->fd_num =3D 0; > + send_vhost_reply(main_fd, msg); > + > + /* Wait for qemu to acknolwedge it's got the addresses > + * we've got to wait before we're allowed to generate faults. > + */ > + if (read_vhost_message(main_fd, &ack_msg) <=3D 0) { > + VHOST_LOG_CONFIG(ERR, > + "Failed to read qemu ack on postcopy set-mem- > table\n"); > + return -1; > + } > + > + if (validate_msg_fds(&ack_msg, 0) !=3D 0) > + return -1; > + > + if (ack_msg.request.master !=3D VHOST_USER_SET_MEM_TABLE) { > + VHOST_LOG_CONFIG(ERR, > + "Bad qemu ack on postcopy set-mem-table (%d)\n", > + ack_msg.request.master); > + return -1; > + } > + > + /* Now userfault register and we can use the memory */ > + for (i =3D 0; i < memory->nregions; i++) { > + reg =3D &dev->mem->regions[i]; > + if (vhost_user_postcopy_region_register(dev, reg) < 0) > + return -1; > + } > + > + return 0; > +} > + > static int > vhost_user_set_mem_table(struct virtio_net **pdev, struct VhostUserMsg > *msg, > int main_fd) > @@ -1215,48 +1271,10 @@ vhost_user_set_mem_table(struct virtio_net **pdev= , > struct VhostUserMsg *msg, > mmap_size, > alignment, > mmap_offset); > - > - if (dev->postcopy_listening) { > - /* > - * We haven't a better way right now than sharing > - * DPDK's virtual address with Qemu, so that Qemu can > - * retrieve the region offset when handling userfaults. > - */ > - memory->regions[i].userspace_addr =3D > - reg->host_user_addr; > - } > } > - if (dev->postcopy_listening) { > - /* Send the addresses back to qemu */ > - msg->fd_num =3D 0; > - send_vhost_reply(main_fd, msg); > - > - /* Wait for qemu to acknolwedge it's got the addresses > - * we've got to wait before we're allowed to generate faults. > - */ > - VhostUserMsg ack_msg; > - if (read_vhost_message(main_fd, &ack_msg) <=3D 0) { > - VHOST_LOG_CONFIG(ERR, > - "Failed to read qemu ack on postcopy set-mem- > table\n"); > - goto free_mem_table; > - } > - > - if (validate_msg_fds(&ack_msg, 0) !=3D 0) > - goto free_mem_table; > - > - if (ack_msg.request.master !=3D VHOST_USER_SET_MEM_TABLE) { > - VHOST_LOG_CONFIG(ERR, > - "Bad qemu ack on postcopy set-mem-table (%d)\n", > - ack_msg.request.master); > - goto free_mem_table; > - } >=20 > - /* Now userfault register and we can use the memory */ > - for (i =3D 0; i < memory->nregions; i++) > - if (vhost_user_postcopy_region_register(dev, > - &dev->mem->regions[i]) < 0) > - goto free_mem_table; > - } > + if (vhost_user_postcopy_register(dev, main_fd, msg) < 0) > + goto free_mem_table; >=20 > for (i =3D 0; i < dev->nr_vring; i++) { > struct vhost_virtqueue *vq =3D dev->virtqueue[i]; > -- > 2.26.2 Reviewed-by: Chenbo Xia