From patchwork Wed Sep 6 11:28:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 28419 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 95A1A6841; Wed, 6 Sep 2017 13:29:40 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0061.outbound.protection.outlook.com [104.47.34.61]) by dpdk.org (Postfix) with ESMTP id 732B96841 for ; Wed, 6 Sep 2017 13:29:38 +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=9IwIEA6qdzJQ1m8rIlyjW6Gm1SOtbWY7AaLuIDssxOQ=; b=nzB0BxIKJjY3ojCe8KrxwUn93DdVIC8IwUpuladukGBy6F+CyEwvFYcOlOzUfTiWIIk4ESSsVsJCSbqOPSEze6luFc9eBaw03bP3ouz+d1jdB9BzKPbyCuBDlwpzlaH6HzKzVMWCTMsw6GuoanStkEpwnjFYqmBkKbF8M5qHG/8= 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:34 +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:34 +0530 Message-Id: <20170906112834.32378-9-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: 4647e497-b5df-44e6-ed83-08d4f51a8e4a 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:DNzS+tNzojOS1cXmnMOAeuRHK8egQDHg8FkRwkNU6DnVj7EcaVmhmBkeamyeEMRgUSs+P5Bb+swI0TFP/CU02DFrPAWR7e3nbkxhAQtLkOdHVzNdHwFzZAchPuyagzVlxFNUCepwm6eXyzDV/sibUZzTSKcNkjPK4wyxOgWK1yiCwo3I4D8EoMeRDU03Ozd1qGsuw6J65bJAghsybDzoZAdmD8U6mB+PMusYmzl0+ZEvefuxzbihSUb45P6rmlQ7; 25:l2cGtNaewBPNdFlgQ92p8k/lsL6uOPKCbJxV+VuM1V17sa85k7D8LQm4wiuKH6A09qAWKvh7448Gp6P/gh40o8fD17HCZbDxSyuQC0zC77u7ZwHuA9xAIJPjrqfAR+P/WIuVm1dI4ZILZT3ON3ujW+sXQORTDGrLp/fhGGJOekLlX6A8Wm0M/cjh4XtNVXjOxHxcozhsDZtplBzVWCUCI2a6+xD7JZcjvOxifm+gmonRgp2rdYJdS//PvhbCsULxlUlZDqHvRojO61H7keY//MhzPqL1MxLBNOYK1MQyvX/SD5Ly0VSAoeW0AlljqapteFBbG1TKrqxXOdJxVChL3Q==; 31:OS5r5eLDqOKYoXa5YZo6yA4TXymRl0lNTVoCKUFmVyAvVXwFBTWgaouqaLdxoa5Iy80AMHsd8gzpOtvKmSLURv+ZXSCKtp8BWlkcrpms2lcNjaFYCvN1WoRO/1dDWfw6P4wBi+YgPTJctomMgsiDic0XJbL7b/bW4SQwD0Cx8jt/3nfE7S7RYPrz/lhEbMy33JHSB61s8lP9/6oE1wMv3KTXp+g+fuq3z+Gz8gX7KWc= X-MS-TrafficTypeDiagnostic: DM5PR07MB3098: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 20:amZIoKeRFO227Y+l+qMdpB0VevA0aDebehTTSHJSGjjqFeJGHSOvsF9QWj6+2qD8aRpv0P21CPjqo6tkfIojOvojbgJIM9p3rJriPp5Se67XLlbBmsb605RRfee4ftMcO9XvoCILRxTPZoFZUK3J8cYfs3xVFcj5vx9LxteQ27bHoTtCxSv5sdvjA+Y1BNwp7M7yte9hOmGD6MIJyJzv3GK+Bj0q70DTWPDCF7oF2N92FAC3pgWcQ9EbbFNbiSfsMe5ngFU03y9+AP5SoB+Ph0RBQ0wJZQv308YDCQn2QvR9N9L2+3NCXW6ZbKe7TlVTp60Xd8Tn4a0tRcDBfuAYZiKiH8mooj9zCQlfroLZrkDFeWYmmTdTrHmJE+iWmMSuWPZryVAkxdeOq9hCswAk1nPamyHU4nf17apqXY3a/KA+5DYqdQGRccN8E77XaFFq6FHxP+wEXIrYJt0TytyUAsYXZ2RvAfoYG1Kak6xmIn1vH/mGcfwXoMao2Cc6U0ow8GBZGtIMEZWnmLxpMsrX9cd2H+xKk+SD6++bLm5XbQ68qYDVNYBMUnoxlMKJwiyP+4y6RvQbbgZ3uPjf2P6OippJyxrBgwY4QwByIpmX6xI=; 4:Bx/Zr01U5ytvAZ4fMcZViOIXyQ/7atJfV9Jo4lDhe97jKNbtnMHAIlKRj/7nhZ7PZs3iSS5+FvfVUJnnEkXRm6v7qBwSWJxPOsb1UMP5HzM/cgP6XhM8kcbodwbg6/duhfIl4kfudK07D7pJPM3JRWT8WJj/Fbu9HY3rqeCVNHoPm7XNOpucRuU6ArsCzmqUP0ZaLRuHXYRyx2KM5/U6d5qvtfAomE1I1oJRC5s0lFZDgN4l4VcbkE3ggrZznKwc X-Exchange-Antispam-Report-Test: UriScan:; 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)(6506006)(6486002)(6512007)(50986999)(76176999)(106356001)(36756003)(189998001)(42186005)(105586002)(50466002)(8936002)(50226002)(48376002)(33646002)(8676002)(81156014)(81166006)(7736002)(101416001)(305945005)(68736007)(6116002)(3846002)(5003940100001)(1076002)(478600001)(15650500001)(5660300001)(72206003)(2906002)(25786009)(97736004)(4326008)(8656003)(5009440100003)(110136004)(107886003)(66066001)(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:F9FbJpuCYDV8+QgOgGZT/Ev8HYoifacK/aPOsxCN3?= yqGzDPhdSZQU+Mvwvsi9L0TwV8ZhTtVx4uXwh94K1xa5YJQkCqqWyiDrWm64Y+GzW5mIGQuTDqjh1kgvK/t6TU3cfEc1aqqi5xPAAPDxuXYCVfX8/X9RPFv13E6tWXp6o68/OwsuW6QduWOltqhc9umseAijSU19znJ9PUUgZuGrsOL5+6xWih/FA1vyQHuRgaDdkR3UaySU7DZl1WyNG5xjfUUcGHpRtB19HL+5637RW0F9Ne/AgeK6pncsY3ipQvk1JyoLXrHu/uwbLMszC6E9Eu/vea0Fp+5LJamuOkOesJhRWnTtdnZGctq8wLNPqjAlROUqjPyyvGvmSszL2L5833B4oIANU2Yzmsx1WFDTvIpaR03w17oi1bzrExm7OtdOmrMil6tvi+ZAPXNLGLurWI9boxPuguyrt5HbrqfK7vVzDWJ5etP54gTsQNyJ5I0G57bJvoM1QFTHE607jsCS+neXQthWQF1OJT28UHjNQ0jk3XzOkx6aShM0qqQUlK59Pt2Oa6ByMnNA3jnxMwlXr8hsc4ARVZUwXz5w4pWfcrum9aCzc5Ir1/9Nk9QRrm9VVDWBYz0vRZ/OTm/QEGXGR5RHxJ5RO/5s/kmZUbYEGVCCjthVls9ggfaeWtzg5MoNdaAAbY4pTMdP1Akh0gT6a6AZbgWrpmwm2M8PnLIeLOK5lkxhSjC1kLgcsiCkV8kjvs4z5gJlVwCEeMmzBfzc7ngCp+UvHvk8TaPIRXLpeaOrVu5Y3tKdG+q8Cwxa+Nnv7ZOpMB07+ygq3mrDmbjB4VJdYgUDRmiBMsY6GE0/sFkEAiHOPbRpQpjgtt3dRBzk0qSr0KCVe2xvJ6QHdOzH1wJPkI+pYqhizk/2iwz1Dt6eAJ3QSJe+fwslWhk/VB3eaSvW1B8lDru5hzZWSFj8E8zgomVO0CU31R7RYUcdhUv6Isp72FpGEQnbTVuojNn+HzEkuk9RNs3wWyG6ZuXDt58pVqwNUu5/BYOlz83Mzu9rlz3wpoPGIvQcoS6o6BDA8lRST9buEHdmDMFHrQqpynnoWIqUTUIpZjKaJBVbDDS0nQbNTWcfBD+xjxrJurbzMQyIWtPJ+9eK/79VCprgH/6uxPyIvVW19sDzTaXKw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 6:aFJDpvk55khCFjO5SSeQRB6s/Y9edzIjCrr9oXfBwss89HqZpS3AublE513y/f0lID0Cf1Aa9aj66Sfg1exEViJOuV9ui2Gxn1acJ5k+EigB0qRkkFzI/oy31ehMCfkMeaeQRrMS1SAIGee1Wyfr2oLEgNM9CcyG8kun84ge9lL5wXVz54Ps/SWkG3h/b3GdIGC8vgTd0K6snSAksOBH5l3w5KoayhQzIa1xUjbPMyQThrtbOeKG/TzJ97ZnEhgVP4uNzzlxFchMOV+5yyv0mj2brb4wZ6si10mOU1O5b7Xz63v49Cc32FBOJpn1/l8dt4CWi/bnKFESH0/uQOZllg==; 5:PBBJjXuGvFDRSLq+t7ubLAaVKZgPBbWtopkd3QXz9+qyRpUC1BdK+036tAXIz8PYvBWJHg3veV63nyuEvkiKyTsiE+gKXeOaVvjFveed1pcSSLEZ2nZkLzGPpHyUuRdYcYuPfpscxv5gBuRV2vjMs6B+JCJolXNufU7n0ehochE=; 24:7npQ9QYmqEAFzX+c8UMYwarHst7L5+Bo7hn2HHepaQz26KKgSJZ49rGShEqG1DL0Qj1A1w5KANtIpD8JrXcof0IHP1WaSo94jCTqqWL/DYw=; 7:REiG+P3vB0mVI6J/fjGWV9yKyYpa2SroxOqD6+JzADvJ5e4Uk/qJkXftReV3v33WQZadwjee6WZSPXFASpwN38zPfZAEV/Vlz/VRiQ1ZXzHGWvB12H3Ne1dkngFnR0vcnOj7nmgfpiiZFFo7NLa4J9+WJ42H4qVJsJ+jCJcLFAfn9cY1jQehjvDo0nxoLZax4Jb9f4GywalQhOzbU+eU3a5+l9VK1OGjE63KdChXGFg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2017 11:29:34.7093 (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 8/8] mempool: update range info to 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" HW pool manager e.g. Octeontx SoC demands s/w to program start and end address of pool. Currently, there is no such handle in external mempool. Introducing rte_mempool_update_range handle which will let HW(pool manager) to know when common layer selects hugepage: For each hugepage - update its start/end address to HW pool manager. Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- lib/librte_mempool/rte_mempool.c | 3 +++ lib/librte_mempool/rte_mempool.h | 22 ++++++++++++++++++++++ lib/librte_mempool/rte_mempool_ops.c | 13 +++++++++++++ lib/librte_mempool/rte_mempool_version.map | 1 + 4 files changed, 39 insertions(+) diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c index 38dab1067..65f17a7a7 100644 --- a/lib/librte_mempool/rte_mempool.c +++ b/lib/librte_mempool/rte_mempool.c @@ -363,6 +363,9 @@ rte_mempool_populate_phys(struct rte_mempool *mp, char *vaddr, struct rte_mempool_memhdr *memhdr; int ret; + /* update range info to mempool */ + rte_mempool_ops_update_range(mp, vaddr, paddr, len); + /* create the internal ring if not already done */ if ((mp->flags & MEMPOOL_F_POOL_CREATED) == 0) { ret = rte_mempool_ops_alloc(mp); diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h index 110ffb601..dfde31c35 100644 --- a/lib/librte_mempool/rte_mempool.h +++ b/lib/librte_mempool/rte_mempool.h @@ -405,6 +405,12 @@ typedef unsigned (*rte_mempool_get_count)(const struct rte_mempool *mp); typedef int (*rte_mempool_get_capabilities_t)(const struct rte_mempool *mp, unsigned int *flags); +/** + * Update range info to mempool. + */ +typedef void (*rte_mempool_update_range_t)(const struct rte_mempool *mp, + char *vaddr, phys_addr_t paddr, size_t len); + /** Structure defining mempool operations structure */ struct rte_mempool_ops { char name[RTE_MEMPOOL_OPS_NAMESIZE]; /**< Name of mempool ops struct. */ @@ -417,6 +423,7 @@ struct rte_mempool_ops { * Get the pool capability */ rte_mempool_get_capabilities_t get_capabilities; + rte_mempool_update_range_t update_range; /**< Update range to mempool */ } __rte_cache_aligned; #define RTE_MEMPOOL_MAX_OPS_IDX 16 /**< Max registered ops structs */ @@ -543,6 +550,21 @@ rte_mempool_ops_get_count(const struct rte_mempool *mp); int rte_mempool_ops_get_capabilities(const struct rte_mempool *mp, unsigned int *flags); +/** + * @internal wrapper for mempool_ops update_range callback. + * + * @param mp + * Pointer to the memory pool. + * @param vaddr + * Pointer to the buffer virtual address + * @param paddr + * Pointer to the buffer physical address + * @param len + * Pool size + */ +void +rte_mempool_ops_update_range(const struct rte_mempool *mp, + char *vaddr, phys_addr_t paddr, size_t len); /** * @internal wrapper for mempool_ops free callback. diff --git a/lib/librte_mempool/rte_mempool_ops.c b/lib/librte_mempool/rte_mempool_ops.c index 9f605ae2d..549ade2d1 100644 --- a/lib/librte_mempool/rte_mempool_ops.c +++ b/lib/librte_mempool/rte_mempool_ops.c @@ -87,6 +87,7 @@ rte_mempool_register_ops(const struct rte_mempool_ops *h) ops->dequeue = h->dequeue; ops->get_count = h->get_count; ops->get_capabilities = h->get_capabilities; + ops->update_range = h->update_range; rte_spinlock_unlock(&rte_mempool_ops_table.sl); @@ -138,6 +139,18 @@ rte_mempool_ops_get_capabilities(const struct rte_mempool *mp, return ops->get_capabilities(mp, flags); } +/* wrapper to update range info to external mempool */ +void +rte_mempool_ops_update_range(const struct rte_mempool *mp, char *vaddr, + phys_addr_t paddr, size_t len) +{ + struct rte_mempool_ops *ops; + + ops = rte_mempool_get_ops(mp->ops_index); + RTE_FUNC_PTR_OR_RET(ops->update_range); + ops->update_range(mp, vaddr, paddr, len); +} + /* sets mempool ops previously registered by rte_mempool_register_ops. */ int rte_mempool_set_ops_byname(struct rte_mempool *mp, const char *name, diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map index 3c3471507..2663001c3 100644 --- a/lib/librte_mempool/rte_mempool_version.map +++ b/lib/librte_mempool/rte_mempool_version.map @@ -46,5 +46,6 @@ DPDK_17.11 { global: rte_mempool_ops_get_capabilities; + rte_mempool_ops_update_range; } DPDK_16.07;