FreeBSD EAL does not implement rte_mem_virt2iova() causing an error:

    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: Yu Jiang <yux.ji...@intel.com>
Signed-off-by: Dmitry Kozlyuk <dkozl...@nvidia.com>
---
 app/test/test_mempool.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c
index 4b0f6b0e7f..ced20dcdc3 100644
--- a/app/test/test_mempool.c
+++ b/app/test/test_mempool.c
@@ -740,16 +740,17 @@ test_mempool_events_safety(void)
 static int
 test_mempool_flag_non_io_set_when_no_iova_contig_set(void)
 {
-       void *virt = NULL;
+       const struct rte_memzone *mz = NULL;
+       void *virt;
        rte_iova_t iova;
        size_t size = MEMPOOL_ELT_SIZE * 16;
        struct rte_mempool *mp = NULL;
        int ret;
 
-       virt = rte_malloc("test_mempool", size, rte_mem_page_size());
-       RTE_TEST_ASSERT_NOT_NULL(virt, "Cannot allocate memory");
-       iova = rte_mem_virt2iova(virt);
-       RTE_TEST_ASSERT_NOT_EQUAL(iova,  RTE_BAD_IOVA, "Cannot get IOVA");
+       mz = rte_memzone_reserve("test_mempool", size, SOCKET_ID_ANY, 0);
+       RTE_TEST_ASSERT_NOT_NULL(mz, "Cannot allocate memory");
+       virt = mz->addr;
+       iova = mz->iova;
        mp = rte_mempool_create_empty("empty", MEMPOOL_SIZE,
                                      MEMPOOL_ELT_SIZE, 0, 0,
                                      SOCKET_ID_ANY, 
RTE_MEMPOOL_F_NO_IOVA_CONTIG);
@@ -772,14 +773,15 @@ test_mempool_flag_non_io_set_when_no_iova_contig_set(void)
        ret = TEST_SUCCESS;
 exit:
        rte_mempool_free(mp);
-       rte_free(virt);
+       rte_memzone_free(mz);
        return ret;
 }
 
 static int
 test_mempool_flag_non_io_unset_when_populated_with_valid_iova(void)
 {
-       void *virt = NULL;
+       const struct rte_memzone *mz = NULL;
+       void *virt;
        rte_iova_t iova;
        size_t total_size = MEMPOOL_ELT_SIZE * MEMPOOL_SIZE;
        size_t block_size = total_size / 3;
@@ -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.
+        * requiring it could cause spurious test failures.
         */
-       virt = rte_malloc("test_mempool", total_size, rte_mem_page_size());
-       RTE_TEST_ASSERT_NOT_NULL(virt, "Cannot allocate memory");
-       iova = rte_mem_virt2iova(virt);
-       RTE_TEST_ASSERT_NOT_EQUAL(iova,  RTE_BAD_IOVA, "Cannot get IOVA");
+       mz = rte_memzone_reserve("test_mempool", total_size, SOCKET_ID_ANY, 0);
+       RTE_TEST_ASSERT_NOT_NULL(mz, "Cannot allocate memory");
+       virt = mz->addr;
+       iova = mz->iova;
        mp = rte_mempool_create_empty("empty", MEMPOOL_SIZE,
                                      MEMPOOL_ELT_SIZE, 0, 0,
                                      SOCKET_ID_ANY, 0);
@@ -827,7 +829,7 @@ 
test_mempool_flag_non_io_unset_when_populated_with_valid_iova(void)
 
 exit:
        rte_mempool_free(mp);
-       rte_free(virt);
+       rte_memzone_free(mz);
        return ret;
 }
 
-- 
2.25.1

Reply via email to