test/mem: check external memseg list
authorAnatoly Burakov <anatoly.burakov@intel.com>
Fri, 21 Dec 2018 11:29:02 +0000 (11:29 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 21 Dec 2018 14:29:22 +0000 (15:29 +0100)
Extend the extmem autotest to check whether the memseg lists for
externally allocated memory are always marked as external.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
test/test/test_external_mem.c

index 06e6ccc..b877f8e 100644 (file)
@@ -13,6 +13,7 @@
 #include <rte_common.h>
 #include <rte_debug.h>
 #include <rte_eal.h>
+#include <rte_eal_memconfig.h>
 #include <rte_errno.h>
 #include <rte_malloc.h>
 #include <rte_ring.h>
@@ -29,11 +30,19 @@ check_mem(void *addr, rte_iova_t *iova, size_t pgsz, int n_pages)
 
        /* check that we can get this memory from EAL now */
        for (i = 0; i < n_pages; i++) {
+               const struct rte_memseg_list *msl;
                const struct rte_memseg *ms;
                void *cur = RTE_PTR_ADD(addr, pgsz * i);
                rte_iova_t expected_iova;
 
-               ms = rte_mem_virt2memseg(cur, NULL);
+               msl = rte_mem_virt2memseg_list(cur);
+               if (!msl->external) {
+                       printf("%s():%i: Memseg list is not marked as external\n",
+                               __func__, __LINE__);
+                       return -1;
+               }
+
+               ms = rte_mem_virt2memseg(cur, msl);
                if (ms == NULL) {
                        printf("%s():%i: Failed to retrieve memseg for external mem\n",
                                __func__, __LINE__);