mem: add huge page sizes for IBM Power
[dpdk.git] / lib / librte_eal / common / eal_common_memzone.c
index 5acd9ce..f1fc4a7 100644 (file)
@@ -216,10 +216,16 @@ memzone_reserve_aligned_thread_unsafe(const char *name, size_t len,
 
                /* check flags for hugepage sizes */
                if ((flags & RTE_MEMZONE_2MB) &&
-                               free_memseg[i].hugepage_sz == RTE_PGSIZE_1G )
+                               free_memseg[i].hugepage_sz == RTE_PGSIZE_1G)
                        continue;
                if ((flags & RTE_MEMZONE_1GB) &&
-                               free_memseg[i].hugepage_sz == RTE_PGSIZE_2M )
+                               free_memseg[i].hugepage_sz == RTE_PGSIZE_2M)
+                       continue;
+               if ((flags & RTE_MEMZONE_16MB) &&
+                               free_memseg[i].hugepage_sz == RTE_PGSIZE_16G)
+                       continue;
+               if ((flags & RTE_MEMZONE_16GB) &&
+                               free_memseg[i].hugepage_sz == RTE_PGSIZE_16M)
                        continue;
 
                /* this segment is the best until now */
@@ -256,7 +262,8 @@ memzone_reserve_aligned_thread_unsafe(const char *name, size_t len,
                 * try allocating again without the size parameter otherwise -fail.
                 */
                if ((flags & RTE_MEMZONE_SIZE_HINT_ONLY)  &&
-                   ((flags & RTE_MEMZONE_1GB) || (flags & RTE_MEMZONE_2MB)))
+                   ((flags & RTE_MEMZONE_1GB) || (flags & RTE_MEMZONE_2MB)
+               || (flags & RTE_MEMZONE_16MB) || (flags & RTE_MEMZONE_16GB)))
                        return memzone_reserve_aligned_thread_unsafe(name,
                                len, socket_id, 0, align, bound);
 
@@ -313,7 +320,8 @@ rte_memzone_reserve_aligned(const char *name, size_t len,
        const struct rte_memzone *mz = NULL;
 
        /* both sizes cannot be explicitly called for */
-       if ((flags & RTE_MEMZONE_1GB) && (flags & RTE_MEMZONE_2MB)) {
+       if (((flags & RTE_MEMZONE_1GB) && (flags & RTE_MEMZONE_2MB))
+               || ((flags & RTE_MEMZONE_16MB) && (flags & RTE_MEMZONE_16GB))) {
                rte_errno = EINVAL;
                return NULL;
        }
@@ -344,7 +352,8 @@ rte_memzone_reserve_bounded(const char *name, size_t len,
        const struct rte_memzone *mz = NULL;
 
        /* both sizes cannot be explicitly called for */
-       if ((flags & RTE_MEMZONE_1GB) && (flags & RTE_MEMZONE_2MB)) {
+       if (((flags & RTE_MEMZONE_1GB) && (flags & RTE_MEMZONE_2MB))
+               || ((flags & RTE_MEMZONE_16MB) && (flags & RTE_MEMZONE_16GB))) {
                rte_errno = EINVAL;
                return NULL;
        }