> -----Original Message-----
> From: Olivier Matz <olivier.m...@6wind.com>
> Sent: 29 октября 2021 г. 12:35
> To: Dmitry Kozlyuk <dkozl...@nvidia.com>
> Cc: dev@dpdk.org; YuX Jiang <yux.ji...@intel.com>; Andrew Rybchenko
> <andrew.rybche...@oktetlabs.ru>
> Subject: Re: [PATCH] app/test: fix mempool test failure on FreeBSD
>
> External email: Use caution opening links or attachments
>
>
> 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?
Good catch, will send a v2.
> (...)
> > @@ -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