From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerin Jacob Subject: Re: [PATCH 2/4] evendev: add vdev uninit support Date: Wed, 8 Feb 2017 20:09:07 +0530 Message-ID: <20170208143905.GC22978@localhost.localdomain> References: <1486358620-4075-1-git-send-email-jerin.jacob@caviumnetworks.com> <1486358620-4075-3-git-send-email-jerin.jacob@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Cc: "dev@dpdk.org" , "Richardson, Bruce" , "hemant.agrawal@nxp.com" , "Eads, Gage" To: "Van Haaren, Harry" Return-path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0088.outbound.protection.outlook.com [104.47.37.88]) by dpdk.org (Postfix) with ESMTP id 867374A65 for ; Wed, 8 Feb 2017 15:39:25 +0100 (CET) Content-Disposition: inline In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Feb 07, 2017 at 03:11:01PM +0000, Van Haaren, Harry wrote: > > -----Original Message----- > > From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com] > > Sent: Monday, February 6, 2017 5:24 AM > > To: dev@dpdk.org > > Cc: Richardson, Bruce ; hemant.agrawal@nxp.com; Eads, Gage > > ; Van Haaren, Harry ; Jerin Jacob > > > > Subject: [dpdk-dev] [PATCH 2/4] evendev: add vdev uninit support > > > > Added eventdev vdev uninit support to release the resources > > allocated in eventdev vdev init. > > > > Signed-off-by: Jerin Jacob > > --- > > One comment below to update version.map 17.05, but once that's fixed Fixed it. > > Acked-by: Harry van Haaren Applied to dpdk-next-eventdev/master. Thanks. > > > > lib/librte_eventdev/rte_eventdev.c | 43 +++++++++++++++++++++++++--- > > lib/librte_eventdev/rte_eventdev_pmd.h | 12 +++++++- > > lib/librte_eventdev/rte_eventdev_version.map | 1 + > > 3 files changed, 51 insertions(+), 5 deletions(-) > > > > diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c > > index 2b39fb2..09fc274 100644 > > --- a/lib/librte_eventdev/rte_eventdev.c > > +++ b/lib/librte_eventdev/rte_eventdev.c > > @@ -1143,6 +1143,8 @@ int > > rte_event_pmd_release(struct rte_eventdev *eventdev) > > { > > int ret; > > + char mz_name[RTE_EVENTDEV_NAME_MAX_LEN]; > > + const struct rte_memzone *mz; > > > > if (eventdev == NULL) > > return -EINVAL; > > @@ -1153,8 +1155,26 @@ rte_event_pmd_release(struct rte_eventdev *eventdev) > > > > eventdev->attached = RTE_EVENTDEV_DETACHED; > > eventdev_globals.nb_devs--; > > + > > + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { > > + rte_free(eventdev->data->dev_private); > > + > > + /* Generate memzone name */ > > + ret = snprintf(mz_name, sizeof(mz_name), "rte_eventdev_data_%u", > > + eventdev->data->dev_id); > > + if (ret >= (int)sizeof(mz_name)) > > + return -EINVAL; > > + > > + mz = rte_memzone_lookup(mz_name); > > + if (mz == NULL) > > + return -ENOMEM; > > + > > + ret = rte_memzone_free(mz); > > + if (ret) > > + return ret; > > + } > > + > > eventdev->data = NULL; > > - > > return 0; > > } > > > > @@ -1186,6 +1206,24 @@ rte_event_pmd_vdev_init(const char *name, size_t dev_private_size, > > } > > > > int > > +rte_event_pmd_vdev_uninit(const char *name) > > +{ > > + struct rte_eventdev *eventdev; > > + > > + if (name == NULL) > > + return -EINVAL; > > + > > + eventdev = rte_event_pmd_get_named_dev(name); > > + if (eventdev == NULL) > > + return -ENODEV; > > + > > + /* Free the event device */ > > + rte_event_pmd_release(eventdev); > > + > > + return 0; > > +} > > + > > +int > > rte_event_pmd_pci_probe(struct rte_pci_driver *pci_drv, > > struct rte_pci_device *pci_dev) > > { > > @@ -1275,9 +1313,6 @@ rte_event_pmd_pci_remove(struct rte_pci_device *pci_dev) > > /* Free event device */ > > rte_event_pmd_release(eventdev); > > > > - if (rte_eal_process_type() == RTE_PROC_PRIMARY) > > - rte_free(eventdev->data->dev_private); > > > > > eventdev->pci_dev = NULL; > > eventdev->driver = NULL; > > > > diff --git a/lib/librte_eventdev/rte_eventdev_pmd.h b/lib/librte_eventdev/rte_eventdev_pmd.h > > index 4eea618..be5c784 100644 > > --- a/lib/librte_eventdev/rte_eventdev_pmd.h > > +++ b/lib/librte_eventdev/rte_eventdev_pmd.h > > @@ -198,7 +198,7 @@ rte_event_pmd_is_valid_dev(uint8_t dev_id) > > { > > struct rte_eventdev *dev; > > > > - if (dev_id >= rte_eventdev_globals->nb_devs) > > + if (dev_id >= RTE_EVENT_MAX_DEVS) > > return 0; > > > > dev = &rte_eventdevs[dev_id]; > > @@ -552,6 +552,16 @@ struct rte_eventdev * > > rte_event_pmd_vdev_init(const char *name, size_t dev_private_size, > > int socket_id); > > > > +/** > > + * Destroy the given virtual event device > > + * > > + * @param name > > + * PMD type name > > + * @return > > + * - 0 on success, negative on error > > + */ > > +int > > +rte_event_pmd_vdev_uninit(const char *name); > > > > /** > > * Wrapper for use by pci drivers as a .probe function to attach to a event > > diff --git a/lib/librte_eventdev/rte_eventdev_version.map > > b/lib/librte_eventdev/rte_eventdev_version.map > > index b138eb3..c572c4d 100644 > > --- a/lib/librte_eventdev/rte_eventdev_version.map > > +++ b/lib/librte_eventdev/rte_eventdev_version.map > > @@ -35,6 +35,7 @@ DPDK_17.02 { > > > Version to 17.05 I think? > > > > rte_event_pmd_allocate; > > rte_event_pmd_release; > > rte_event_pmd_vdev_init; > > + rte_event_pmd_vdev_uninit; > > rte_event_pmd_pci_probe; > > rte_event_pmd_pci_remove; > > > > -- > > 2.5.5 >