From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hemant Agrawal Subject: [PATCH 2/4] mempool/dpaa: bp info dynamic allocation for multiprocess Date: Tue, 26 Mar 2019 12:01:45 +0000 Message-ID: <20190326115952.26278-2-hemant.agrawal@nxp.com> References: <20190326115952.26278-1-hemant.agrawal@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Cc: "ferruh.yigit@intel.com" , Shreyansh Jain , Akhil Goyal To: "dev@dpdk.org" Return-path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20060.outbound.protection.outlook.com [40.107.2.60]) by dpdk.org (Postfix) with ESMTP id D18D12C60 for ; Tue, 26 Mar 2019 13:01:46 +0100 (CET) In-Reply-To: <20190326115952.26278-1-hemant.agrawal@nxp.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Akhil Goyal rte_dpaa_bpid_info shall be allocated with the hugepage memory which can be shared across processes. Signed-off-by: Akhil Goyal --- drivers/bus/dpaa/include/fsl_qman.h | 1 + drivers/mempool/dpaa/dpaa_mempool.c | 10 +++++++++- drivers/mempool/dpaa/dpaa_mempool.h | 4 ++-- drivers/net/dpaa/dpaa_ethdev.c | 1 + drivers/net/dpaa/dpaa_rxtx.c | 6 +++++- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include= /fsl_qman.h index ef598ccff..e5cccbbea 100644 --- a/drivers/bus/dpaa/include/fsl_qman.h +++ b/drivers/bus/dpaa/include/fsl_qman.h @@ -1225,6 +1225,7 @@ struct qman_fq { struct rte_event ev; /* affined portal in case of static queue */ struct qman_portal *qp; + struct dpaa_bp_info *bp_array; =20 volatile unsigned long flags; =20 diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpa= a_mempool.c index 021b366fe..003081772 100644 --- a/drivers/mempool/dpaa/dpaa_mempool.c +++ b/drivers/mempool/dpaa/dpaa_mempool.c @@ -35,7 +35,7 @@ struct dpaa_memseg_list rte_dpaa_memsegs =3D TAILQ_HEAD_INITIALIZER(rte_dpaa_memsegs); =20 -struct dpaa_bp_info rte_dpaa_bpid_info[DPAA_MAX_BPOOLS]; +struct dpaa_bp_info *rte_dpaa_bpid_info; =20 static int dpaa_mbuf_create_pool(struct rte_mempool *mp) @@ -74,6 +74,14 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp) DPAA_MEMPOOL_WARN("drained %u bufs from BPID %d", num_bufs, bpid); =20 + if (rte_dpaa_bpid_info =3D=3D NULL) { + rte_dpaa_bpid_info =3D (struct dpaa_bp_info *)rte_zmalloc(NULL, + sizeof(struct dpaa_bp_info) * DPAA_MAX_BPOOLS, + RTE_CACHE_LINE_SIZE); + if (rte_dpaa_bpid_info =3D=3D NULL) + return -ENOMEM; + } + rte_dpaa_bpid_info[bpid].mp =3D mp; rte_dpaa_bpid_info[bpid].bpid =3D bpid; rte_dpaa_bpid_info[bpid].size =3D mp->elt_size; diff --git a/drivers/mempool/dpaa/dpaa_mempool.h b/drivers/mempool/dpaa/dpa= a_mempool.h index 533e1c6e2..f69e11f01 100644 --- a/drivers/mempool/dpaa/dpaa_mempool.h +++ b/drivers/mempool/dpaa/dpaa_mempool.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright 2017 NXP + * Copyright 2017,2019 NXP * */ #ifndef __DPAA_MEMPOOL_H__ @@ -54,7 +54,7 @@ DPAA_MEMPOOL_PTOV(struct dpaa_bp_info *bp_info __rte_unus= ed, uint64_t addr) #define DPAA_MEMPOOL_TO_BPID(__mp) \ (((struct dpaa_bp_info *)__mp->pool_data)->bpid) =20 -extern struct dpaa_bp_info rte_dpaa_bpid_info[DPAA_MAX_BPOOLS]; +extern struct dpaa_bp_info *rte_dpaa_bpid_info; =20 #define DPAA_BPID_TO_POOL_INFO(__bpid) (&rte_dpaa_bpid_info[__bpid]) =20 diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.= c index d42ac6286..d124169c5 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -673,6 +673,7 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, ui= nt16_t queue_idx, =20 rxq->is_static =3D true; } + rxq->bp_array =3D rte_dpaa_bpid_info; dev->data->rx_queues[queue_idx] =3D rxq; =20 /* configure the CGR size as per the desc size */ diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index c4471c227..a4085f47e 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2017 NXP + * Copyright 2017,2019 NXP * */ =20 @@ -598,6 +598,10 @@ uint16_t dpaa_eth_queue_rx(void *q, int num_rx_bufs, ret; uint32_t vdqcr_flags =3D 0; =20 + if (unlikely(rte_dpaa_bpid_info =3D=3D NULL && + rte_eal_process_type() =3D=3D RTE_PROC_SECONDARY)) + rte_dpaa_bpid_info =3D fq->bp_array; + if (likely(fq->is_static)) return dpaa_eth_queue_portal_rx(fq, bufs, nb_bufs); =20 --=20 2.17.1