From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2C4C8A0350; Tue, 23 Jun 2020 14:25:27 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C35B61D633; Tue, 23 Jun 2020 14:25:26 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id EFC3A1D5F7 for ; Tue, 23 Jun 2020 14:25:24 +0200 (CEST) IronPort-SDR: DQZ1F3IH5AYoot1rhVvW/9c/Yj+abl2zACOdBv2Deeg5wU5u+/XjPZjjFw0lJxvY26BtYUXl++ hNgFIgq8xlsA== X-IronPort-AV: E=McAfee;i="6000,8403,9660"; a="228718776" X-IronPort-AV: E=Sophos;i="5.75,271,1589266800"; d="scan'208";a="228718776" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jun 2020 05:25:24 -0700 IronPort-SDR: HTNphaX3B1vkDw9J4JV0B6cM7019IwdXBuycXfBdHb3Riv5oSyeFxLsdN/xzPezdv2EuUOv6Qe fY1EZ8AfMX3A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,271,1589266800"; d="scan'208";a="478725708" Received: from fyigit-mobl.ger.corp.intel.com (HELO [10.252.31.114]) ([10.252.31.114]) by fmsmga006.fm.intel.com with ESMTP; 23 Jun 2020 05:25:23 -0700 To: Renata Saiakhova , "dev@dpdk.org" References: <20200622095443.26136-1-Renata.Saiakhova@ekinops.com> <20200622095443.26136-2-Renata.Saiakhova@ekinops.com> From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@intel.com; prefer-encrypt=mutual; keydata= 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 dYuOYKR9nbPv+2zK9pwwQ2NXbUBystaGyQ== Message-ID: Date: Tue, 23 Jun 2020 13:25:22 +0100 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v4 1/4] librte_ethdev: Introduce a function to release HW rings X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list 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 6/23/2020 10:11 AM, Renata Saiakhova wrote: > Hi Ferruh, > > I added an INTERNAL block in .map file, that gives me an error: > > Build targets in project: 806 > Found ninja-1.8.2 at /usr/bin/ninja > [7/627] Linking target lib/librte_ethdev.so.20.0.3. > FAILED: lib/librte_ethdev.so.20.0.3 > ccache cc  -o lib/librte_ethdev.so.20.0.3 > 'lib/lib@@rte_ethdev@sta/librte_ethdev_ethdev_private.c.o' > 'lib/lib@@rte_ethdev@sta/librte_ethdev_ethdev_profile.c.o' > 'lib/lib@@rte_ethdev@sta/librte_ethdev_ethdev_trace_points.c.o' > 'lib/lib@@rte_ethdev@sta/librte_ethdev_rte_class_eth.c.o' > 'lib/lib@@rte_ethdev@sta/librte_ethdev_rte_ethdev.c.o' > 'lib/lib@@rte_ethdev@sta/librte_ethdev_rte_flow.c.o' > 'lib/lib@@rte_ethdev@sta/librte_ethdev_rte_mtr.c.o' > 'lib/lib@@rte_ethdev@sta/librte_ethdev_rte_tm.c.o' -Wl,--no-undefined > -Wl,--as-needed -Wl,-O1 -shared -fPIC -Wl,--start-group > -Wl,-soname,librte_ethdev.so.20.0 -Wl,--no-as-needed -pthread -lm -ldl -lnuma > lib/librte_eal.so.20.0.3 lib/librte_kvargs.so.20.0.3 > lib/librte_telemetry.so.0.200.3 lib/librte_net.so.20.0.3 > lib/librte_mbuf.so.20.0.3 lib/librte_mempool.so.20.0.3 lib/librte_ring.so.20.0.3 > lib/librte_meter.so.20.0.3 -Wl,--end-group > -Wl,--version-script=/home/renata/work/dpdk/lib/librte_ethdev/rte_ethdev_version.map > '-Wl,-rpath,$ORIGIN/' -Wl,-rpath-link,/home/renata/work/dpdk/build/lib   > /usr/bin/ld:/home/renata/work/dpdk/lib/librte_ethdev/rte_ethdev_version.map:0: > syntax error in VERSION script > collect2: error: ld returned 1 exit status > > What could be an issue, is that I need to correct the version somewhere? Hi Renata, The log says "syntax error in VERSION script", can be related to it. I did following update on top of your patches and it seems worked for me: diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev /rte_ethdev_driver.h index 462e765d1..ca16f1bcc 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -181,9 +181,6 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name, unsigned align, int socket_id); /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice. - * * Free previously allocated memzone for HW rings. * * @param eth_dev @@ -195,7 +192,7 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name, * @return * Negative errno value on error, 0 on success. */ -__rte_experimental +__rte_internal int rte_eth_dma_zone_free(const struct rte_eth_dev *dev, const char *ring_name, uint16_t queue_id); diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev /rte_ethdev_version.map index 139a81302..1212a17d3 100644 --- a/lib/librte_ethdev/rte_ethdev_version.map +++ b/lib/librte_ethdev/rte_ethdev_version.map @@ -241,5 +241,10 @@ EXPERIMENTAL { __rte_ethdev_trace_rx_burst; __rte_ethdev_trace_tx_burst; rte_flow_get_aged_flows; +}; + +INTERNAL { + global: + rte_eth_dma_zone_free; }; > > -------------------------------------------------------------------------------- > *From:* Ferruh Yigit > *Sent:* Monday, June 22, 2020 7:09 PM > *To:* Renata Saiakhova ; dev@dpdk.org > *Subject:* Re: [dpdk-dev] [PATCH v4 1/4] librte_ethdev: Introduce a function to > release HW rings >   > On 6/22/2020 10:54 AM, Renata Saiakhova wrote: >> Free previously allocated memzone for HW rings >> >> Signed-off-by: Renata Saiakhova >> --- >>  lib/librte_ethdev/rte_ethdev.c           | 30 ++++++++++++++++++++++-- >>  lib/librte_ethdev/rte_ethdev_driver.h    | 20 ++++++++++++++++ >>  lib/librte_ethdev/rte_ethdev_version.map |  1 + >>  3 files changed, 49 insertions(+), 2 deletions(-) >> >> diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c >> index 72aed59a5..ec1da2006 100644 >> --- a/lib/librte_ethdev/rte_ethdev.c >> +++ b/lib/librte_ethdev/rte_ethdev.c >> @@ -4181,6 +4181,10 @@ rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id) >>        return fd; >>  } >>  >> +#define ETH_DMA_MZONE_NAME(_name, _port_id, _queue_id, _ring_name) \ >> +     snprintf(_name, sizeof(_name), "eth_p%d_q%d_%s", \ >> +                     _port_id, _queue_id, _ring_name) >> + >>  const struct rte_memzone * >>  rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name, >>                         uint16_t queue_id, size_t size, unsigned align, >> @@ -4190,8 +4194,7 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name, >>        const struct rte_memzone *mz; >>        int rc; >>  >> -     rc = snprintf(z_name, sizeof(z_name), "eth_p%d_q%d_%s", >> -                   dev->data->port_id, queue_id, ring_name); >> +     rc = ETH_DMA_MZONE_NAME(z_name, dev->data->port_id, queue_id, ring_name); >>        if (rc >= RTE_MEMZONE_NAMESIZE) { >>                RTE_ETHDEV_LOG(ERR, "ring name too long\n"); >>                rte_errno = ENAMETOOLONG; >> @@ -4206,6 +4209,29 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name, >>                        RTE_MEMZONE_IOVA_CONTIG, align); >>  } >>  >> +int >> +rte_eth_dma_zone_free(const struct rte_eth_dev *dev, const char *ring_name, >> +             uint16_t queue_id) >> +{ >> +     char z_name[RTE_MEMZONE_NAMESIZE]; >> +     const struct rte_memzone *mz; >> +     int rc = 0; >> + >> +     rc = ETH_DMA_MZONE_NAME(z_name, dev->data->port_id, queue_id, ring_name); >> +     if (rc >= RTE_MEMZONE_NAMESIZE) { >> +             RTE_ETHDEV_LOG(ERR, "ring name too long\n"); >> +             return -ENAMETOOLONG; >> +     } >> + >> +     mz = rte_memzone_lookup(z_name); >> +     if (mz) >> +             rc = rte_memzone_free(mz); >> +     else >> +             rc = -EINVAL; >> + >> +     return rc; >> +} >> + >>  int >>  rte_eth_dev_create(struct rte_device *device, const char *name, >>        size_t priv_data_size, >> diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h >> index 99d4cd6cd..462e765d1 100644 >> --- a/lib/librte_ethdev/rte_ethdev_driver.h >> +++ b/lib/librte_ethdev/rte_ethdev_driver.h >> @@ -180,6 +180,26 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name, >>                         uint16_t queue_id, size_t size, >>                         unsigned align, int socket_id); >>  >> +/** >> + * @warning >> + * @b EXPERIMENTAL: this API may change without prior notice. >> + * >> + * Free previously allocated memzone for HW rings. >> + * >> + * @param eth_dev >> + *   The *eth_dev* pointer is the address of the *rte_eth_dev* structure >> + * @param name >> + *   The name of the memory zone >> + * @param queue_id >> + *   The index of the queue to add to name >> + * @return >> + *   Negative errno value on error, 0 on success. >> + */ >> +__rte_experimental >> +int >> +rte_eth_dma_zone_free(const struct rte_eth_dev *dev, const char *ring_name, >> +              uint16_t queue_id); >> + > > Hi Renata, > > This API is not for applications, only for drivers, right? > We recently (last release ?) introduced 'internal' (__rte_internal) attribute, > we can use '__rte_internal' instead of '__rte_experimental' if the API is not > for applications. This requires adding 'INTERNAL' block in .map file (sample > 'lib/librte_eal/rte_eal_version.map') > > > Also there are a few contribution conventions related issues which can be fixed > while merging but please check them if you will be doing new version: >  subsystem is only libname without prefix: 'ethdev' >  Commit title description starts with lowercase: 'introduce'. > sample => "ethdev: add function to release HW rings" > > > Thanks, > ferruh