| 382 | } |
| 383 | |
| 384 | static rte_iova_t |
| 385 | get_iova(void *addr) |
| 386 | { |
| 387 | struct rte_memseg *ms; |
| 388 | |
| 389 | /* try registered memory first */ |
| 390 | ms = rte_mem_virt2memseg(addr, NULL); |
| 391 | if (ms == NULL || ms->iova == RTE_BAD_IOVA) |
| 392 | /* fall back to actual physical address */ |
| 393 | return rte_mem_virt2iova(addr); |
| 394 | return ms->iova + RTE_PTR_DIFF(addr, ms->addr); |
| 395 | } |
| 396 | |
| 397 | /* Populate the mempool with a virtual area. Return the number of |
| 398 | * objects added, or a negative value on error. |
no test coverage detected