From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hemant Agrawal Subject: [PATCH 1/2] mempool: indicate the usages of multi memzones Date: Wed, 6 Dec 2017 18:01:12 +0530 Message-ID: <1512563473-19969-1-git-send-email-hemant.agrawal@nxp.com> Mime-Version: 1.0 Content-Type: text/plain Cc: To: Return-path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0085.outbound.protection.outlook.com [104.47.42.85]) by dpdk.org (Postfix) with ESMTP id 3A47DE5D for ; Wed, 6 Dec 2017 13:32:13 +0100 (CET) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This is required for the optimizations w.r.t hw mempools. They will use different kind of optimizations if the buffers are from single contiguous memzone. Signed-off-by: Hemant Agrawal --- lib/librte_mempool/rte_mempool.c | 7 +++++-- lib/librte_mempool/rte_mempool.h | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c index d50dba4..9d3737c 100644 --- a/lib/librte_mempool/rte_mempool.c +++ b/lib/librte_mempool/rte_mempool.c @@ -387,13 +387,16 @@ rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr, total_elt_sz = mp->header_size + mp->elt_size + mp->trailer_size; /* Detect pool area has sufficient space for elements */ - if (mp->flags & MEMPOOL_F_CAPA_PHYS_CONTIG) { - if (len < total_elt_sz * mp->size) { + if (len < total_elt_sz * mp->size) { + if (mp->flags & MEMPOOL_F_CAPA_PHYS_CONTIG) { RTE_LOG(ERR, MEMPOOL, "pool area %" PRIx64 " not enough\n", (uint64_t)len); return -ENOSPC; } + } else { + /* Memory will be allocated from multiple memzones */ + mp->flags |= MEMPOOL_F_MULTI_MEMZONE; } memhdr = rte_zmalloc("MEMPOOL_MEMHDR", sizeof(*memhdr), 0); diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h index 721227f..394a4fe 100644 --- a/lib/librte_mempool/rte_mempool.h +++ b/lib/librte_mempool/rte_mempool.h @@ -292,6 +292,11 @@ struct rte_mempool { */ #define MEMPOOL_F_CAPA_BLK_ALIGNED_OBJECTS 0x0080 +/* Indicates that the mempool buffers are allocated from multiple memzones + * the buffer may or may not be physically contiguous. + */ +#define MEMPOOL_F_MULTI_MEMZONE 0x0100 + /** * @internal When debug is enabled, store some statistics. * -- 2.7.4