X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Frte_malloc.c;h=d65c05a4db0c6cd3c491698f34b78f1b8860331c;hb=326223fea35c4fbadc081ef417e5d2b096541c69;hp=5c0627bf44dcf9d1c0c7f040555a2417acaf437b;hpb=ad10c178210e11bfa468f7f5ecca597644d2eb34;p=dpdk.git diff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c index 5c0627bf44..d65c05a4db 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; }