[dpdk-dev] [PATCH] app/test: fix mempool test failure on FreeBSD

Olivier Matz olivier.matz at 6wind.com
Fri Oct 29 11:34:30 CEST 2021


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.jiang at intel.com>
> Signed-off-by: Dmitry Kozlyuk <dkozlyuk at nvidia.com>

Reviewed-by: Olivier Matz <olivier.matz at 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


More information about the dev mailing list