From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier Matz Subject: Re: [PATCH v2 11/12] mempool: honor iova mode in virt2phy Date: Mon, 10 Jul 2017 14:27:06 +0200 Message-ID: <20170710142706.4bee2ef1@platinum> References: <20170608110513.22548-1-santosh.shukla@caviumnetworks.com> <20170710114235.18970-1-santosh.shukla@caviumnetworks.com> <20170710114235.18970-12-santosh.shukla@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: thomas@monjalon.net, dev@dpdk.org, bruce.richardson@intel.com, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, shreyansh.jain@nxp.com, gaetan.rivet@6wind.com, sergio.gonzalez.monroy@intel.com, anatoly.burakov@intel.com, stephen@networkplumber.org, maxime.coquelin@redhat.com To: Santosh Shukla Return-path: Received: from mail-wr0-f173.google.com (mail-wr0-f173.google.com [209.85.128.173]) by dpdk.org (Postfix) with ESMTP id A2C0458CB for ; Mon, 10 Jul 2017 14:27:13 +0200 (CEST) Received: by mail-wr0-f173.google.com with SMTP id 77so136606609wrb.1 for ; Mon, 10 Jul 2017 05:27:13 -0700 (PDT) In-Reply-To: <20170710114235.18970-12-santosh.shukla@caviumnetworks.com> 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 Mon, 10 Jul 2017 11:42:34 +0000, Santosh Shukla wrote: > Check iova mode and accordingly return phy addr. > > Signed-off-by: Santosh Shukla > Signed-off-by: Jerin Jacob > --- > lib/librte_mempool/rte_mempool.h | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h > index 76b5b3b15..fafa77e3b 100644 > --- a/lib/librte_mempool/rte_mempool.h > +++ b/lib/librte_mempool/rte_mempool.h > @@ -78,6 +78,7 @@ > #include > #include > #include > +#include > > #ifdef __cplusplus > extern "C" { > @@ -1397,9 +1398,14 @@ rte_mempool_empty(const struct rte_mempool *mp) > static inline phys_addr_t > rte_mempool_virt2phy(__rte_unused const struct rte_mempool *mp, const void *elt) > { > - const struct rte_mempool_objhdr *hdr; > - hdr = (const struct rte_mempool_objhdr *)RTE_PTR_SUB(elt, > + struct rte_mempool_objhdr *hdr; > + > + hdr = (struct rte_mempool_objhdr *)RTE_PTR_SUB(elt, > sizeof(*hdr)); > + > + if (rte_eal_iova_mode() == RTE_IOVA_VA) > + hdr->physaddr = (uintptr_t)elt; > + > return hdr->physaddr; > } > This overrides the physaddr field in the object hdr, this is surely not what you want (note that hdr was const). This change could at least take place in mempool_add_elem(). There is even maybe no need to change rte_mempool at all: if rte_memzone_reserve() already returns the proper address in memzone->phys_addr, it should be transparent. I didn't check the patchset in detail, but in my understanding, what we call physaddr in dpdk is actually a bus address. Shouldn't we start to rename some of these fields and functions to avoid confusion? Thanks, Olivier