From: Jianfeng Tan Date: Wed, 11 Oct 2017 10:33:47 +0000 (+0000) Subject: mem: honor IOVA mode for no-huge case X-Git-Tag: spdx-start~1391 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=7100dfe381701103c194252ba23f05fa8d9a788c;p=dpdk.git mem: honor IOVA mode for no-huge case With the introduction of IOVA mode, the only blocker to run with 4KB pages for NICs binding to vfio-pci, is that RTE_BAD_PHYS_ADDR is not a valid IOVA address. We can refine this by using VA as IOVA if it's IOVA mode. Signed-off-by: Jianfeng Tan Acked-by: Anatoly Burakov Acked-by: Santosh Shukla --- diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c index 28bca49520..187d3389ec 100644 --- a/lib/librte_eal/linuxapp/eal/eal_memory.c +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c @@ -1030,7 +1030,10 @@ rte_eal_hugepage_init(void) strerror(errno)); return -1; } - mcfg->memseg[0].phys_addr = RTE_BAD_PHYS_ADDR; + if (rte_eal_iova_mode() == RTE_IOVA_VA) + mcfg->memseg[0].phys_addr = (uintptr_t)addr; + else + mcfg->memseg[0].phys_addr = RTE_BAD_PHYS_ADDR; mcfg->memseg[0].addr = addr; mcfg->memseg[0].hugepage_sz = RTE_PGSIZE_4K; mcfg->memseg[0].len = internal_config.memory;