From patchwork Thu Sep 7 15:30:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 28466 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 747E5199CF; Thu, 7 Sep 2017 17:31:46 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0067.outbound.protection.outlook.com [104.47.33.67]) by dpdk.org (Postfix) with ESMTP id 02874199BE for ; Thu, 7 Sep 2017 17:31:44 +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=jQGOvkr+rZBJh0ucT7nYVqpoyohOPb+iMqKD3b5JhLQ=; b=nr9dHboKC6gROCHQsdo1JKSQJSJinNpi2hy87jr5HJtQT6DY2M7EEesOBTLC3KNM8PHncRRLcfSdmLsljxkPMjTYGdKL2CUL5CuAroYIg/wnE+lnInSkubMGTRlHsHwDZZaWGgUbRJrmoFK4uhTMEcY+9P9n+Ga5o8uJRMPyZpU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (14.140.2.178) by MWHPR07MB3101.namprd07.prod.outlook.com (10.172.95.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10; Thu, 7 Sep 2017 15:31:41 +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: Thu, 7 Sep 2017 21:00:40 +0530 Message-Id: <20170907153042.30890-7-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170907153042.30890-1-santosh.shukla@caviumnetworks.com> References: <20170906112834.32378-1-santosh.shukla@caviumnetworks.com> <20170907153042.30890-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BM1PR01CA0072.INDPRD01.PROD.OUTLOOK.COM (10.174.208.140) To MWHPR07MB3101.namprd07.prod.outlook.com (10.172.95.7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 071d69e0-7bd6-4cb8-1dd6-08d4f6058b13 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:MWHPR07MB3101; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3101; 3:JlVxiq8vjdV5UcpP8os7qp62Bx/TOFmbtONfeDxLptbFgaKW/T36ePzW4hi95nhDUkEnA2/IfVujnVp8DJnI6rwbwnJtv1FGatqhVhASXe04nQmVp9M3b6R28268D5OMXlo4uLobNqoFFM9OE56kYU8lcnidIMs3eUbpoB9b0SmVRtMj6RO3BlxD0OapHWx2KsHEI5VjSqbxsa7BW7XYxR2HFBZpXT5TX+UFaUtxf4PlzVj5H1EcUmSH9JmHhTbk; 25:+mwcCW6yo9JyS6011C3pvphO+4k65Y3zXNXl6NyWSwpwHiGcReWrxwFTVjXnaFqKhwUGg8UfYYZD0XTxj+MMHhQC4vcif+pUESTHPEK4N2AzTzph/+ellro/cgri26LaHo/cQoOj9L54RgHN/nbGOsEiZ3DRSwFiCPt1wPzTa6Q6+08h8X4DGk4kc9zvfMxvDjvt0ydlcyFrrhLP8hfI94XfyjbqPTrN9lgcs9K0HceuqL2urXfcL4BKdHwVWA7ZWzYh/jgLidCypqfGa0EMOfRVCt4LoS9k62zrXBQF2ryAYSjex7JF8L1GXaUF16l3ebS/l7zEYtSRfzQWe4HN6g==; 31:w6Wifkcv5b5T0rSQzqof6+1I6nmcIojmd8nxcgkMd9NEXFmoQErGUV826kgx5fad8ToW9h5ZkjGAvBije7DsLL7ZIq6CXZWW30cIXZYBOBDF9jX+Ojk8dnnt55w6++RjnyPZM8BRuFZQRyene+xxVf8W2V0/DtRtVtKBcyrddOs1GtIxiq2oVqsZp46sCQVjiOFKwRJWXrg2oocaVEEtVKHMUwUEwxoZFib0tM7JdI4= X-MS-TrafficTypeDiagnostic: MWHPR07MB3101: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3101; 20:nEuYWLvRleL8iS/BnIcfTLXfq68zQib0vCDCv/6c0OR+CzquhHu7oJMz7ofok4quOEQjW2izIGuKqt5uojqHrMOFg7dEszWgZ/n3SBKrNPmF3D6QTr5H6xeBK/qG0x4HnOkmZTPv5yWIKUw7Kx193VbMgXSTcsOBw31ZKUusfkit7kXXZ2lWsKmiqEKgpi2ScxdJnXc1rH3DG4GZRxRVL37pQGTmlj52qB0A98gJoQAXUukQcVkmebx31iJE+zWNdMGuXgQvEHqtUNdSkjN2BCe8JWEUnLq8y9n7pDfYXPHs6k6XlbU8t55MMSmCNIomFQNVU88/901e+BRKA64ihwGsqARJ6wjgc2Y4uiJfU+s9qkeaLkyCrC38J4YDCCPYsDvGoFKeO6My2su+2SS3etYJwtRjlrjBA0jkPLQJ1eayeOEBnibsRzNVrGrxuoxatDqIps+Ef6knv1hnZ28paurVneimmmrfVVl4a4u6Mti5L7aGlbDEmh/WHUc3XRi70IQ7LxPj+1S0aRJUU8VOysRJgw9IcETJ8DUO5yPIZXUIn9v328e5LtuIYFdaqxHfnQWfvzazdSXemNJ7HTUjea18Oppx3aVr5ZFJJgw9eCA=; 4:3E9j9HO5ZT2RIqNz0trCe0MAcPzKk3YW6nohqxEUfxf4dpzwlZM9RzZNZJQjPQymYYT6B8jdR1Tfcd4TkF6Jzth7NLAzs2XP1O/+5Dpz5ZRJ7lYI5LxoJkAvC0dTKK+BOY/IOga7qlKe1p+1dfK0YjpGyAFkpFyN5HVL2Hp+yZCCYTOfhA1BG4seZHDF06u5YFhncDSYa+A3n0/cI+VyYjAdis8TVrgKgBAZfBQPrMtpAZ8Dth3bM+gAof9c3aJxe6uViYROq2JcFTC6/EINl4UyodiyCxbz6p0tHX4CE0k= 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)(5005006)(8121501046)(100000703101)(100105400095)(93006095)(3002001)(10201501046)(6041248)(20161123555025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3101; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3101; X-Forefront-PRVS: 04238CD941 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(6009001)(189002)(199003)(25786009)(5660300001)(50986999)(76176999)(42186005)(106356001)(105586002)(4326008)(33646002)(8656003)(66066001)(53936002)(36756003)(107886003)(110136004)(8936002)(50226002)(305945005)(8676002)(7736002)(5003940100001)(1076002)(6512007)(47776003)(81156014)(3846002)(50466002)(6116002)(5009440100003)(101416001)(68736007)(48376002)(97736004)(81166006)(189998001)(2906002)(72206003)(6506006)(2950100002)(42882006)(478600001)(6486002)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3101; 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; MWHPR07MB3101; 23:tHjymmd6cktjEVDV2fEJ/AxsUmzW69aoRqveAEY34?= T04T2CXFMshNdcZeDsy+9Jar/Dzp27ijzGt97v9sUlxDR8N80+8vJ03a9hPU8CrGrBYlr1dLlcg/OQRLH12+p5tvojNAHI9mnuDrapn2xBnw0l0eNN0eNJv9qiB7MryyD56UiC9TT6AtVX2nt3IWRo1R8Mhc4VHazDjmabkhTrw4soKX7lbXMKcRITCnRx+lShc7fX7CKOmgUf5u7owOJxKRZn6MJle8kNH9HC7tFtiwboomNVmGnIY7tNgTuyCPPZp+ZugDBEVzloqEUhkNmnDKHVz9GAm2lcsvns8h7gvmo4V72RCfdas2NZOsE49NEY9fIKALt87zGc/hDPh83kTSIAo0l86RdQQlzhZqoLsqFQkiOk4hpxiA3fTfI/wdzQLUMeiChFLrynknvgZcl/4TPy901se/k3RpwC35A2+vuV9G7BkLnO+BbrevVsRZHu9735KJlQyhCrQKzf9eynutkuCPUGUZiKzruDV44wZnD5ctFW4gUzCthHsTQrBasuDi2HQVN0P2XIVZpz97s1kykYYN4pLOWoEpqq03nb6deXUgr082ePcj6xMegyeSr6qiO9KuEgwN+g6iGccl+Frg7x3h9KQxNfy2JhVhMhqh/7IHk2wPdy/tGxIRlWP8iglV9a1oPNO6CPvUbIZroKuU5EnDjHlQqY/CEqrTkvUn/MqTBBGPahXDka8+jEO5SS2DNixopUWH5pJowEqEzEjNQT+qPfFz+0TBJtOVDUuJC2X65skyEImoQiKtOlRdoQ34IiijWqxJtazDRpjwooMu6q/racX0Sbxj/cvl/akxpHwF4Ifv3EvEWwMtRXdCeXkvfiXSnHsDVCL+zyu28OVmtsnE6yJlss/iYJY+4nItZzRwjhe8rTuBvzaNlyYnSxOcmRLshcmJ4RAA562tNfkQfuNlkf2LtF7FCJ1EE1RyzwtZU46TylQ1IKLyzRUzd439u65c3qWKEAtm4c3yMdt68iV5O+/dMxHvFXRC4GYmULNECKGlq97VFXmuVklDay7Vafa3eLKE81tk9F+Q8/lpf/5Yk5z53h4GHpbY2VqQMZWWzDioyXpEmz90eTwj8FH335Zb17mtcGPIQFUawD/ X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3101; 6:VIlW86oYmy5Pya4NYwJoRfxz3oKEGYWSo/QloDByOYHjtwAOjTD7IqxhXcnrqdTuRC6IjfbyruxRkOBVsK+FbAdHMAS26ZtK+KLqivIhpxy3+Aa5C0S/OgPkfduQxtEDJtR7yEHjAvKKVZolGxQMuK1OmgNuVAWBSCjAIEd5630fx+QKvJ5IIQ8zBCnIWWMo0DKem9gTUpbyYJPGJN/Eg4CXbPjCjh8OSsjtWRFEYCmUAeIWk3tCy2YChyxNNPCKsnYWNaCk0MJw8suTCO/Z4IoqQi9mu462ZmAhy/djXh/A2nNlsW2GnCmOw9sLe4V4A47gFcbEWhHvaSO5TaN0QA==; 5:TEYe8ReRHMnwBypUGKlmcxtdL8yfyzcRSzY0rVih8B6KVC/IYu8rKJ/qHDRa3tJMpGYj2ksP8TPym+1Cm+XJpJPdSTrLzZqz9CikSl9zH4xDW29bIFPQrcnPUrRAIq2c4OGALosGVffxaPm8C0WImw==; 24:wJ/jIZnaMmS30mlKOE57yvtoC8txu9FHOLJW5lIqBoRTlRQCVr1eocmjOV/QQr+4q3H6vRI+E+ASHak8t2pF1MqRSWGH+DMwM17G2HiFHws=; 7:yNe1jAiwEnjZpawdvnEzG4A/7ZpJ9KDPKcJjwt0F/MQda03NgdDKwE8jF2EsJq3n/uREwPtJ2RpCGoqDXWanXvB5x59/CZtgUaToevUmcW2WOV8Z8qnyIQPcWhcw36qLMDuBrLZtPEh/OuXFtrPSWfn4NabTnH+42sQVFKOcGMZvoRrggKMCKfO/26EBDBRW/iY5QhgAj9OOBWqkkouoIRdqr/sOmc3a20dyIa7+gkU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2017 15:31:41.1981 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3101 Subject: [dpdk-dev] [PATCH v6 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 --- 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 92de39562..146e38675 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 d251d4255..734392556 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.