mem: fix anonymous mapping on Power9
[dpdk.git] / lib / librte_eal / linuxapp / eal / eal_memalloc.c
index 71a6e0f..7849395 100644 (file)
@@ -61,7 +61,7 @@ const int anonymous_hugepages_supported =
  * and/or memfd with hugetlbfs, so we need to be able to adjust this flag at
  * runtime, and fall back to anonymous memory.
  */
-int memfd_create_supported =
+static int memfd_create_supported =
 #ifdef MFD_HUGETLB
 #define MEMFD_SUPPORTED
                1;
@@ -753,9 +753,6 @@ mapped:
        munmap(addr, alloc_sz);
 unmapped:
        flags = MAP_FIXED;
-#ifdef RTE_ARCH_PPC_64
-       flags |= MAP_HUGETLB;
-#endif
        new_addr = eal_get_virtual_area(addr, &alloc_sz, alloc_sz, 0, flags);
        if (new_addr != addr) {
                if (new_addr != NULL)
@@ -1408,6 +1405,9 @@ sync_walk(const struct rte_memseg_list *msl, void *arg __rte_unused)
        unsigned int i;
        int msl_idx;
 
+       if (msl->external)
+               return 0;
+
        msl_idx = msl - mcfg->memsegs;
        primary_msl = &mcfg->memsegs[msl_idx];
        local_msl = &local_memsegs[msl_idx];
@@ -1456,6 +1456,9 @@ secondary_msl_create_walk(const struct rte_memseg_list *msl,
        char name[PATH_MAX];
        int msl_idx, ret;
 
+       if (msl->external)
+               return 0;
+
        msl_idx = msl - mcfg->memsegs;
        primary_msl = &mcfg->memsegs[msl_idx];
        local_msl = &local_memsegs[msl_idx];
@@ -1509,6 +1512,9 @@ fd_list_create_walk(const struct rte_memseg_list *msl,
        unsigned int len;
        int msl_idx;
 
+       if (msl->external)
+               return 0;
+
        msl_idx = msl - mcfg->memsegs;
        len = msl->memseg_arr.len;