From f26a0762d6b564173d1806b12d273bfbe8651b9d Mon Sep 17 00:00:00 2001 From: Hemant Agrawal Date: Tue, 25 Jun 2019 16:10:18 +0530 Subject: [PATCH] bus/dpaa: update mempool for secondary process 1. need to use the bpool with rte_malloc instead of rte_free 2. Option to give portal to the secondary process thread. Signed-off-by: Radu Bulie Signed-off-by: Hemant Agrawal Tested-by: Akhil Goyal --- 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 86cecf67b9..277ce63696 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 #include #include +#include /* 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 54cdf37e8b..c371d3a6bc 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.20.1