1. need to use the bpool with rte_malloc instead of rte_free 2. Option to give portal to the seondary process thread.
Signed-off-by: Radu Bulie <radu-andrei.bu...@nxp.com> Signed-off-by: Hemant Agrawal <hemant.agra...@nxp.com> Tested-by: Akhil Goyal <akhil.go...@nxp.com> --- drivers/bus/dpaa/include/compat.h | 10 ++++++---- drivers/mempool/dpaa/dpaa_mempool.c | 11 ++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/bus/dpaa/include/compat.h b/drivers/bus/dpaa/include/compat.h index 86cecf67b..277ce6369 100644 --- a/drivers/bus/dpaa/include/compat.h +++ b/drivers/bus/dpaa/include/compat.h @@ -2,6 +2,7 @@ * * Copyright 2011 Freescale Semiconductor, Inc. * All rights reserved. + * Copyright 2019 NXP * */ @@ -40,6 +41,7 @@ #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 @@ -339,12 +341,12 @@ static inline void copy_bytes(void *dest, const void *src, size_t sz) #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); diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c index 003081772..3551e6d10 100644 --- a/drivers/mempool/dpaa/dpaa_mempool.c +++ b/drivers/mempool/dpaa/dpaa_mempool.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright 2017 NXP + * Copyright 2017,2019 NXP * */ @@ -51,6 +51,15 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp) 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"); -- 2.17.1