From patchwork Thu Aug 31 06:37:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 28119 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 54E947CB5; Thu, 31 Aug 2017 08:38:30 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0056.outbound.protection.outlook.com [104.47.32.56]) by dpdk.org (Postfix) with ESMTP id 603237CC0 for ; Thu, 31 Aug 2017 08:38:27 +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=IGI7sbvbNlG8z1B/c7PtuQMII1gxLaL8lX0nkS6Nsbc=; b=CyM3xt4XiS0xR1Q18fq7eIvCmEgTI1owgZMKDrNzGJch62xK/vbLAR6u0CYxzksYhG7NTm/s1KBh/onw8+0EQeIbR/2gnRORbNfVdygpN203g/t8T6YRqBX/X0pO827AXyvtRYkEgbkyfNOlFCpXfn3m0rxWTGU/toOT+SlY9Gs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (111.93.218.67) by MWHPR07MB3104.namprd07.prod.outlook.com (10.172.95.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10; Thu, 31 Aug 2017 06:38:22 +0000 From: Santosh Shukla To: dev@dpdk.org, olivier.matz@6wind.com Cc: jerin.jacob@caviumnetworks.com, john.mcnamara@intel.com, thomas@monjalon.net, hemant.agrawal@nxp.com, Santosh Shukla Date: Thu, 31 Aug 2017 12:07:18 +0530 Message-Id: <20170831063719.19273-10-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170831063719.19273-1-santosh.shukla@caviumnetworks.com> References: <20170824132903.32057-1-santosh.shukla@caviumnetworks.com> <20170831063719.19273-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0089.INDPRD01.PROD.OUTLOOK.COM (10.174.144.157) To MWHPR07MB3104.namprd07.prod.outlook.com (10.172.95.10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 61167b40-89c0-4f16-b25e-08d4f03ae1ea 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:MWHPR07MB3104; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3104; 3:yJGHEdbhdnLmKO/HLCNu1dEVDYtG3vXY4jFEOveYfe8WeTmS/MsEmoAT6I9aPi6XyAcO5O60BlozTnh084AoP/yysGaQyiSpL9r8vKdXYFE04xXFqSTdjVq39Xgqe8PxGirTO9SFL/Y/+8oJ1AZ/DA08zjQu581WmPuJcwwn5oN3o5lAHh+ve3FIGauLqwQinR9MU04DmL0LbUVha2bkqFy/VHVA3kH1jX5ZkxlfcwSPgO3ZntoP0Ip1hHg6C3wI; 25:M6QHNlzZOP1raagIwpUuOjH4ySlNbQTDd8n2xnWJEoygfbWPHkMBE/FbQa00lCuXuujh2VPhWq1fmiZuwkBH54R1qOYy76gURM/iHEwcQDftyQQyy8cRLlMI0BgKep+kyu6oJEEwGC6VerabZuDA5uKwQH2m+kEc+Ip1Y1auncAVczN8S4biq7g63FLjP7DzouFnhB9L5Qx6Gd/Uqmakbhl9gtlSPZIxzgDdL0ak33wPuwHk+K8ImtmcrGkaTkAE8jbVQSegbOPrKyb2307QVE+uTxbI6idblp1M8+uoR/Jxzd8xNGz1X5ly7RZcxOP82EoQCdCx2sagpv1u+ZSugg==; 31:Wy+IwCTSO6+ZkewrO2K/BoNNQjHqJe6ee+R/Ey5mfdSgggL6SHN2H/D4EX5lrTyoWP3Rl/XP8XcSNBwO49mKqSgrHGod3A0RVglvsUraz6XOojRAUGp+S1reMmY9QvciUF9uzmteAm0XSU/6emG6695ubyBEngTnh2J7yIghFlSlF8uujSye8URGVb0tC5gUttzBMrHkGY/3ms6FsnuZlxl7NBVq7PahgkK6dCGfclQ= X-MS-TrafficTypeDiagnostic: MWHPR07MB3104: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3104; 20:wcQnon7CRdsgikn/0PPCko693Bk0pw9lOJ971PP6s+2h9GSVjULQ53PGt8obXw0pdwBLJ/fraCH9dujP/mdozSFi/WKTCvGUsVZOF+fd01AcXLvHYaiIgyvQ3BoX4IAE/2jqfwzUG12P5vWJSjitz7Ec5Y68evf0Ld/y+ztsk2XDI7M50hD1IKYfC4g9G37sqCa0uDhWOJrPcBzoAW5vzm86eKoM/0XVfX6cTicBFV0VCktpsFxGMtNGQ0iOVAcJ3Av8Y3zamcwQc1NAv9m1264BVGBCI36zLdA4tSmbzWHRnQoLgdTqivHQ3yMN2aQ3yoghq+zui5hLAl6U+JTT32xF3FJk9TEDZh8VAub5GHLce9NigEi7mhFq7ZbEz/CyvA4+FpUCY6LKLlvmN1wbLu01KzbR6sPn5p1gF9azb952X3KUWKnJ19u9JoO9BLa0gRhaN+0cMzsZQaXFXKkwVMxjfu2psmnHCTOCejV9xxwdaHtBiuKlHp4vFp+xJaDKZNMGkbDcCHoha7upqJItNTDgtvvWj718dAQnkPS+eU51/oh1XJR431agGIxqJAUNxvyA6lFb+NXo9N7Jx0+Fm7Ew3dTIV9GWattFN3pSnTQ=; 4:YF/U5YIzX8+ElYhSQwH6BD1X2UsFgOLmboVZBoSbS5pYfdb68+27e81Tc3JfIaY3BDgSuSFxAHy6385Dtliwk1KsiIFXL1XjbXSQbK3kDOY/OlnCUF4S+OnhkPldkceqW6GQvnDeHO8oS+fHkuewjWKtoJW35rzBmGx0W53n6aNL+ace3/0fqrYq8lwJ/O5/gsA3X+9rSYVlfw/5U/w9czGK5A5NYI5+OEOM3DfVQzXjp0S7iVMH7QY745J4Ur8A 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)(601004)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(93006095)(3002001)(6041248)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3104; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3104; X-Forefront-PRVS: 04163EF38A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(199003)(189002)(66066001)(6486002)(33646002)(50226002)(47776003)(6506006)(68736007)(36756003)(50986999)(101416001)(4326008)(76176999)(189998001)(25786009)(15650500001)(50466002)(48376002)(7736002)(5003940100001)(6512007)(105586002)(8656003)(478600001)(6666003)(2906002)(110136004)(107886003)(305945005)(53936002)(8676002)(42186005)(5009440100003)(72206003)(42882006)(2950100002)(1076002)(97736004)(81166006)(81156014)(8936002)(3846002)(6116002)(5660300001)(106356001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3104; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; MWHPR07MB3104; 23:V0h2T2ZdPJZ9XanwleImw7AiRJjKGWaUcL4VTwY/4?= ZCHPSygWgk0hOdVH2jZCL+Q9wbqjhmk3iY8fUtGnFdmHcMvuw9uIQqJ4EdReOwvCURCve78GMEgYwFlSfTh8Ha6anrWOrEcY97xq5MmxyFERix2pjWppRaiABKxs9hoP219E0qDO7pbcYldW53NYx37PSAunqEWH+k3ecnCE8lRcjDtd4V4CGM3SI9GCcj9S1hgN4n75ERCTSg5pRRLaDlDC/WP7yeOyx8JjnIAq5QSP03lxQcUN4kafICDC7qwIvxrFBOULPIFDg/yrJYiOGs9ETwjOozdOUNkcchJsWEyFLzItlQApV0l0dI0OpdBJYF1KCzT+6jUQWzdWGwZh07xLm5V7/O92RjT/w67gQHrDtTvk8NvompOIbnmhALP3KLbbL5KmVDXN1/Os3qfgLR0uRhk//7xvQef6rV4y0yDQKq46eDeFliccWZ+jiD5fUQvmGXHyNJRgg4vhwre2ve6sDoQ60c3xwqWzG3rpfa6DDgFBHp9fnmw5MfKGOxiQd3qmqCMgvnvn5SNSrqRlCAmcOVHMQ90DlvJeJxo2TOia58e7AKMSwuwvK8Ib0Iag718RnEBMLdwjTfvBpGXgydB8y0MqjA91y/sosyqIOFKl0GQQB/adKOZfFp5MsJ4ve++I8ZGQVvx3lYbvqKsLDI6gbXKjVibV+Nhd42+BeYkn3PW5W2Xmw7lGTDPXjhl77RRpCQPcfsv0LXFHSwQVzmTawt3XH4AVheltlqTMhhuc7io69nO4E90QcBvxplmO9dLoG9lCtSD8A3rhAE4sq7tXYyeYagqQ2I82eBD+F29d2ebVCj16a/BoeoNYQo7AmZXhPIG1LJL3sazOXozj/qa9P+7g1TV0VY4UEbacTiiIQEK2WXwFXMxdmPBQUdiozgYzGhkHc0CmkwET1t0M9YV8SfiLow2dC7axzB9bj97mdYegIjWmSGg+t4stZ6gxYKWvxbLXQaiR49fAUpmevib1nti6PB7n4jrQhvWn+xMQEPhOKXST7l+WNVMKS9UuBTDWvMg4JHCz+wni8L7V/jj4ymMLlXkr4BKW8CvwwXnazHklplGMyMxoJaf/CT2uFim682LjZDpCz4rf0pqo/8H6ZP+ByCxyIaS+CmnW/57Pg== X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3104; 6:1Kt51Wo2m+vyZuY2m1vY+sxnsU0f3g26aLVm3dULsYFcmx8RcDv7An2cyXU/Xa7J2fVcXAoLYxZO+Sup9XhfRTJlu6htf/9SsW/JC1oTZBdEzCsDbPc58wJfXhYtPuzUEwFx0mxH5INz6zlpuviL5dg47DSb9y1rJOQZzkCEMyAzSbc6v35yujg+2Ge1l1Sqhe1q/+RkcsB7xch/rUuatru2lN94Mbcw6d6i4YKyH7SD89ami7zGZA7kfAVpXg3SZNGMy+kvNsJZzi4yNwuMtrVmyyVvp3s4gBwJDxEusV9s0xd0nMtX3w/mS+DTSqvRYcwYzlclRv7uspVowKCgSQ==; 5:DlRmFh7MsZt+/Z8pwZcPUmRq9HUxTySGcfZmXYxih594GPjp+ou42xxevl0JsjrzRYi58L3kfXYuL9EIdoYxU1Bg3WgYxYG31oHNF0uTB21eB4wh5ZzO6Mce39eK2mNUOuEAnc9rqU+EYul8F1cKRA==; 24:PvWitRYZhG8bfeQVAh3+cYe0ETrAVJ/Y+CawFulSs4QSven0h0NeEsVHr1fhQU7g6YRrKbSUG6Rlzn/sOL6BDGIed2hEGB4kj6cvsr8G8Tg=; 7:dctA9PvfNyzVEiWGLVhzzvGBLW6gMCSSrrDJcnhXaY1sYE0DtKCPxbLn2DuklY7psJ19M1ySu4M5Wz0qy5DDrb709la4n+LFjvxKj712HBcFjFkAs36brErrvKdMfaEbuwykClFgXv+1/G4sl17WA4EWs9GBnWK7sJPrJIL+UHaluiaXlkCTUeIcVH+btqHOFin0NZ+qx6kv+DEvNWtpZ4SbnOY18M8/5PDZoHo4D2k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2017 06:38:22.5887 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3104 Subject: [dpdk-dev] [PATCH v2 09/10] mempool/octeontx: implement pool update range 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" Add support for update range ops in mempool driver. Allow more than one HW pool when using OcteonTx mempool driver: By storing each pool information to the list and find appropriate list element by matching the rte_mempool pointers. Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- drivers/mempool/octeontx/rte_mempool_octeontx.c | 73 ++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx.c b/drivers/mempool/octeontx/rte_mempool_octeontx.c index fd3e5af07..4885191d7 100644 --- a/drivers/mempool/octeontx/rte_mempool_octeontx.c +++ b/drivers/mempool/octeontx/rte_mempool_octeontx.c @@ -36,17 +36,49 @@ #include "octeontx_fpavf.h" +/* + * Per-pool descriptor. + * Links mempool with the corresponding memzone, + * that provides memory under the pool's elements. + */ +struct octeontx_pool_info { + const struct rte_mempool *mp; + uintptr_t mz_addr; + + SLIST_ENTRY(octeontx_pool_info) link; +}; + +SLIST_HEAD(octeontx_pool_list, octeontx_pool_info); + +/* List of the allocated pools */ +static struct octeontx_pool_list octeontx_pool_head = + SLIST_HEAD_INITIALIZER(octeontx_pool_head); +/* Spinlock to protect pool list */ +static rte_spinlock_t pool_list_lock = RTE_SPINLOCK_INITIALIZER; + static int octeontx_fpavf_alloc(struct rte_mempool *mp) { uintptr_t pool; + struct octeontx_pool_info *pool_info; uint32_t memseg_count = mp->size; uint32_t object_size; uintptr_t va_start; int rc = 0; + rte_spinlock_lock(&pool_list_lock); + SLIST_FOREACH(pool_info, &octeontx_pool_head, link) { + if (pool_info->mp == mp) + break; + } + if (pool_info == NULL) { + rte_spinlock_unlock(&pool_list_lock); + return -ENXIO; + } + /* virtual hugepage mapped addr */ - va_start = ~(uint64_t)0; + va_start = pool_info->mz_addr; + rte_spinlock_unlock(&pool_list_lock); object_size = mp->elt_size + mp->header_size + mp->trailer_size; @@ -77,10 +109,27 @@ octeontx_fpavf_alloc(struct rte_mempool *mp) static void octeontx_fpavf_free(struct rte_mempool *mp) { + struct octeontx_pool_info *pool_info; uintptr_t pool; pool = (uintptr_t)mp->pool_id; + rte_spinlock_lock(&pool_list_lock); + SLIST_FOREACH(pool_info, &octeontx_pool_head, link) { + if (pool_info->mp == mp) + break; + } + + if (pool_info == NULL) { + rte_spinlock_unlock(&pool_list_lock); + rte_panic("%s: trying to free pool with no valid metadata", + __func__); + } + + SLIST_REMOVE(&octeontx_pool_head, pool_info, octeontx_pool_info, link); + rte_spinlock_unlock(&pool_list_lock); + + rte_free(pool_info); octeontx_fpa_bufpool_destroy(pool, mp->socket_id); } @@ -167,6 +216,26 @@ octeontx_fpavf_get_capabilities(struct rte_mempool *mp) return 0; } +static void +octeontx_fpavf_update_range(const struct rte_mempool *mp, + char *vaddr, phys_addr_t paddr, size_t len) +{ + struct octeontx_pool_info *pool_info; + + RTE_SET_USED(paddr); + RTE_SET_USED(len); + + pool_info = rte_malloc("octeontx_pool_info", sizeof(*pool_info), 0); + if (pool_info == NULL) + return; + + pool_info->mp = mp; + pool_info->mz_addr = (uintptr_t)vaddr; + rte_spinlock_lock(&pool_list_lock); + SLIST_INSERT_HEAD(&octeontx_pool_head, pool_info, link); + rte_spinlock_unlock(&pool_list_lock); +} + static struct rte_mempool_ops octeontx_fpavf_ops = { .name = "octeontx_fpavf", .alloc = octeontx_fpavf_alloc, @@ -175,7 +244,7 @@ static struct rte_mempool_ops octeontx_fpavf_ops = { .dequeue = octeontx_fpavf_dequeue, .get_count = octeontx_fpavf_get_count, .get_capabilities = octeontx_fpavf_get_capabilities, - .update_range = NULL, + .update_range = octeontx_fpavf_update_range, }; MEMPOOL_REGISTER_OPS(octeontx_fpavf_ops);