Hi Dmitry, On Fri, Oct 29, 2021 at 11:40:50AM +0300, Dmitry Kozlyuk wrote: > FreeBSD EAL does not implement rte_mem_virt2iova() > that was used in mempool_autotest, causing it to fail: > > EAL: Test assert > test_mempool_flag_non_io_unset_when_populated_with_valid_iova > line 781 failed: Cannot get IOVA > test failed at test_mempool():1030 > Test Failed > > Change unit test to use rte_memzone_reserve() to allocate memory, > which allows to obtain IOVA directly. > > Bugzilla ID: 863 > Fixes: 11541c5c81dd ("mempool: add non-IO flag") > > Reported-by: YuX Jiang <yux.ji...@intel.com> > Signed-off-by: Dmitry Kozlyuk <dkozl...@nvidia.com>
Reviewed-by: Olivier Matz <olivier.m...@6wind.com> However, I launched the test like this and it failed: $ ./build/app/test/dpdk-test --no-huge -m 512 EAL: Detected CPU lcores: 12 EAL: Detected NUMA nodes: 1 EAL: Detected shared linkage of DPDK EAL: Multi-process socket /run/user/12489/dpdk/rte/mp_socket EAL: Selected IOVA mode 'VA' APP: HPET is not enabled, using TSC as default timer RTE>>mempool_autotest (...) EAL: Test assert test_mempool_events line 585 failed: Failed to populate mempool empty1: Success test failed at test_mempool():1019 Test Failed It appears that the failure comes from: int rte_mempool_populate_anon(struct rte_mempool *mp) { (...) /* can't use MMAP_LOCKED, it does not exist on BSD */ if (rte_mem_lock(addr, size) < 0) { => rte_mem_unmap(addr, size); return 0; } The errno here is 12 (ENOMEM). This is because of the default ulimit for max locked memory: (kbytes, -l) 65536 If I increase it to 128000, it works. Would it make sense to decrease the size of the pools so that we don't reach this limit? (...) > @@ -789,12 +791,12 @@ > test_mempool_flag_non_io_unset_when_populated_with_valid_iova(void) > /* > * Since objects from the pool are never used in the test, > * we don't care for contiguous IOVA, on the other hand, > - * reiuring it could cause spurious test failures. > + * reqiuring it could cause spurious test failures. nice try :D