> From: Santosh Shukla [mailto:santosh.shu...@caviumnetworks.com] > Sent: Thursday, August 31, 2017 4:26 AM > To: dev@dpdk.org > Cc: tho...@monjalon.net; jerin.ja...@caviumnetworks.com; > hemant.agra...@nxp.com; olivier.m...@6wind.com; > maxime.coque...@redhat.com; Gonzalez Monroy, Sergio > <sergio.gonzalez.mon...@intel.com>; Richardson, Bruce > <bruce.richard...@intel.com>; shreyansh.j...@nxp.com; > gaetan.ri...@6wind.com; Burakov, Anatoly <anatoly.bura...@intel.com>; > step...@networkplumber.org; acon...@redhat.com; Santosh Shukla > <santosh.shu...@caviumnetworks.com> > Subject: [PATCH v7 9/9] eal/rte_malloc: honor iova mode in virt2phy > > Check iova mode and accordingly return phy addr. > > Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com> > Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> > Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com> > --- > lib/librte_eal/common/rte_malloc.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/lib/librte_eal/common/rte_malloc.c > b/lib/librte_eal/common/rte_malloc.c > index 5c0627bf4..d65c05a4d 100644 > --- a/lib/librte_eal/common/rte_malloc.c > +++ b/lib/librte_eal/common/rte_malloc.c > @@ -251,10 +251,17 @@ rte_malloc_set_limit(__rte_unused const char > *type, phys_addr_t rte_malloc_virt2phy(const void *addr) { > + phys_addr_t paddr; > const struct malloc_elem *elem = malloc_elem_from_data(addr); > if (elem == NULL) > return RTE_BAD_PHYS_ADDR; > if (elem->ms->phys_addr == RTE_BAD_PHYS_ADDR) > return RTE_BAD_PHYS_ADDR; > - return elem->ms->phys_addr + ((uintptr_t)addr - (uintptr_t)elem- > >ms->addr); > + > + if (rte_eal_iova_mode() == RTE_IOVA_VA) > + paddr = (uintptr_t)addr; > + else > + paddr = elem->ms->phys_addr + > + ((uintptr_t)addr - (uintptr_t)elem->ms->addr); > + return paddr; > }
Hi Santosh, I think there's a RTE_PTR_DIFF macro for stuff like this, but otherwise Reviewed-by: Anatoly Burakov <anatoly.bura...@intel.com>