From mboxrd@z Thu Jan 1 00:00:00 1970 From: Santosh Shukla Subject: [PATCH v2 0/6] Infrastructure to support octeontx HW mempool manager Date: Thu, 13 Jul 2017 09:32:49 +0000 Message-ID: <20170713093255.13986-1-santosh.shukla@caviumnetworks.com> References: <20170621173248.1313-1-santosh.shukla@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain Cc: jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, Santosh Shukla To: thomas@monjalon.net, dev@dpdk.org, olivier.matz@6wind.com Return-path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 6CE4E29CB for ; Thu, 13 Jul 2017 11:33:56 +0200 (CEST) In-Reply-To: <20170621173248.1313-1-santosh.shukla@caviumnetworks.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" v2: (Note: v2 work is based on deprecation notice [1], It's for 17.11) In order to support octeontx HW mempool manager, the common mempool layer must meet below condition. - Object start address should be block size (total elem size) aligned. - Object must have the physically contiguous address within the pool. And right now mempool doesn't support both. Patchset adds infrastrucure to support both condition in a _generic_ way. Proposed solution won't effect existing mempool drivers or its functionality. Summary: Introducing capability flag. Now mempool drivers can advertise their capabilities to common mempool layer(at the pool creation time). Handlers are introduced in order to support capability flag. Flags: * MEMPOOL_F_CAPA_PHYS_CONTIG - If flag is set then Detect whether the object has the physically contiguous address with in a hugepage. * MEMPOOL_F_POOL_BLK_SZ_ALIGNED - If flag is set then make sure that object addresses are block size aligned. API: Two handles are introduced: * rte_mempool_ops_get_capability - advertise mempool manager capability. * rte_mempool_ops_update_range - Update start and end address range to HW mempool manager. v2 --> v1 : * [01/06] Per deprecation notice [1], Changed rte_mempool 'flag' data type from int to unsigned int and removed flag param from _xmem_size/usage api. * [02/06] Incorporated review feedback from v1 [2] (Suggested by Olivier) * [03/06] Renamed flag to MEMPOOL_F_CAPA_PHYS_CONTIG and comment reworded. (Suggested by Olivier per v1 [3]) * [04/06] added new mempool arg in xmem_size/usage. (Suggested by Olivier) * [05/06] patch description changed. - Removed elseif brakcet mix - removed sanity check for alignment - removed extra var delta - Removed __rte_unused from xmem_usage/size and added _BLK_SZ_ALIGN check. (Suggeted by Olivier per v1[4]) * [06/06] Added RTE_FUNC_PTR_OR_RET in rte_mempool_ops_update_ops. Checkpatch status: * WARNING: line over 80 characters Noticed for debug messages. Work history: Refer [5]. Thanks. [1] deprecation notice: http://dpdk.org/dev/patchwork/patch/26872/ [2] v1: http://dpdk.org/dev/patchwork/patch/25603/ [3] v1: http://dpdk.org/dev/patchwork/patch/25604/ [4] v1: http://dpdk.org/dev/patchwork/patch/25605/ [5] v1: http://dev.dpdk.narkive.com/Qcu55Lgz/dpdk-dev-patch-0-4-infrastructure-to-support-octeontx-hw-mempool-manager Santosh Shukla (6): mempool: fix flags data type mempool: get the mempool capability mempool: detect physical contiguous object in pool mempool: add mempool arg in xmem size and usage mempool: introduce block size align flag mempool: update range info to pool drivers/net/xenvirt/rte_mempool_gntalloc.c | 5 +- lib/librte_mempool/rte_mempool.c | 42 ++++++++++++++--- lib/librte_mempool/rte_mempool.h | 75 ++++++++++++++++++++++-------- lib/librte_mempool/rte_mempool_ops.c | 26 +++++++++++ lib/librte_mempool/rte_mempool_version.map | 8 ++++ test/test/test_mempool.c | 22 ++++----- test/test/test_mempool_perf.c | 4 +- 7 files changed, 140 insertions(+), 42 deletions(-) -- 2.13.0