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 6687EA00C2; Mon, 26 Sep 2022 08:43:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 105E0400D7; Mon, 26 Sep 2022 08:43:27 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id C76A9400D5 for ; Mon, 26 Sep 2022 08:43:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664174605; x=1695710605; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ykf1iYABa2ZxJgeb1tBmrV+4hB4aj9I691f+TFt9Miw=; b=HUBFDkI/pr/SDuCcwe+lPO93hfGyLylPFUcJ819aOH8EiNRPgU8db8nY 2eld865/2YYOVOO3WC21mZM1mhELxzsStZkSaKoHTV3mUu/kBz+FDPVdI l3m0Sq6bOaPqwWjRc15pFWhR/JbZKDqOnXt5WxXxEfBCdS9GMQ2zVH7bE s72IKZ580hh/T2Z86ZA/v0s+lUnn1TrwINrg5tts/bMj0G7geZb7RVAQc 1+9Me5odfXysfi6T8iV8GSCFLLuM9Jv5c2zAxw+Ce5pDHjs4Y/8b4cDeQ 0iDXJGE1JwVnzfWYGvpXY1WraZoe7PzIvd4+Y0JmcpO45hJ/tpW2Xn/Tr w==; X-IronPort-AV: E=McAfee;i="6500,9779,10481"; a="387243495" X-IronPort-AV: E=Sophos;i="5.93,345,1654585200"; d="scan'208";a="387243495" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2022 23:43:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10481"; a="746506911" X-IronPort-AV: E=Sophos;i="5.93,345,1654585200"; d="scan'208";a="746506911" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga004.jf.intel.com with ESMTP; 25 Sep 2022 23:43:23 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx601.amr.corp.intel.com (10.18.126.81) 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:43:22 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) 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:43:22 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) 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.2375.31; Sun, 25 Sep 2022 23:43:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fWWMxiKwUbyXtVPd5lJyj9ue9DYUUmaD8ebgYD9dCrN+SJCyRbzdw2txo7fGDDhpEae0JqWWNzyMp5A4HaTDtz/cx8aWWPRrtuJKHtxcrnRk4vRDJix1u2OAt0R9DvIj3sxV6zPljtymvyLgs5WC1QZDus5sFzv1syNZcG7LGB/1szVWDSmSrrdwtrRV3IEYDOc0ll88ddYvYnTMGbWP2AyC/JCC305U9ciYjAhyAI8+RnmS2reYGxxhZbOg6YxC+iHNVq2o9857Aj2wJUmHnIZ4qXbIj0bPTTwf0bv4r4proppcBtBKwgOs4S0//+hRR572WXPENEIDO5uZSVglzg== 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=fnmtHORUb4303g3JNQvnFCwvp4pSQxFjzcpjJXh/yGc=; b=INfxO2cFvhpuRyRgZJOklw+2vhsVoCur8pegmj6PfGVcjYpagECbNjaQaqd7c1zV5CNsy0ayrU32XWZ/SjUtp7HvcoP7O+MDaoKfNRPVtLIFe47TUTViTRkbFGPg5UJSwwuRpoaT68/5ciF2VJamxQTRpMjdTPBTpLH8yTlvAVosDErCohd7CJF06fj6gZjqUOzNaPDAYu2RtEEX0SIOppWu9IcOt7rMum+FWrpshNeYE2n1KCkH/sd1VneOMIr+X9rt4g3/cPsWUrOSskBRh12fDWSwxVB9nRTjVr9+2ugVqOU9e6r7cVzoOYcP1maW3StaFaDkFFUC+OjSZS9V/g== 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 BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by CH0PR11MB5426.namprd11.prod.outlook.com (2603:10b6:610:d1::21) 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:43:21 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::90a4:c9c4:50a1:9ef8]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::90a4:c9c4:50a1:9ef8%9]) with mapi id 15.20.5654.025; Mon, 26 Sep 2022 06:43:21 +0000 From: "Ding, Xuan" To: "Xia, Chenbo" , "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+S2l6OxLBk230gqG7OYQXa3xWP0AgAAJD2A= Date: Mon, 26 Sep 2022 06:43:21 +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: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 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: BN9PR11MB5513:EE_|CH0PR11MB5426:EE_ x-ms-office365-filtering-correlation-id: 8eb9e1ed-d28d-40f1-eb81-08da9f8a6756 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /yDEMtf7/FYIR3t3s7gY7IGnr9I//7J4Ll/PxIDuMJySJsYwcrUS9Wc+dFrl8VxSwN11X9v3yxFu0793R+sPKPw0P0QroDb0ZoE1sahaPJoaQT2NXE9idZ7AtK/u1HAexaj3aXnHTCp9HSfsUY0aFT/Shpv0cO0g9/nfwnA+IJYaX+lOSla8c7+nHmAqHC/ic3Lpaz0NROQAHjTcqoq247DgOOaPYGoGFQVMoJPqPkkkPusd3pxc34Lly2RA6FrvhnUlobm5vJXNZtqVgpo67wyzNCfuzcwfdgb1vtsOY/ny5zbC0bnaUl9inI+s5WJz5NlGLZvIWBOUu0ACFSlwQSq7F83i+t2sIL6UaVdVlhhFal1duP3Emis0m6CMgTgGIcICXaOQVDZFMWUd3gr58Kf5aNryDOwcVQJ3+uyUB0BitQ4/8aytSIMwObSluRRH8rc2cxiWRlU9bW1D+7DFbr1bCrRpYpvF4IB668w1nrJu3EHE8mO0KTSZwLZRxDVPmuW/s6QaVM6UU8dD+SVoJh+2G9/lOpruuxIE6D/9Lot0vj20EooDdi/VqEVq9xK5wOOaM6TYgHBBVAKWGgRuARep3KrVx5fr4Zn0HqFPOK42jAV3W6mpwjjlw2W33Go56Z4MA19B8+MfIwLo1wBvHV4tZi9JTNjEXEQjReiEEFhxUqqS5oWIhHwj0DxOz7OEyNiX+87OArnKBMVcQSqoxuEeoHX/KpODA7Z6ECZ7zip+vioHa0k7i6Jv54jnmx9GZju2H5V41LJDXWy5PqGZtCsM3FOg0xYZunrZFniB54s= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(346002)(366004)(396003)(376002)(39860400002)(136003)(451199015)(71200400001)(186003)(8676002)(83380400001)(316002)(55016003)(38100700002)(8936002)(107886003)(26005)(53546011)(9686003)(6506007)(86362001)(5660300002)(2906002)(52536014)(38070700005)(7696005)(478600001)(66556008)(110136005)(76116006)(64756008)(66476007)(66446008)(33656002)(54906003)(66946007)(82960400001)(4326008)(122000001)(41300700001)(21314003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?yfeL6D8+av4F1tIdKDfEC9H10GoLRdMWhVAS7QhVG2/1U4sZ9VkjQbrTEYOJ?= =?us-ascii?Q?OFldrdiPSrEBWuuBUFlT0TTz4mPsxWryH8bq/DL01hUQQN/1YUvmKMKUYsdc?= =?us-ascii?Q?6CetUatwrWZFyLmQnrsDVXLnkwz66AD0bB00mSFsqewlDV6RQtQOX2QaU1V6?= =?us-ascii?Q?4r3g0Esfsb3Oh2p8jOFHjRtaccmkdozs5amhhwIXvEC5V8ZH4A91Ibg50QiE?= =?us-ascii?Q?oa1vPc3uSeQrRMNSaiyj+/r7d5QPah371WB+dpXuP/TOkF4XkUts9+C1Vlh2?= =?us-ascii?Q?8DUu1/9u3bshFd3jtKHbc3L1i9CZlvgsu+iGr1Qhy/nthIYaJHRMS6UrlXW0?= =?us-ascii?Q?T6/Wkx7jPf00uwGadRwtjfb3MoosqLhmoL/EGbHMtkKg/W7la7A4ypEWvNhl?= =?us-ascii?Q?l6Zei2mgFcq2sB2t6gLCFEAEs9LVCoQCTLOhhatYCR0DTVQK/tc3o4H3Zfvn?= =?us-ascii?Q?Y/vBlon9UG53ZmNNHgtrP95uUlbo7duGorq7Jb3ZFW1QsvFptSuV84tu50er?= =?us-ascii?Q?HkOr6UwrT2zzvoL3Po0LC2IRzJ9C3wTcidKa1jcr82ETD4+WaT8ARXdFcus8?= =?us-ascii?Q?n3M49e925cPLhR6jqwjFxg6YBNLMgW6YPIfqRIlwMoTajEWDwbQ8/GTtTY7o?= =?us-ascii?Q?heI8XwiuI59XFA2RIqo1aLEPXQHf1qHcv1+pxmi6so2ft+k955jrf2XD1F35?= =?us-ascii?Q?KoVBY91Nl+Xs+dFQjKzMEiY+t9WGP0bM7QHbVEBj6PdrEtnx+yUItHcguWYV?= =?us-ascii?Q?9/ISLG/suIKxSiqNOYxvCgzGI4ZzA22GZkr9kKFwYowzd8p+H8JdyDugE/7+?= =?us-ascii?Q?IXdXSNcJCaxtpH7Du4DUqhf6h+34Vet2AJEf/s9vHNxGVgJmOIFnqk+X/jmy?= =?us-ascii?Q?kZOohk17vVhSqmX2S5P80bbllDq1ONBHgQEg+Pq24VwMeOpddBJfm3BaXZd3?= =?us-ascii?Q?iXS9Gmfb8ERC824b88/kJ705Vul/AVLKm5EbGY8XXvm1pGmyN2g1LFaV59lm?= =?us-ascii?Q?y0d2xggrKumBTYWO0GzaGVBcoHJ8CfajlrM84ALEqMHmQvfGZgUJ4cVOORKo?= =?us-ascii?Q?+7EYaCfEBBx6WY19c1ogKgROsJhxIpuMlUmrfLgfQga86XFrOe5IsqHN8/Ck?= =?us-ascii?Q?D/g5JfN4N9v845gH0iqpaj4GYSZ0ABricdrCk+ike8u/rpvoI/TvllsSssuj?= =?us-ascii?Q?C7ERse5gzpHEIwBonT3ikTzxPS0lS5h5lIwwgj/PkZGKTzD8CnICy26WuZQ0?= =?us-ascii?Q?e069EVkd0BHs+EOfdcHfhbLykcGyKblMLpFum7CRjoyTwjbYQhJdraijFXWa?= =?us-ascii?Q?y83w6MLFuYTxGVfW35817F0aGkCqJqGHQDCVlmrMXrnJffLAedBAGJ0JBiP4?= =?us-ascii?Q?DdhfjnhiXJo9htIMunziMzVZZNJpmFtJXTX1Mc+xMRLUIJsuQl+IbaZsC58V?= =?us-ascii?Q?b4s97b5yq8Y3gPmMPowbaKwTL/dDbhb85bJqk761BKsZbmiVJQiH6dx2xxu4?= =?us-ascii?Q?8Hq7u+BHSaWFF2NdDnceRqkJpB2n2GwEIkBWkvUQxtFFL20wJbI+ij4nj3oF?= =?us-ascii?Q?EyVUqHCJq/+OxB3/FcV2vNnegjNKRhXbZcE4AKNg?= 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: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8eb9e1ed-d28d-40f1-eb81-08da9f8a6756 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2022 06:43:21.3617 (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: rSWpgE6QhN2BK8owDsLclASB74FFaOIbuyMgzFatLHUDPJd5Tt/QkPxUVc8gQ74/eNmBR1FZaCzAWDeA7us+lQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5426 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 Chenbo, Thanks for your comments, please see replies inline. > -----Original Message----- > From: Xia, Chenbo > Sent: Monday, September 26, 2022 2:07 PM > 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 >=20 > > -----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 > > > > From: Xuan Ding > > > > This patch adds a new API rte_vhost_async_dma_unconfigure() to > > unconfigure DMA vchannels in vhost async data path. > > > > Lock protection are also added to protect DMA vchannels configuration > > and unconfiguration from concurrent calls. > > > > 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(-) > > > > 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. > > > > +* ``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. >=20 > Deregistration Thanks for your catch. >=20 > > + > > Vhost-user Implementations > > -------------------------- > > > > 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 > > > > +* **Added vhost API to unconfigure DMA vchannels.** > > + Added an API which helps to unconfigure DMA vchannels. >=20 > Added XXX for async vhost Good idea. >=20 > Overall LGTM. It seems it needs some rebasing too. I'm preparing v3 patch series, please see next version. Regards, Xuan >=20 > 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); > > > > +/** > > + * @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; > > }; > > > > 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 @@ > > > > 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; > > > > 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; > > > > + 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; > > } > > > > 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; > > } > > > > 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; > > } > > > > 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; > > } > > > > 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; > > } > > > > @@ -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; > > } > > > > 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++; > > > > + rte_spinlock_unlock(&vhost_dma_lock); > > return 0; > > + > > +error: > > + rte_spinlock_unlock(&vhost_dma_lock); > > + return -1; > > } > > > > int > > @@ -2117,5 +2125,56 @@ int rte_vhost_vring_stats_reset(int vid, > > uint16_t > > queue_id) > > return 0; > > } > > > > +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