Reduce dependency on internal details of EAL memory subsystem, and
simplify code.

Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com>
Tested-by: Santosh Shukla <santosh.shu...@caviumnetworks.com>
Tested-by: Hemant Agrawal <hemant.agra...@nxp.com>
---
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h 
b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
index d38fc49..45fd41e 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
@@ -270,20 +270,14 @@ static phys_addr_t dpaa2_mem_vtop(uint64_t vaddr) 
__attribute__((unused));
 static phys_addr_t dpaa2_mem_vtop(uint64_t vaddr)
 {
        const struct rte_memseg *memseg;
-       int i;
 
        if (dpaa2_virt_mode)
                return vaddr;
 
-       memseg = rte_eal_get_physmem_layout();
-
-       for (i = 0; i < RTE_MAX_MEMSEG && memseg[i].addr_64 != 0; i++) {
-               if (vaddr >= memseg[i].addr_64 &&
-                   vaddr < memseg[i].addr_64 + memseg[i].len)
-                       return memseg[i].iova
-                               + (vaddr - memseg[i].addr_64);
-       }
-       return (size_t)(NULL);
+       memseg = rte_mem_virt2memseg((void *)(uintptr_t)vaddr);
+       if (memseg)
+               return memseg->phys_addr + RTE_PTR_DIFF(vaddr, memseg->addr);
+       return (size_t)NULL;
 }
 
 /**
-- 
2.7.4

Reply via email to