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 E7BDEA0581; Wed, 19 Oct 2022 11:28:55 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8940340A8B; Wed, 19 Oct 2022 11:28:55 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id AED1640693 for ; Wed, 19 Oct 2022 11:28:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666171734; x=1697707734; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=nlPbYcZYvehwcwPj3ZngEtN9TGXSOHSsMEqwF7W+UkE=; b=cWIJvVZlRGdsNRd7Eq7BeIvSMn/lgrWPskwEQz1fSbNZn8oaYtkmmvUQ Cl6r99tdvM6RgXZeyXCSl3UL7ZjpfP+z0NCbLIqFblQ1HMPIOP8V/FAz5 QnTnJamdfMeNpN/p1lcOHunLEesfSczlnBbloVG8sLEgYsk/enf2SEvG9 TUMsFvfhReMlQz2OenAbCnBzn4vwsGdlk3r2lzLmF7OAd1CJZ0xFiNx3w A2nWlwKztEuTEq2Qk4o+JuipAF/tKBbNtFwJEOhuv0uewX32fEP6WIgAj ehzjk55+yuFU6ySs7LZJWtNdUmQlTenC9VD3l+wX34JpTD4TGgl20H/Kr Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10504"; a="392660780" X-IronPort-AV: E=Sophos;i="5.95,195,1661842800"; d="scan'208";a="392660780" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Oct 2022 02:28:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10504"; a="580251912" X-IronPort-AV: E=Sophos;i="5.95,195,1661842800"; d="scan'208";a="580251912" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga003.jf.intel.com with ESMTP; 19 Oct 2022 02:28:52 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 19 Oct 2022 02:28:51 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 19 Oct 2022 02:28:51 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.172) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Wed, 19 Oct 2022 02:28:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mL2Xnz4lNp4SQGDQUk+n43WiH5s1yKHApEwdr1t7PviIOIhrS4qBeRWkd3NjmTgGwMqzSDTXNDnf/X7zZwoOFmEJukMFoW0Tl4+ytfi3hHVb8GreAMrVfYn7sHr971U8vJ5VabUlwUn6CvRhMQ9EzlsMXiY+9ZR14lnzDS6OA1annDcv65wkXu2CYz3yoQMb4dlg3qe7EdQoNnZJPDrThydnwKFD+3bqWl0owsYy3tHciDPcrGRu7gW/U5gq6lImhrswn+DLENkAti+1DmAX4/VkFQlHOM/cm9WgysS+aHhFzdjjWqRgxrlz+RVDgJrRgCVeA8ddHFNk/sftL/egag== 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=PtTkRChvY97YbpZ3NPryHfUFwtGXdnvQzTg9K1h/OJA=; b=iqz1F8jfqPyA9T7MAzMkYrGhlZaxx3rAm2u4aHpAVKkTzrctL0uj/u984T3PtkpV2U8Zkwvwa7eHMbepL9tmKtBZCedd58YVlolPmQYNw+aHANPvN7gqDN1+nggUBe6by666d3XZ1nU9UxBVwrGoVR4Ohdb60WzvNziRljmuEUFJrhxOz/bt9YJcVle+zolEq+48fVnAHYQBCRDNuqXtJ46tvM7xAPCnA1iVQDxFz7rR0BTKVZeDn4k8JluuMMSRqfIAioPYx8ddTAX/O47hlft/r6vjQRGa56i1Cq5mGwMpW12eUwPcUEFglO4RDRvGtidobKMMTSHj1arZymvXgg== 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 DS0PR11MB7213.namprd11.prod.outlook.com (2603:10b6:8:132::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.34; Wed, 19 Oct 2022 09:28:50 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::39bf:57b1:4824:d40d]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::39bf:57b1:4824:d40d%6]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 09:28:49 +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 v6 1/2] vhost: introduce DMA vchannel unconfiguration Thread-Topic: [PATCH v6 1/2] vhost: introduce DMA vchannel unconfiguration Thread-Index: AQHY4wXXnQApxyeGfE272+8IRd+hkK4VdAKw Date: Wed, 19 Oct 2022 09:28:49 +0000 Message-ID: References: <20220814140442.82525-1-xuan.ding@intel.com> <20221018152221.86341-1-xuan.ding@intel.com> <20221018152221.86341-2-xuan.ding@intel.com> In-Reply-To: <20221018152221.86341-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_|DS0PR11MB7213:EE_ x-ms-office365-filtering-correlation-id: a294d5d8-05aa-4a10-5241-08dab1b45497 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pCN2Q/XHFqpTbQLF2ueF14L2SgMjUOBw+PcGR21SVRa86mR3O5qo0lClBZ08FML2SilnriIPOG12WhRuAxHWiWzbV0+5MK8AW5N1NNwTr5QD+wEDvHvwJUPiE9MW7Zuap+x/KaVtAvc56D7SZF8Qh8+SVZmqD5RA4pBRV0cihlEdgh5E0TBtcJX0FlBnSDN5Xb+NRsMoGoHsRbJ6oRcf7TNQYP63G1Qgw019dwVKJMRAqAjEcnBrQdJ4L7GShUUF6om8UF1AZzFUmRW7zzpTdyutgIZotJaKhtxAEEwBztUqiIbB5dOUolIdKWiFU1tzQFWZragrffV4YwQ6ipcYi8fkS51u2gkNUW+STQPzKUBgA73VFG6whW0XWt7Qec53UhIX1J8Huat5714AHUf+dXLc/BbL4Z+KsFLkIUYclYnVPK0aRW8i/Wvwj2YdaQ2iQWtQ88CAdYv9xQAIXKkp7Pgg1zNE6h2eXuEMNSi78F49qyeBVK5iod2Dgah0iRaedOCEGC8aK48xeVl9hu9bOOpCLNbiLcQGTTqvzo74rC6wgl/Exg5LGccOyCKj3sDwnJXLEWQUg8DNeRSADlmTrsa9Nde7aoW0XzYrP0/j8eatSusKQdmkVQo0fe74O1rtzp95eRcNlZt9TWHW2/cDuMUZBtRaPfaX3AKLMwVx9atyqLlqhlyHNcLbOGhttwDpnDCx3X/itcxnLkzVgjJHkHp22R7WYB+VVyYKnCfQn2Iam9O+TGRQij21o22lL3RNzH0le+yaxUrURfLSY0liNg== 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)(366004)(396003)(346002)(376002)(39860400002)(136003)(451199015)(54906003)(110136005)(316002)(8936002)(52536014)(55016003)(9686003)(26005)(33656002)(186003)(2906002)(5660300002)(107886003)(4326008)(8676002)(64756008)(66446008)(66476007)(66556008)(66946007)(83380400001)(41300700001)(86362001)(76116006)(53546011)(6506007)(7696005)(122000001)(71200400001)(38100700002)(82960400001)(478600001)(38070700005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?p+L9uCPURjR8sFfXJ4x15tAoaeoYy/k/7nkH/ydO/4RqhU17o2KGPaEii6nf?= =?us-ascii?Q?r57qILDVubiYa3yemMAFnMn+sJzZ0A41si/nm2QwvfDFjivWiNkAgOcW9Zhi?= =?us-ascii?Q?jz8/1A8BX/F31ixPa0iZ0lusMsETc2yzp0mTLDptXRKrtkISRYrKE4T+j9uB?= =?us-ascii?Q?Lv5279E0S+7KxCEJ0ZwTSEoI+hpCSp1fLDyc8rDkeTWN/Kjw6FM9HEbT7C9q?= =?us-ascii?Q?1vx3N7CojSV7eAXZp+/5YfYtngTUqXHrdIBz44f1BaJRHQ/CxqHC2/v4YH65?= =?us-ascii?Q?spA4e2uozSndgFml8QXsY68/eyQx85mxPEYE+OceCbaRyOdcrcKHpRipynH8?= =?us-ascii?Q?UIoniAatT69FJBzOMHOa9cb6p5fQthOLIucwFKS9BsRE6BuN0ednxOgvWg7u?= =?us-ascii?Q?fLVzg9d+JXBz8KgYQz5E6SdtsEm23ZOCzSwh2IBwFJgG7Oao298+zrqafNGe?= =?us-ascii?Q?w3G9IKUI1aZ0OEuzJzymzTXYOEHZK6+iHKzSyf7B4o7w9MKME/ti1nIQFhYL?= =?us-ascii?Q?4uexfK8pOUlrhFi6/k70HW+i5+vV+WgXcbS++8cPJ0QH3rlAzXsaqejcPmej?= =?us-ascii?Q?kniEvB6yReL3njzcjqltYVLaNuXqjFAnrX2l0HnQyapHweNdD5qSsQCnR6a+?= =?us-ascii?Q?u3vdjYRniJlSUEF4fv0B8zKFD/7U5Z+B77Nv6SJFmP0S8nGZSEUZbyGSbF99?= =?us-ascii?Q?BOe6Sj8Sd8E7+FUX/D+HSJNrVDJQ65fKkGEFs+I4qrZtgv6QmXjRz2PKkkqO?= =?us-ascii?Q?akzYd43lTWFUNoCb1fSqJwTsGZaGpzNT023jIkzFB+wWTPvU900B+Va7gb+j?= =?us-ascii?Q?ohfgKwEdn3xWvireTXgU4gsF/AU+7ptoVb/pbE/TQuuwu02FH5Dt8jxhnyKp?= =?us-ascii?Q?19zl2iPsdUZkBkhYa27PmrLFxT++kuLbOYs7041q6/iwPwVcEbMBC66CwnFt?= =?us-ascii?Q?vc9qD5ANrzNMixbCzh36BmQRk8VWfMJI+Broiyx26VlnVb7hx1W4ln46zKoI?= =?us-ascii?Q?uW7U2UA6fNPKZbG9TwowY5qvnByTi0L56U/2YlkN0ZHAbG8FTd8Yyr7AwWiQ?= =?us-ascii?Q?u8SRFjPH3Kp3GnSoweuOJNzat7/N3M46TGsnxf994pZGv4ZEZp2N6vgWfqIO?= =?us-ascii?Q?7F4qBxSTV9nPazS9dH+RrkaVvT/VdrdolLUgR2N0/ChZKzLwGKUZdAuhVlA5?= =?us-ascii?Q?Ho3WkyjxyT7cxbmT6wwApSNI/+UWeDEQOyvFM/kBJD9OchuYQB1o0B3Ho4at?= =?us-ascii?Q?BbJ6AGBZMpYFsoVBgFN6lvnul0Oe6+rkp7QOol2trU20uD0GWMy2M2BAy7Y+?= =?us-ascii?Q?q7dri39Z5gJ7uRV1utcOapWmEOBgYme3P5OPt/1pF+9w1mTAxzxw734/2HrO?= =?us-ascii?Q?QzuggEb0Y59j5zpYd+Q2Tv04VNyXckHNDIc2qjYm6S2g4cN23Mg/7i4iW6H7?= =?us-ascii?Q?x2O6mP6IoTNgivjyXNzoYRKwDU8KO70hFfX+yJZ7aYZuQvTqhg9fOw5D6za1?= =?us-ascii?Q?B8sEPYzVHcTv94nfLEm0KN2VxL+RiUwFLrcpd11HD1V8vhDX7UFp7uVEuyKW?= =?us-ascii?Q?KiRdjUaWvqe7zf0+p21ZCw/oNa2tqsnrzY+qq4HX?= 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: a294d5d8-05aa-4a10-5241-08dab1b45497 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2022 09:28:49.7623 (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: Wom/8Z5r3BrSg8bKCIy+j4sXzdjssUioIxT97xZPh2v9Cd97bR+dIh6Vx90TXXQhPHdcTfdWQ8L7BlyVIWP6yg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7213 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, October 18, 2022 11: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 v6 1/2] vhost: introduce DMA vchannel unconfiguration >=20 > From: Xuan Ding >=20 > Add 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. >=20 > Signed-off-by: Xuan Ding > --- > doc/guides/prog_guide/vhost_lib.rst | 7 +++ > doc/guides/rel_notes/release_22_11.rst | 5 ++ > lib/vhost/rte_vhost_async.h | 20 ++++++++ > lib/vhost/version.map | 3 ++ > lib/vhost/vhost.c | 69 ++++++++++++++++++++++++-- > 5 files changed, 99 insertions(+), 5 deletions(-) >=20 > diff --git a/doc/guides/prog_guide/vhost_lib.rst > b/doc/guides/prog_guide/vhost_lib.rst > index bad4d819e1..fbe841321f 100644 > --- a/doc/guides/prog_guide/vhost_lib.rst > +++ b/doc/guides/prog_guide/vhost_lib.rst > @@ -323,6 +323,13 @@ 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)`` > + > + Clean DMA vChannels finished to use. This function needs to be called > + after the deregistration of async DMA vchannel has been finished. > + After this function is called, the specified DMA device should no > + longer be used by the Vhost library. > + > 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 2da8bc9661..a1c5cdea7c 100644 > --- a/doc/guides/rel_notes/release_22_11.rst > +++ b/doc/guides/rel_notes/release_22_11.rst > @@ -236,6 +236,11 @@ New Features >=20 > strings $dpdk_binary_or_driver | sed -n 's/^PMD_INFO_STRING=3D //p' >=20 > +* **Added DMA vChannel unconfiguration for async vhost.** > + > + * Added support to unconfigure DMA vChannels that have been > unregistered > + and no longer used by Vhost library. Somehow this is making release notes build fail. Maxime, is this because of the '*' before 'Added support'? Thanks, Chenbo > + >=20 > Removed Items > ------------- > diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h > index 1db2a10124..eac7eb568e 100644 > --- a/lib/vhost/rte_vhost_async.h > +++ b/lib/vhost/rte_vhost_async.h > @@ -266,6 +266,26 @@ 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 Vhost asynchronous data path. > + * This function should be called after the DMA vChannel has been > unregistered. > + * After this function is called, the specified DMA device should no > longer > + * be used by the Vhost library. > + * > + * @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 7a00b65740..0b61870870 100644 > --- a/lib/vhost/version.map > +++ b/lib/vhost/version.map > @@ -94,6 +94,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 8740aa2788..975c0d3297 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; > +pthread_mutex_t vhost_dma_lock =3D PTHREAD_MUTEX_INITIALIZER; >=20 > struct vhost_vq_stats_name_off { > char name[RTE_VHOST_STATS_NAME_SIZE]; > @@ -1844,19 +1845,20 @@ rte_vhost_async_dma_configure(int16_t dma_id, > uint16_t vchan_id) > void *pkts_cmpl_flag_addr; > uint16_t max_desc; >=20 > + pthread_mutex_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) { > @@ -1868,7 +1870,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; > @@ -1877,6 +1879,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); > + pthread_mutex_unlock(&vhost_dma_lock); > return 0; > } >=20 > @@ -1894,7 +1897,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; > @@ -1902,7 +1905,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 > + pthread_mutex_unlock(&vhost_dma_lock); > return 0; > + > +error: > + pthread_mutex_unlock(&vhost_dma_lock); > + return -1; > } >=20 > int > @@ -2091,5 +2099,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; > + > + pthread_mutex_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--; > + > + pthread_mutex_unlock(&vhost_dma_lock); > + return 0; > + > +error: > + pthread_mutex_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