From patchwork Wed Sep 6 11:28:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 28417 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 58F3C3777; Wed, 6 Sep 2017 13:29:34 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0067.outbound.protection.outlook.com [104.47.34.67]) by dpdk.org (Postfix) with ESMTP id 55EAF2C17 for ; Wed, 6 Sep 2017 13:29:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=4zQ7NFZX44/+J2tzyw4fbWFx73j5jcSVa/b0YAW49VA=; b=lgixfL2WfjurnG8pjKnLXKvRJNSAOYrMogqNNKi8SWvGd4pEZHz2ewwk3hIXLEv1kucuo8TjfTzd6RTmSBxRBqaHuPcGeyHHxHVPwN1Q0ftVUPDeSJvLwZCI9sHUNKaXynBCKCeVpdYETwixHUEBVtboX93LTZIVBZKY+5fqHs0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (14.140.2.178) by DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.35.12; Wed, 6 Sep 2017 11:29:28 +0000 From: Santosh Shukla To: olivier.matz@6wind.com, dev@dpdk.org Cc: thomas@monjalon.net, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, Santosh Shukla Date: Wed, 6 Sep 2017 16:58:32 +0530 Message-Id: <20170906112834.32378-7-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170906112834.32378-1-santosh.shukla@caviumnetworks.com> References: <20170815060743.21076-1-santosh.shukla@caviumnetworks.com> <20170906112834.32378-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BM1PR01CA0080.INDPRD01.PROD.OUTLOOK.COM (10.174.208.148) To DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 00aba040-4d96-4379-b451-08d4f51a8aa6 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM5PR07MB3098; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 3:fC0/edmntORhhzFjMhzKzoHibumYNN27olBxHFw6hqR0gdG1x0VwWHJkApwJpUQiIMbk4sBHouP8tN3eLGhKtpnoApO8SUCnfzXt2gUMA765C1nHv7YmMPIiSBuLaQo7db/Fv5ssNUvpqEHZ1sKRhKKfEAQ1HAJV0slU1ZI/bTyKStPB/OPEZhKVdFSOVPXnHTimmddvao0cqiVWb1faKGskyzn9ZuuQiTFvMJKpaiNc5OEQ4OtTSQUzEEkaJEwQ; 25:bkW/GCMd9SGJcEMLRacIedDJI5aqCaGML+xjlZSOg+GdUp3Y9xnbVB8YBkC4AxLJApVi0P5IT2muFcFQE2xrUGwZKBV8CgLxUEUAdF6FB6Ac8HpKV1cVhQrYmtFAXeQ6CMuhbsHrzzbvkoV+rm1tmofon69pxxF3T7NI4HTzsLW5HfQ4nma3A6+4KO20dEwcNoPB0jJ5Cj6/Id+VNwN3XDVbftI7od6BDjVjM4yb3wz9RP0hRCEdkMXAC6rRZIMRr5sazPvxabSOBqr6rTnU5BVautQEDJBAXca691lvIXDMWk8zTbAnHBi2wL9PZYAtMQ0gTL9VSOdK0PKxw459FQ==; 31:ZVpF4OSt39Mu0Uh8t1wWhvIraAEitYTIjJvBTsmjojopPoYx3lIOh3pgLHOznQieypuxLVTUgSYnzeiQKa6HuUUYzqDMnXNJpZ2Wity2OyxAX9U0UGWLqOvAwdBCdZBjzYYx9EKxn/Ync2kOZDjTogXkz/4zm/dXk9psqW5g8qO5qOKb0NlFV0fmwlC5tMuD5EIRZgNJQiOPbFuBUCWXVqbzRpGkMn1xiPWE5aNLc1I= X-MS-TrafficTypeDiagnostic: DM5PR07MB3098: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 20:2MKyzvjkbihD3iPMVMuXNm07y7nVGf9yG/Nx+l0oqt8egbQN519RFKB3bZBH6GC0SViGxH9CKmK0VjeTgq8AQL/lmFx1xJ/o9OKxWDQuzipCOVapjPr2msvbD+RBHqQHTAJ3g0ryMjgUj6TeQhu318WL2Ty7Zk439TNl4mpEw3eV2WIb5I2FY3Z0eFkFHvfKgFwyJR1Shw9Hl1MHPWKpBwstewfsZCJ5JbOt+12WrWDgPUPI8E71WyzkQijRE6bCe3vA3oPE4VaSJye1LPfPKOIFJhQ4JBoCUy3/a1A31eg7RCUrpguiM9qcBxcvYC+ZFSLiZ7RBFshIN7NWwsU78hb7F6JVc8YcR04/TqkAg1j0gKnLiaYykxZR3FIpKuHB+7wYvsb7Dhc24F10gSap4lTH0kOMcJJMfhj83ObG9bfSZPVKvoCNH4PLNFLj8zHEm+7ynA6ypwPC4P+//FZbRqABK0kppN95mBuLjPyu7qhgmCL1Ss1z4H7IS0uR3Pkb3e4zUsGFkRZkI9YRNligGDSRP7QlifKjUn86aqt62izaF9fyVJlIrrOFWqJWYjDLm7eb7+Dfe8+9W6T43CUcVJ058i/hw/LCQYAloNcRrlI=; 4:NKofbtW/JCZdjzxwDeCJrRUY8Q5iVPDOLGfTGgme5KV9pm6e1P/P8gx+Jb9KCY+2W+KpEJc4HFJD0rx78KWtcIdtvaCYr3E3siXc6Inr2WVFLoFuhB/tNHkFG5DFdsa1ggoy5wSNG0NWd6CxXCBsUR2XKLwB/QJrSnF+Bn9kHPDOGcwjvjz/itmiS0tghmjO3d2DgJe8Hz1z0QpRrGDDKARsmHHoxsFrjm6Y4YCE1M58dFGGy6WgJuO7U86WGue6AQ920mOu+y9DzpL5tiRJwzPAY6QwYXj7qQCuodzp37g= X-Exchange-Antispam-Report-Test: UriScan:(131327999870524); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123564025)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3098; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3098; X-Forefront-PRVS: 0422860ED4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(189002)(199003)(53936002)(42882006)(2950100002)(6666003)(6506006)(6486002)(6306002)(6512007)(50986999)(76176999)(106356001)(36756003)(189998001)(42186005)(105586002)(50466002)(8936002)(50226002)(48376002)(33646002)(8676002)(81156014)(81166006)(7736002)(101416001)(305945005)(966005)(68736007)(6116002)(3846002)(5003940100001)(1076002)(478600001)(5660300001)(72206003)(2906002)(25786009)(97736004)(4326008)(8656003)(5009440100003)(110136004)(575784001)(107886003)(66066001)(53376002)(47776003)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3098; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3098; 23:aXthm1uYRZBG/Jwyj+1AmPrHTYvm5W3zMNAcNhttr?= 1lcWzUVS+6XrZYWvXnFSqU/dIkynkhhBNE8nHyts2YfBTm24k4umcUEZdVrgndKSy22NZD9wE3WPrw30FzlLa/qw55cq2yA9nFyCGFV3ZnPg9lXJOa6oJykicUJA80twQLYe++1xR+vRx5oG5K76X61N219Iyn14INF1cVZPl3BCnrrnKV3XM+RGESkSrkNlkyxtNU2EaROVU/qODCX2npDxIa+JAZlaNHlpjrK0ynL2KBzQ6n2vgF3nhw/nlC6E5P/Sne0knLtzCpUuHZjDhcPiIgQCJ6bCKpvbYQAwmuCjan1uc/tmIDGr99ULwmTKxUzY7ClrIPEn+wNO5ZmGiNvXoo2q0Fq4VwvrOQS6xNanSvbvOC7zwlcwDXOvr+GIJ2l2PXJz3tuXYfvRF+TWjg3oStgTHEb0Xnd6iD48bTVmmbS9Dma35XtVUCQKgohpM8oPcEMS6kCUKvLCuTVAkxouIx0ertsEd6VL5OWmgEARo6YZVke/VS0w4Awo0RZmJkmiwI13cN6SIaIFTeT0NpC5velSgehJtmns3Voylb/A8amctMKxReqxSLWkDUDOVei7si1ROpjZK8StN9ahmKhnC0K/qytYa0qSawwnTLlqPp1G2N7xRAeeg24YPbVWsb+AACOl0qbMggaG/n3VMezJ6cwIHAi4fP+mT+PAcmszOHEX1t6oGMSyvZ9iIYM+X0/j2ZhFnemL+B/hX2Qg/bq0fMOxZnMuYZ7bK+YkErOjOw0SAM2TubhJVF/Ti7iRb3H5pn3T/MAIZZwCB7WkngB4tEkFf7OIy6+TMdzqQUGB+MWWmvYvDFlRER5SWODaoraQaY3xvbmjMDCaLaYRmtFFbPv6eh/JPKdfrusqOaL8GW8qHf3Mjm0eV0u/k8Mqdvi3XCpVu4KB21MYYqNPBG5KxSimpRO09Uj4MIdEsj0x5GrvkX3adKKzwk/D8WzSIXmaSNdEQV8VqZpdZDU/1c4A35iclUaA+rRsVVUIVm7mPj7VjudnCWjADh85uC+n+pnd2zgNr2icQrTiXAJhdENauT24MaXA657j9wJWoqyP74ZAvgWmi1rvh2Z5wtlNK2WTtorTlWM1ilFjGv6ZQ9p3Dw0XqtwgscGbuTu5NrzGDlUSwJUOYkWBPVvIGbKOksMwdBtTYtHpea+MxNAZY47X5qy0guRXoJM7elTp2E62g== X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 6:Ml6O9QSQwe5NcdMABiP9Hdu5EzPbeDOH6RnB9DpR4cyl9liL1vJJqtxP2r9jzRJMV/XNd4IkR8fJo++NJhzPE+OQz2234bNq5eOw3aYTyqHaQ92VRAn9HUComf40IUNhV1ePIBKLbzmH9EcgwYLXs/0nAeLE2buiCcQ5rhZHBNBIgxvqupv0AdyQYXOz9UO5p4Sn9K5bkCobreyWIKdYuXDz/nFe5a8qyXE4Ig3PtJQeap6bz/MYZ9LafeIz8jYxlYdoraX/wgD1FLoJ7NIcfTOhQYOx6pktabWjkX3Qsv7U5Dd0ipVezc+QjeWg5UHeC3re0nG6H4AsFxWNZoQ3ZQ==; 5:IfvViLvX8Nw4AvaJT/aO1V6TEJ5AXlItrvSPt0Lpx+91uvt8Wxcqb2mdBDMgNNYxRfzmyPbZcOt/RWNi2kt5U1x8ABQgp5HrVtoH9hHAgRDu+qGsreirmHcFwBrVfybq+KZ+j2PqoD9aJWjLySQN4HHFFcmgBPAFrPI/vudpTas=; 24:+NDWL6GYNRRigq8Sg/plRq8PEFnnSNVZnl7bW0XtZ/mAHgjmGb4OqhWmK76gzA13lA8WtBYp8iKrVr9mZdoI2wHEFmmY5SZSNUPyYsIiOTY=; 7:2q0CRZGKrUoc26jCYd1TS/Zct7DeVq6Zu0qwKNMMPLMZlnAy2oZLSSbiIRoRrVS2iVE7HO2xIngU7oAh5B7vTLSR1Tt24RW2lP1Yf3OjGmkPf8TGtnnTq9zINZ2mc0sD2e+6XEqHfEDzcKkKf/PgQ2gBMKWftGxcPOR98XNUFS8c9KtcXaOPJscMge4kdrqxUg199I6r4NKkUejo7+iOmz7QQdLQsg5Rgm81isYbNXw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2017 11:29:28.6155 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3098 Subject: [dpdk-dev] [PATCH v5 6/8] mempool: detect physical contiguous object in pool X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The memory area containing all the objects must be physically contiguous. Introducing MEMPOOL_F_CAPA_PHYS_CONTIG flag for such use-case. The flag useful to detect whether pool area has sufficient space to fit all objects. If not then return -ENOSPC. This way, we make sure that all object within a pool is contiguous. Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob Acked-by: Olivier Matz --- v4 --> v5: - Pulled example api description mentioned by Olivier, I find it more correct description as used that as is in the patch. Refer [1]. [1] http://dpdk.org/dev/patchwork/patch/27599/ lib/librte_mempool/rte_mempool.c | 10 ++++++++++ lib/librte_mempool/rte_mempool.h | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c index 3c4a096b7..103fbd0ed 100644 --- a/lib/librte_mempool/rte_mempool.c +++ b/lib/librte_mempool/rte_mempool.c @@ -369,6 +369,16 @@ rte_mempool_populate_phys(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) { + RTE_LOG(ERR, MEMPOOL, + "pool area %" PRIx64 " not enough\n", + (uint64_t)len); + return -ENOSPC; + } + } + memhdr = rte_zmalloc("MEMPOOL_MEMHDR", sizeof(*memhdr), 0); if (memhdr == NULL) return -ENOMEM; diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h index 4fb538962..63688faff 100644 --- a/lib/librte_mempool/rte_mempool.h +++ b/lib/librte_mempool/rte_mempool.h @@ -265,6 +265,12 @@ struct rte_mempool { #define MEMPOOL_F_SC_GET 0x0008 /**< Default get is "single-consumer".*/ #define MEMPOOL_F_POOL_CREATED 0x0010 /**< Internal: pool is created. */ #define MEMPOOL_F_NO_PHYS_CONTIG 0x0020 /**< Don't need physically contiguous objs. */ +/** + * This capability flag is advertised by a mempool handler, if the whole + * memory area containing the objects must be physically contiguous. + * Note: This flag should not be passed by application. + */ +#define MEMPOOL_F_CAPA_PHYS_CONTIG 0x0040 /** * @internal When debug is enabled, store some statistics.