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 03659A00C2; Mon, 26 Sep 2022 08:07:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3FFF400D7; Mon, 26 Sep 2022 08:07:04 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 43750400D5 for ; Mon, 26 Sep 2022 08:07:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664172423; x=1695708423; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=0xhYqmAYCRM6ILgiSCMOZ/IB6TSIa/NYTXnVcZl3o4g=; b=cJGCPz3miU/NEoK6e0cTNu02LpQiWbD76WAFoK+Yc5Lx2nUT4skX0Ydd 0ZOJKVKpFe/IYAIMVkcIPDXyQcCYzYKIPWNseq+XaTQmfDfGmYI6lfT6N 3AlLha06DHuBOMGrgwfdHJNBkKLXmKCCaZlmT8PZoQNGdRcTyy6zDKLCi 3JDoHxF1EaJ+2a7aqlzI2/jSgxWzw8PV6vp/mI6TsW1jl/O2HREU31ADx ZHE174N4Ix/v3v+G99pWsMWKguczQxzca1MwYP3lC4MmHsteCoP/fK5gj 5vkcTpJNdM+Fa5uFzlCks31XqvnzNNVVQ1q9+hhv3+9PvI1CwpjzNl+ak w==; X-IronPort-AV: E=McAfee;i="6500,9779,10481"; a="301846114" X-IronPort-AV: E=Sophos;i="5.93,345,1654585200"; d="scan'208";a="301846114" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2022 23:07:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10481"; a="724913011" X-IronPort-AV: E=Sophos;i="5.93,345,1654585200"; d="scan'208";a="724913011" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga002.fm.intel.com with ESMTP; 25 Sep 2022 23:07:01 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 25 Sep 2022 23:07:01 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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.2375.31; Sun, 25 Sep 2022 23:07:00 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.2375.31 via Frontend Transport; Sun, 25 Sep 2022 23:07:00 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.48) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sun, 25 Sep 2022 23:07:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YAMyIiCI6zF6+45yv3JYA3xxrfrtdS84uhcKx/btyLYWFXZi01ZtPdKMG3eecPKR+l9Wx6w32F9SpPLf9q5RpqKak9O0rQ6OV+fe3iYcVcIuyuJEKfUMBBz/xOq4ImDzqEkCOxF4mnDP77hY4ihknV2gJp26g4VG1Z7GTS0SNed9O9CBa8Z5Wigpbfa+LFXBGJfcg9jr1l5AkYkkNV+TOim7eOscaQsmQyiM7RfzHpC9sZQkTZcC68ZGUxBex0+AFhy+RO1C3JqyBOHcHzXYq1pV15y2CtmXniU8L+gwslpzQRlKo5CoxJwbWafgHK+b2pczRGfGGIna2x167FpPiA== 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=7NIvQdvdLvlVSoifTxh8JOYC/f86wndYwZCjtJodvf8=; b=aoQZK2cD7Fvvrx5ymmfbgSocEF4I2yEZDnrZNVyVzOpDZOlS+bkWZa7oEq312t5jb2/Llzv51GnnpYezUbJV3Naxgrbu/f7Znrm9zAdz9Fl+34S+H6/+zQojBGec2xi5CWmnDcSUvquEYzGYjv40iwtJexybvquELYOMQb1zlFh9f94r+osHwzVPokBgWJ99HGpvXMH7tRf/Dx9pGKKQ9dwnapce+qiuZ3tvWNJzC5jcW9BqCYR3Z623mJSvJJV8RuGsqhv0483x5xO31A2wiibxF0/ApzA4JP7GZIFWWywCcIDm7cGbVagbw8mJdbHk+7C9RFTOxjxPqC0/8m/j8Q== 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 SA2PR11MB5050.namprd11.prod.outlook.com (2603:10b6:806:fb::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.25; Mon, 26 Sep 2022 06:06:58 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::408e:79cb:b715:b8ac]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::408e:79cb:b715:b8ac%4]) with mapi id 15.20.5654.025; Mon, 26 Sep 2022 06:06:58 +0000 From: "Xia, Chenbo" To: "Ding, Xuan" , "maxime.coquelin@redhat.com" CC: "dev@dpdk.org" , "Hu, Jiayu" , "He, Xingguang" , "Yang, YvonneX" , "Jiang, Cheng1" , "Wang, YuanX" , "Ma, WenwuX" Subject: RE: [PATCH v2 1/2] vhost: introduce DMA vchannel unconfiguration Thread-Topic: [PATCH v2 1/2] vhost: introduce DMA vchannel unconfiguration Thread-Index: AQHYwbC2+04l7ajBC0ulvsx/n6+/F63xWGDQ Date: Mon, 26 Sep 2022 06:06:58 +0000 Message-ID: References: <20220814140442.82525-1-xuan.ding@intel.com> <20220906052149.21033-1-xuan.ding@intel.com> <20220906052149.21033-2-xuan.ding@intel.com> In-Reply-To: <20220906052149.21033-2-xuan.ding@intel.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_|SA2PR11MB5050:EE_ x-ms-office365-filtering-correlation-id: 8e1b932b-833c-4390-b8ac-08da9f855257 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DsnrOWEgkIYVkEe6fuBU6WJtdtj1Ct/n0ri1+BcWMHwj7wiHSceQkTmVy+qTMGbHZKTBnUqKDqPwP46oBtISMz3KRRgVC2PfsZ1PEiNB6Fb/KjC7V89tpvix4iBtdSwpSELsl/myHvW30UmY00RMwpyQXrr/9c5OHCblMEHXrSpPHjymS4QTfXLASp4568hN8RlIHRgLoHgNeSkp3/wIfg3SbhXjuz19hfA1W7+nmISfh2/jszS0GOGgxwl+wwubkdY7d2bngBgPDHE1IydZJFW0h8UTabPw9fx6sec/uhVRmLbVmP7rWkiE/+tX1yyeTnxzxrbDP9l4U36XjjKYJ9QpNl9DHaA+OijUnCVB2lxIS58MvNHA7PTF5PscCErsVYAuTpLyLz/QiklM313qUcsWLxTN6BNBvBhFlxJsx2N01WrygSV+Hw7PQslEliAK7/fMBhqa8HpoM+4oKxgLxYMMAsC4BUc6wK6dhVpHOhErYlj7foH/oj1PaYQ06USn0jZE5f8usoEOcmGkK20kCtRQOPZqMExPjujPFOL5+KkpCxH26bsLlZwaVKNHAKgjKLIhfD2JgScHSupgJf5e/32yyMmDDahLz4x3fAHyPOAZuGAju4EG07sKeQ7oZizN54q3BmAnNR1e1GiRYswu3DMnlMvuv5nIo8Y/MSpvsLvWOLWS/J4PDYkzVDu1EshSWq51piRT5Y3EiHf/C8ucCuMOFc4pk+H/GIyF6kphqA2s6k3aYJiHkv48yEl2JoVQtuwEX1PiO78P2y6DlixR4t6e4VErkSUJ4TTnHot3TL4= 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:(13230022)(39860400002)(376002)(396003)(136003)(346002)(366004)(451199015)(9686003)(53546011)(26005)(5660300002)(33656002)(2906002)(38070700005)(64756008)(66476007)(66556008)(66946007)(76116006)(66446008)(4326008)(8676002)(7696005)(8936002)(52536014)(6506007)(107886003)(41300700001)(38100700002)(86362001)(55016003)(122000001)(186003)(82960400001)(54906003)(110136005)(71200400001)(83380400001)(316002)(478600001)(21314003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Q010GCTdTsIdBCNGjIJpnxHtEPjoTKMNVjLs6Rcqc37q4MY06Iw1n7IBU0Xs?= =?us-ascii?Q?rWLEiTRfEQ+IA/cj+pSU7XbnWEod+WoZUbn1RDSR81PhVi/RkWKpCZ626236?= =?us-ascii?Q?3dE9lAirr6lCg61fNOch5BEbK95x6M13sTe1yF1WpmB58hk2K/7oJEkcRi94?= =?us-ascii?Q?HcDWQkwi05cXlWEpGNsAWMZ6dVeSyAIv2OhnXgZTxO4bTv3ikrNK9LJvgy/r?= =?us-ascii?Q?SvA5kdchUlRQsK/KwNzJBchSk4RXWUTl0C+uK8GxMkk0iQ1tVvJ+thhYbtGP?= =?us-ascii?Q?99knDUSfvb/d10I6+RcnJoLeSvngv1HuyKLK1qhNU7FwwJlF8ZKEXYqLWB3c?= =?us-ascii?Q?uTieVjxWUddquOsTJX6yUj3Hyr9vsHZgokyhXKLKf4SHFWzblmj0k3s0yJmX?= =?us-ascii?Q?hRpR+PqdqPyDKTHel+tv+FBUq1Ft/u8ayphMjQYKLE+7rly2hLsRdUs53Ugc?= =?us-ascii?Q?oxo/BCQ3z2nE1RI26Qi7ybJ4ZDxIUD34jp22nE+OmX0fqMD7MSZSztkJvUf0?= =?us-ascii?Q?TvJjb7thR5a3FCM0gVIRPQs7Uk80kIhs8CZvEtcDcJjLhYSoigc1Mj6aaIDr?= =?us-ascii?Q?AtSjGiqVzpYyejKTsPn5+l/9/Izcxdx9zIa7yeT4WQIuLGB3HjTfzu3eJbRC?= =?us-ascii?Q?y1t58GYT4mM09cPXVE/jF44ErdKj3MuhsVmXCljNPWqGihxprwFAwzS47G1Z?= =?us-ascii?Q?18B1T8bLfxcZ6oEhM/K4qHlGJnF/uifEcm4fIhIKxxLdFiuqukAzZL8nO/s3?= =?us-ascii?Q?fNWABxT3LivhpiNn9KkCabZKqY/zO8I6Es4ej6QaL66gPhxZyHggqHKq2jL0?= =?us-ascii?Q?hwtkqNfMVb7joIwVDN9jqrhPQT1meHGvST5fgUUkZI5jKkytAJadKNOFN81A?= =?us-ascii?Q?5HIx6z5q7Khz/xCLJgiQga4YxWgjJn8KU5eY1yLZhplTMwpRUqkl1I2SOWLB?= =?us-ascii?Q?rU1ggb6myko9S3axZwqI+dRMqC/OhzmSpQYWcawaTchqU4qEibbCF8Apswjl?= =?us-ascii?Q?kqnBs6lY7AvuK2zj5NraQ8FegEn/HA+rHlzUsIi8qEevU8PRWxKCaG+bTT+4?= =?us-ascii?Q?F8/REdyPRlpSLop4crSNY/aUSYu5rHglk/KGZ2wdboA5mM4XNmscDhEAqbQ/?= =?us-ascii?Q?RQXwGZG+C+mVh8/EKdbWqZiirEDNdoP0drlVWYQwgEpTLs97yJ6jdGsynEzx?= =?us-ascii?Q?5SqAC6maOnlcE9i2/9U2vIi/7JLvjjZpXrzdafJP3q1u5w3Vi28v91h/1W5g?= =?us-ascii?Q?cWfGXx1ycFjKOO76ZpzeiUN0b6+WUSzyOg6tjUQH6Cuse3U3xeOn844H2sPy?= =?us-ascii?Q?yWJLS/fsZNYeu01AZPAJZfh0dybcHXyQiqW4KD4mY72297hr6qKFIc9XoEB1?= =?us-ascii?Q?pnYdCps3R55+p0mY1IhXZ6xI5Kc+9DOkchihasktuRSpgFWIr/ZPCi25ALVb?= =?us-ascii?Q?pLdU1aVNOQKfxnyS3v9tpjQZmp/mgEmeSSDyTOyHM+u6NK7DrnjK/b1qOBrQ?= =?us-ascii?Q?0qtE9nLTFjoE17o+LQjuBVB8Yi9VeFAy+hU0WN/MLVZLP7LDIf6Eyn1waR3f?= =?us-ascii?Q?mBUZ3RjQjR0TgGQePIp8OaOoukLsSQ/giABohZsI?= 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: 8e1b932b-833c-4390-b8ac-08da9f855257 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2022 06:06:58.6825 (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: lDpNdi/MoVMxsQH1ahMQ8PLcBfAWWFLqbg86nl6ROa69V5SSoH9gkoisr+twq9umfScV9hJtNhWQk5xvUZpCrg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5050 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 > -----Original Message----- > From: Ding, Xuan > Sent: Tuesday, September 6, 2022 1:22 PM > To: maxime.coquelin@redhat.com; Xia, Chenbo > Cc: dev@dpdk.org; Hu, Jiayu ; He, Xingguang > ; Yang, YvonneX ; Jiang, > Cheng1 ; Wang, YuanX ; Ma, > WenwuX ; Ding, Xuan > Subject: [PATCH v2 1/2] vhost: introduce DMA vchannel unconfiguration >=20 > From: Xuan Ding >=20 > This patch adds a new API rte_vhost_async_dma_unconfigure() to unconfigur= e > DMA vchannels in vhost async data path. >=20 > Lock protection are also added to protect DMA vchannels configuration and > unconfiguration from concurrent calls. >=20 > Signed-off-by: Xuan Ding > --- > doc/guides/prog_guide/vhost_lib.rst | 5 ++ > doc/guides/rel_notes/release_22_11.rst | 2 + > lib/vhost/rte_vhost_async.h | 17 +++++++ > lib/vhost/version.map | 3 ++ > lib/vhost/vhost.c | 69 ++++++++++++++++++++++++-- > 5 files changed, 91 insertions(+), 5 deletions(-) >=20 > diff --git a/doc/guides/prog_guide/vhost_lib.rst > b/doc/guides/prog_guide/vhost_lib.rst > index bad4d819e1..22764cbeaa 100644 > --- a/doc/guides/prog_guide/vhost_lib.rst > +++ b/doc/guides/prog_guide/vhost_lib.rst > @@ -323,6 +323,11 @@ The following is an overview of some key Vhost API > functions: > Get device type of vDPA device, such as VDPA_DEVICE_TYPE_NET, > VDPA_DEVICE_TYPE_BLK. >=20 > +* ``rte_vhost_async_dma_unconfigure(dma_id, vchan_id)`` > + > + Clear DMA vChannels finished to use. This function needs to > + be called after the deregisterration of async path has been finished. Deregistration > + > Vhost-user Implementations > -------------------------- >=20 > diff --git a/doc/guides/rel_notes/release_22_11.rst > b/doc/guides/rel_notes/release_22_11.rst > index 8c021cf050..e94c006e39 100644 > --- a/doc/guides/rel_notes/release_22_11.rst > +++ b/doc/guides/rel_notes/release_22_11.rst > @@ -55,6 +55,8 @@ New Features > Also, make sure to start the actual text at the margin. > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D >=20 > +* **Added vhost API to unconfigure DMA vchannels.** > + Added an API which helps to unconfigure DMA vchannels. Added XXX for async vhost Overall LGTM. It seems it needs some rebasing too. Thanks, Chenbo >=20 > Removed Items > ------------- > diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h > index 1db2a10124..0442e027fd 100644 > --- a/lib/vhost/rte_vhost_async.h > +++ b/lib/vhost/rte_vhost_async.h > @@ -266,6 +266,23 @@ rte_vhost_async_try_dequeue_burst(int vid, uint16_t > queue_id, > struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t > count, > int *nr_inflight, int16_t dma_id, uint16_t vchan_id); >=20 > +/** > + * @warning > + * @b EXPERIMENTAL: this API may change, or be removed, without prior > notice. > + * > + * Unconfigure DMA vChannels in asynchronous data path. > + * > + * @param dma_id > + * the identifier of DMA device > + * @param vchan_id > + * the identifier of virtual DMA channel > + * @return > + * 0 on success, and -1 on failure > + */ > +__rte_experimental > +int > +rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id); > + > #ifdef __cplusplus > } > #endif > diff --git a/lib/vhost/version.map b/lib/vhost/version.map > index 18574346d5..013a6bcc42 100644 > --- a/lib/vhost/version.map > +++ b/lib/vhost/version.map > @@ -96,6 +96,9 @@ EXPERIMENTAL { > rte_vhost_async_try_dequeue_burst; > rte_vhost_driver_get_vdpa_dev_type; > rte_vhost_clear_queue; > + > + # added in 22.11 > + rte_vhost_async_dma_unconfigure; > }; >=20 > INTERNAL { > diff --git a/lib/vhost/vhost.c b/lib/vhost/vhost.c > index 60cb05a0ff..273616da11 100644 > --- a/lib/vhost/vhost.c > +++ b/lib/vhost/vhost.c > @@ -23,6 +23,7 @@ >=20 > struct virtio_net *vhost_devices[RTE_MAX_VHOST_DEVICE]; > pthread_mutex_t vhost_dev_lock =3D PTHREAD_MUTEX_INITIALIZER; > +static rte_spinlock_t vhost_dma_lock =3D RTE_SPINLOCK_INITIALIZER; >=20 > struct vhost_vq_stats_name_off { > char name[RTE_VHOST_STATS_NAME_SIZE]; > @@ -1870,19 +1871,20 @@ rte_vhost_async_dma_configure(int16_t dma_id, > uint16_t vchan_id) > void *pkts_cmpl_flag_addr; > uint16_t max_desc; >=20 > + rte_spinlock_lock(&vhost_dma_lock); > if (!rte_dma_is_valid(dma_id)) { > VHOST_LOG_CONFIG("dma", ERR, "DMA %d is not found.\n", dma_id); > - return -1; > + goto error; > } >=20 > if (rte_dma_info_get(dma_id, &info) !=3D 0) { > VHOST_LOG_CONFIG("dma", ERR, "Fail to get DMA %d > information.\n", dma_id); > - return -1; > + goto error; > } >=20 > if (vchan_id >=3D info.max_vchans) { > VHOST_LOG_CONFIG("dma", ERR, "Invalid DMA %d vChannel %u.\n", > dma_id, vchan_id); > - return -1; > + goto error; > } >=20 > if (!dma_copy_track[dma_id].vchans) { > @@ -1894,7 +1896,7 @@ rte_vhost_async_dma_configure(int16_t dma_id, > uint16_t vchan_id) > VHOST_LOG_CONFIG("dma", ERR, > "Failed to allocate vchans for DMA %d > vChannel %u.\n", > dma_id, vchan_id); > - return -1; > + goto error; > } >=20 > dma_copy_track[dma_id].vchans =3D vchans; > @@ -1903,6 +1905,7 @@ rte_vhost_async_dma_configure(int16_t dma_id, > uint16_t vchan_id) > if (dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr) { > VHOST_LOG_CONFIG("dma", INFO, "DMA %d vChannel %u already > registered.\n", > dma_id, vchan_id); > + rte_spinlock_unlock(&vhost_dma_lock); > return 0; > } >=20 > @@ -1920,7 +1923,7 @@ rte_vhost_async_dma_configure(int16_t dma_id, > uint16_t vchan_id) > rte_free(dma_copy_track[dma_id].vchans); > dma_copy_track[dma_id].vchans =3D NULL; > } > - return -1; > + goto error; > } >=20 > dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr =3D > pkts_cmpl_flag_addr; > @@ -1928,7 +1931,12 @@ rte_vhost_async_dma_configure(int16_t dma_id, > uint16_t vchan_id) > dma_copy_track[dma_id].vchans[vchan_id].ring_mask =3D max_desc - 1; > dma_copy_track[dma_id].nr_vchans++; >=20 > + rte_spinlock_unlock(&vhost_dma_lock); > return 0; > + > +error: > + rte_spinlock_unlock(&vhost_dma_lock); > + return -1; > } >=20 > int > @@ -2117,5 +2125,56 @@ int rte_vhost_vring_stats_reset(int vid, uint16_t > queue_id) > return 0; > } >=20 > +int > +rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id) > +{ > + struct rte_dma_info info; > + uint16_t max_desc; > + int i; > + > + rte_spinlock_lock(&vhost_dma_lock); > + if (!rte_dma_is_valid(dma_id)) { > + VHOST_LOG_CONFIG("dma", ERR, "DMA %d is not found.\n", dma_id); > + goto error; > + } > + > + if (rte_dma_info_get(dma_id, &info) !=3D 0) { > + VHOST_LOG_CONFIG("dma", ERR, "Fail to get DMA %d > information.\n", dma_id); > + goto error; > + } > + > + if (vchan_id >=3D info.max_vchans) { > + VHOST_LOG_CONFIG("dma", ERR, "Invalid DMA %d vChannel %u.\n", > dma_id, vchan_id); > + goto error; > + } > + > + max_desc =3D info.max_desc; > + for (i =3D 0; i < max_desc; i++) { > + if > (dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr[i] !=3D NULL= ) { > + > rte_free(dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr > [i]); > + > dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr[i] =3D > NULL; > + } > + } > + > + if (dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr !=3D > NULL) { > + > rte_free(dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr > ); > + dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr =3D > NULL; > + } > + > + if (dma_copy_track[dma_id].vchans !=3D NULL) { > + rte_free(dma_copy_track[dma_id].vchans); > + dma_copy_track[dma_id].vchans =3D NULL; > + } > + > + dma_copy_track[dma_id].nr_vchans--; > + > + rte_spinlock_unlock(&vhost_dma_lock); > + return 0; > + > +error: > + rte_spinlock_unlock(&vhost_dma_lock); > + return -1; > +} > + > RTE_LOG_REGISTER_SUFFIX(vhost_config_log_level, config, INFO); > RTE_LOG_REGISTER_SUFFIX(vhost_data_log_level, data, WARNING); > -- > 2.17.1