*
  * Copyright 2011 Freescale Semiconductor, Inc.
  * All rights reserved.
+ * Copyright 2019 NXP
  *
  */
 
 #include <rte_common.h>
 #include <rte_debug.h>
 #include <rte_cycles.h>
+#include <rte_malloc.h>
 
 /* The following definitions are primarily to allow the single-source driver
  * interfaces to be included by arbitrary program code. Ie. for interfaces that
 #endif
 
 /* Allocator stuff */
-#define kmalloc(sz, t) malloc(sz)
-#define vmalloc(sz)    malloc(sz)
-#define kfree(p)       { if (p) free(p); }
+#define kmalloc(sz, t) rte_malloc(NULL, sz, 0)
+#define vmalloc(sz)    rte_malloc(NULL, sz, 0)
+#define kfree(p)       { if (p) rte_free(p); }
 static inline void *kzalloc(size_t sz, gfp_t __foo __rte_unused)
 {
-       void *ptr = malloc(sz);
+       void *ptr = rte_malloc(NULL, sz, 0);
 
        if (ptr)
                memset(ptr, 0, sz);
 
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- *   Copyright 2017 NXP
+ *   Copyright 2017,2019 NXP
  *
  */
 
 
        MEMPOOL_INIT_FUNC_TRACE();
 
+       if (unlikely(!RTE_PER_LCORE(dpaa_io))) {
+               ret = rte_dpaa_portal_init((void *)0);
+               if (ret) {
+                       DPAA_MEMPOOL_ERR(
+                               "rte_dpaa_portal_init failed with ret: %d",
+                                ret);
+                       return -1;
+               }
+       }
        bp = bman_new_pool(¶ms);
        if (!bp) {
                DPAA_MEMPOOL_ERR("bman_new_pool() failed");