On 10/31/2017 2:49 PM, Ferruh Yigit wrote: > On 10/11/2017 3:33 AM, Jianfeng Tan wrote: >> 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 <jianfeng....@intel.com> >> --- >> lib/librte_eal/linuxapp/eal/eal_memory.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c >> b/lib/librte_eal/linuxapp/eal/eal_memory.c >> index 28bca49..187d338 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; > > This breaks KNI which requires physical address.
My bad, this patch is for no_hugetlbfs case. Issue seen starting from next patch in the set [1], which enables IOVA mode for Intel PMDs. With IOVA mode enabled, KNI fails. Does it make sense to add an API to set iova mode explicitly by application? Application can set iova to PA and allocate memzones it requires. [1] http://dpdk.org/commit/f37dfab2 > > Any idea how to disable RTE_IOVA_VA when KNI used? > >> mcfg->memseg[0].addr = addr; >> mcfg->memseg[0].hugepage_sz = RTE_PGSIZE_4K; >> mcfg->memseg[0].len = internal_config.memory; >> >