From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 419A042BCC; Mon, 29 May 2023 08:53:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3191B410DD; Mon, 29 May 2023 08:53:47 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 50D41410D7 for ; Mon, 29 May 2023 08:53:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685343225; x=1716879225; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=E5k5Ie+3lqSj7D/lPTfxciGZtVGCfVoOw1BK7eDpgDc=; b=XsNZ05TLiOWkCOEyZNNuPSZsASaIO7ru0i+8rtu72eo9JrF6emplTWuP Nibp4Nv7X1Ul/rZvXaYP9hZCsKpVnxsbfgT+E7MAwWSvowWWNZYjE+aDx lMrZKIsHYvH7S0E6iVlUoeTbsfzYFUflAULAlEjslWu1j6hv/mP6POuZN /+Sy/cg0tAo72LsL+5SZfbJ8gFsnTm3XOKBGseaQCjIbXMJQuZ7g+xLj1 fYroT5zOsAyb1D9n9f/Na59tUD11NVnoL22bqoXiCYVETrmqjq0tqkDfg DaehZKJrNdpLDYyvFTdEzoYNeIuHeEul8evvzULeWqpoSsF/7WLyZY3j9 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10724"; a="352141168" X-IronPort-AV: E=Sophos;i="6.00,200,1681196400"; d="scan'208";a="352141168" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 May 2023 23:53:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10724"; a="683457723" X-IronPort-AV: E=Sophos;i="6.00,200,1681196400"; d="scan'208";a="683457723" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga006.jf.intel.com with ESMTP; 28 May 2023 23:53:43 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Sun, 28 May 2023 23:53:42 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Sun, 28 May 2023 23:53:42 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Sun, 28 May 2023 23:53:42 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Sun, 28 May 2023 23:53:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E3+oeebIoYzc3GT11+4AftzLwvoDmhUIUIye9vsvu90Hhk2MKUUv1ZNSTpfbbQRvudWYEma3krYqS///AB6GzeukRl2vHqLWXsEL/lcSu71Rcm77g5hPo3ByeU48i//IVcyOE9Bx9CRwSxhFJMKNImkd0ngv3CfUffarwfVWU++7zQSR2+fLtfOcBoNJMf/y1IiRcuKOUEE29sprjsqzjTeVxxffRw7HtQUwd6LcHlPVipaTW7oy/GCsXmiryxIsT0mnZkrCHZJKxLL0atWo9aXE6nSk0UBXoPT33o5yEm0J6roda6CkSoszW7sf6Oel8A4AcYYhPj4Znioe1Ullsw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iodFzKx7U17NwZ47FmtVNOoRmbkmT3hzbCoUUVjHcvM=; b=KVRyNYBhWh7VEc+6uxSEFuQizr+8TMEACYM5BZmLSiBQ1CajRTH2LxGpiQVdIqDQ6/kdTVP8HN4XQOAJwVZ3i9m922ySEsm9hVqfqVfhkW8AkDqTmgzpnBL87q1C1EqJNTKU5IFgNpJIt6gN4bmkhbSfNhdbrTVoQTp+vVBcNHdYXQFp8TH9iRRiGKlAZmjLEe/gpbHObiSTaU4U0Wxd4L733kqq1JZIhMcXQHyI8vsuWQhzKnIefBVvVLMveza+oDGxIBVf8HxkQg9S8LAoHbpPXgwqk449hTeWpOnQvspiZvICxP4n1UPhZcYD1tmXl7Xv+YmadrLMdLx65BbreA== 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 Received: from SN6PR11MB3504.namprd11.prod.outlook.com (2603:10b6:805:d0::17) by PH7PR11MB8551.namprd11.prod.outlook.com (2603:10b6:510:30d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.22; Mon, 29 May 2023 06:53:40 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::e427:f0a6:8472:d0f6]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::e427:f0a6:8472:d0f6%7]) with mapi id 15.20.6433.020; Mon, 29 May 2023 06:53:40 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "david.marchand@redhat.com" , "mkp@redhat.com" , "fbl@redhat.com" , "jasowang@redhat.com" , "Liang, Cunming" , "Xie, Yongji" , "echaudro@redhat.com" , "eperezma@redhat.com" , "amorenoz@redhat.com" , "lulu@redhat.com" Subject: RE: [PATCH v3 28/28] vhost: add VDUSE device stop Thread-Topic: [PATCH v3 28/28] vhost: add VDUSE device stop Thread-Index: AQHZjyXVxjpEvRWqv0S0XPLyELo9369w1fJw Date: Mon, 29 May 2023 06:53:39 +0000 Message-ID: References: <20230525162551.70359-1-maxime.coquelin@redhat.com> <20230525162551.70359-29-maxime.coquelin@redhat.com> In-Reply-To: <20230525162551.70359-29-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR11MB3504:EE_|PH7PR11MB8551:EE_ x-ms-office365-filtering-correlation-id: 992db2a5-bba7-413a-5d91-08db60116f3e x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rDS8m8VyPo1voMfCwCL1fUPbsERYRcaoY517uF5+dwQCW3mosjNwVAMXMTmNoIKUgU1ZaZjv020J68oYVR931wIvO+Iyy0TZgvD2JsAaXRIcP6SNUNYGxB+U+bU+Ls3u9ijvbWdiuBRo+dNVWdcQwD4q/YZidHniQAlceYHrR7ZwhDsEVTPl4athVRueBy0ssfhGkhPFspNbf1sjFE8Gwpa4v3UHmq0BhAdrZLrtKEmX5V8e+eqwvenjmKsp9jVYgQrX/G8Y5rR4FRuEtJC1GlLbv5kUZb378OXJw52c+O5PbenkZsYWebFnSp1IsJdjurfC1VbvG//8wM2/3kEUM1fdqcuIzr0hf6IRVa8+AecLtaYHaMkNSbyxOwNZOvfNnRVvm0hu5ic+4fpokOvjr+Dw7DfTMUV3Hw7l8+XNSb+ufjqL7uLhp5RGRcFnTqW1SPM9v1ttxkWDLuTj/xOmihfy1X2pAx4E/zLKMjFRGqIlw7kDRWF+EAp4m8pdaQPaK2O0UelemW3a9lcQsv4/1Dfpp9GYPX9Dap/pdvtyUmF1aLcI9ZfADEBtOMlhSActhdaBNfaqhVpVGIdhYWgmzKydqJN6Mg6G+ka4tI+nuLzAfHSQUcN8PUAkz5tMgdwmy9uWMk5a+EMTQ0zdPjBnSA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3504.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(136003)(376002)(346002)(396003)(366004)(39860400002)(451199021)(83380400001)(33656002)(71200400001)(5660300002)(316002)(66946007)(76116006)(64756008)(66446008)(66476007)(66556008)(7416002)(52536014)(38070700005)(82960400001)(921005)(122000001)(8676002)(8936002)(41300700001)(38100700002)(7696005)(86362001)(55016003)(110136005)(53546011)(2906002)(6506007)(9686003)(186003)(478600001)(26005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?yzIFUfj2Wyb+LX9yTs/VXpE7JhhgBWb6iTvTGwA3uYS5F1hL77JTLpO8iX5T?= =?us-ascii?Q?vB4j6RY5NO933P6ShR8WGNfuWQUGPprQTYcQOedPCCY4dOAJCXOHCS3T/fgj?= =?us-ascii?Q?khAqh8KEQ00kZd8o2FfoanWd3hBSMp6MXFKwGTQP8KDo7VYzTjM559wCVlkL?= =?us-ascii?Q?i4zAZ1PaQcZ6KVKZxs1rHVEza8f8YI0tMOWzjTouL0XFDULHiVJgqhRA9vcY?= =?us-ascii?Q?XzJTTvCAIuUpa+5nJNPg+KrpObIXP5oVcWPoqcdvbnZ8mZglOMGVuPaplNRz?= =?us-ascii?Q?/damDMrT+CdqPre+HX7tN5Qdf25BKSAZ5KiO3I6Z9cX/v3ah51rBE+5ND4Ij?= =?us-ascii?Q?O00c1xU1tzFEDOAhobdRSSeq2//Z5vHWlzqVUeJxTZ48zmU+mYcqxvJgNuNl?= =?us-ascii?Q?RjrB6VGWH0jBfZQVWgjPYyBFJiYIWQSb1wEN+WYSS/VD0/QGdqiDIDTzzmJT?= =?us-ascii?Q?3gnYK6OJaR+58WjTfWt9dbeIF5qKqhcFlh7NA0AhvQoO3hGQHwqOljC38N+8?= =?us-ascii?Q?UNEeKJ16SLobILthA4ynZJyFIP55TMZebmXF5itmsEE/76CoEdmXS7LWYH0o?= =?us-ascii?Q?BaERrHEduuue+oTUcnSJ8bqyGpGFqBIWnr/aa8or3kP0O9ZWTyiX9MU7LPZL?= =?us-ascii?Q?EP/4NDLtdDk1S4eZ/wu+sU4IeXvecw4UMxkbMdNNqIm0ZY0A6dm/IUnGRGBa?= =?us-ascii?Q?bB0xycgFO4zQ82NC3nLGV/phdMscUNPzlTBRcn8OqHjwh7YUmLVYnq88NqMw?= =?us-ascii?Q?PZw49i7v12fc4YvlTMKDwX15p8KNU33z085rUvp7otPlGbdIYn9uShbxRFwL?= =?us-ascii?Q?Pn2I3U56whuynUxKZjHh6P//I/+ETPugr6VSsXE5RFPfpAAYdVJ/xJylaJpn?= =?us-ascii?Q?lZ+W/PcE6kkNbEHCfEg+K+A7q29DqdG2NE/beHvx6FCW/IL7gMn8T4tw0RNx?= =?us-ascii?Q?VSRPtiW/X8SPXcxL98Xbn6gD2OfoXNIiDeQWVFAVAEBHwjff+nxdmGlnEys7?= =?us-ascii?Q?1zeHUV0tW85SmPegxIjCoxgIfZNtm/PjAxQNkC4WtR9PPVsRLQTfTlvmmNwM?= =?us-ascii?Q?IQnWLdsSheeuFu/E6wkxvbTem1yXSoHDJxztYy8gKs9saD4Asbbi9VhRuVs3?= =?us-ascii?Q?NUK7k9qCKzZHgaxMVXNOr2ZMUwByy/LZV/Wma5TSrXdVeru0CoFYu7DI/Qxx?= =?us-ascii?Q?zoH+qgByM9zA9sYtPE9NFn+i8OPUc1VcVjLneGYh2zJVjP8Q/DN/7gKcr7QY?= =?us-ascii?Q?Rty4wRucWFJ78RLtxHzkCn+ERFPOsFp3jCq15sqfwAGCtXU6Hu9dvTjacjBB?= =?us-ascii?Q?VD948qDoKTmRuOY3JbnCb97qIEzEqgH5qGaw+Gof0I4G2HlY5rAH22pqntlu?= =?us-ascii?Q?CWahePLJEKFJW8J4p6bCNvVrXnEafxS/2BWlRNy6wkkcAsMIrsm0AI21Xh8V?= =?us-ascii?Q?bQWhU/LLhsCPfwDtZU34ciZICxrt6NM3Bumir+ONebWOzsZpLSIfLSxcHOed?= =?us-ascii?Q?mvzQdYfpHyR0W9PmVsEN67eqf1JclDEi/Epsb6Q1q83ISLFsw5hR4BFMRkax?= =?us-ascii?Q?4k/gJeqshINff6gcWTOOHi5oEdAx59a3Sq8ND5lA?= 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: SN6PR11MB3504.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 992db2a5-bba7-413a-5d91-08db60116f3e X-MS-Exchange-CrossTenant-originalarrivaltime: 29 May 2023 06:53:40.0108 (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: SHhQVTNwROvFJ0v8LNsj55NU6TpgKBGwkbcqWxz5uurjoNlzUNZJQpIq2hAngbU1YTMPYLBt+W6DhMYNXoMgMQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8551 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Hi Maxime, > -----Original Message----- > From: Maxime Coquelin > Sent: Friday, May 26, 2023 12:26 AM > To: dev@dpdk.org; Xia, Chenbo ; > david.marchand@redhat.com; mkp@redhat.com; fbl@redhat.com; > jasowang@redhat.com; Liang, Cunming ; Xie, Yongj= i > ; echaudro@redhat.com; eperezma@redhat.com; > amorenoz@redhat.com; lulu@redhat.com > Cc: Maxime Coquelin > Subject: [PATCH v3 28/28] vhost: add VDUSE device stop >=20 > This patch adds VDUSE device stop and cleanup of its > virtqueues. >=20 > Signed-off-by: Maxime Coquelin > --- > doc/guides/rel_notes/release_23_07.rst | 6 +++ > lib/vhost/vduse.c | 72 +++++++++++++++++++++++--- > 2 files changed, 70 insertions(+), 8 deletions(-) >=20 > diff --git a/doc/guides/rel_notes/release_23_07.rst > b/doc/guides/rel_notes/release_23_07.rst > index fa889a5ee7..66ba9e25dd 100644 > --- a/doc/guides/rel_notes/release_23_07.rst > +++ b/doc/guides/rel_notes/release_23_07.rst > @@ -60,6 +60,12 @@ New Features > Introduced ``rte_vhost_driver_set_max_queue_num()`` to be able to limi= t > the > maximum number of supported queue pairs, required for VDUSE support. >=20 > +* **Added VDUSE support into Vhost library Missing '.**' at the end like patch 15 Thanks, Chenbo > + > + VDUSE aims at implementing vDPA devices in userspace. It can be used a= s > an > + alternative to Vhost-user when using Vhost-vDPA, but also enable > providing a > + virtio-net netdev to the host when using Virtio-vDPA driver. > + >=20 > Removed Items > ------------- > diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c > index 699cfed9e3..f421b1cf4c 100644 > --- a/lib/vhost/vduse.c > +++ b/lib/vhost/vduse.c > @@ -252,6 +252,44 @@ vduse_vring_setup(struct virtio_net *dev, unsigned > int index) > } > } >=20 > +static void > +vduse_vring_cleanup(struct virtio_net *dev, unsigned int index) > +{ > + struct vhost_virtqueue *vq =3D dev->virtqueue[index]; > + struct vduse_vq_eventfd vq_efd; > + int ret; > + > + if (vq =3D=3D dev->cvq && vq->kickfd >=3D 0) { > + fdset_del(&vduse.fdset, vq->kickfd); > + fdset_pipe_notify(&vduse.fdset); > + } > + > + vq_efd.index =3D index; > + vq_efd.fd =3D VDUSE_EVENTFD_DEASSIGN; > + > + ret =3D ioctl(dev->vduse_dev_fd, VDUSE_VQ_SETUP_KICKFD, &vq_efd); > + if (ret) > + VHOST_LOG_CONFIG(dev->ifname, ERR, "Failed to cleanup kickfd > for VQ %u: %s\n", > + index, strerror(errno)); > + > + close(vq->kickfd); > + vq->kickfd =3D VIRTIO_UNINITIALIZED_EVENTFD; > + > + vring_invalidate(dev, vq); > + > + rte_free(vq->batch_copy_elems); > + vq->batch_copy_elems =3D NULL; > + > + rte_free(vq->shadow_used_split); > + vq->shadow_used_split =3D NULL; > + > + vq->enabled =3D false; > + vq->ready =3D false; > + vq->size =3D 0; > + vq->last_used_idx =3D 0; > + vq->last_avail_idx =3D 0; > +} > + > static void > vduse_device_start(struct virtio_net *dev) > { > @@ -304,6 +342,23 @@ vduse_device_start(struct virtio_net *dev) > } > } >=20 > +static void > +vduse_device_stop(struct virtio_net *dev) > +{ > + unsigned int i; > + > + VHOST_LOG_CONFIG(dev->ifname, INFO, "Stopping device...\n"); > + > + vhost_destroy_device_notify(dev); > + > + dev->flags &=3D ~VIRTIO_DEV_READY; > + > + for (i =3D 0; i < dev->nr_vring; i++) > + vduse_vring_cleanup(dev, i); > + > + vhost_user_iotlb_flush_all(dev); > +} > + > static void > vduse_events_handler(int fd, void *arg, int *remove __rte_unused) > { > @@ -311,6 +366,7 @@ vduse_events_handler(int fd, void *arg, int *remove > __rte_unused) > struct vduse_dev_request req; > struct vduse_dev_response resp; > struct vhost_virtqueue *vq; > + uint8_t old_status; > int ret; >=20 > memset(&resp, 0, sizeof(resp)); > @@ -339,10 +395,15 @@ vduse_events_handler(int fd, void *arg, int *remove > __rte_unused) > case VDUSE_SET_STATUS: > VHOST_LOG_CONFIG(dev->ifname, INFO, "\tnew status: 0x%08x\n", > req.s.status); > + old_status =3D dev->status; > dev->status =3D req.s.status; >=20 > - if (dev->status & VIRTIO_DEVICE_STATUS_DRIVER_OK) > - vduse_device_start(dev); > + if ((old_status ^ dev->status) & > VIRTIO_DEVICE_STATUS_DRIVER_OK) { > + if (dev->status & VIRTIO_DEVICE_STATUS_DRIVER_OK) > + vduse_device_start(dev); > + else > + vduse_device_stop(dev); > + } >=20 > resp.result =3D VDUSE_REQ_RESULT_OK; > break; > @@ -560,12 +621,7 @@ vduse_device_destroy(const char *path) > if (vid =3D=3D RTE_MAX_VHOST_DEVICE) > return -1; >=20 > - if (dev->cvq && dev->cvq->kickfd >=3D 0) { > - fdset_del(&vduse.fdset, dev->cvq->kickfd); > - fdset_pipe_notify(&vduse.fdset); > - close(dev->cvq->kickfd); > - dev->cvq->kickfd =3D VIRTIO_UNINITIALIZED_EVENTFD; > - } > + vduse_device_stop(dev); >=20 > fdset_del(&vduse.fdset, dev->vduse_dev_fd); > fdset_pipe_notify(&vduse.fdset); > -- > 2.40.1