From patchwork Sun Oct 8 12:40:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 29892 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E7AC51B194; Sun, 8 Oct 2017 14:41:26 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0049.outbound.protection.outlook.com [104.47.40.49]) by dpdk.org (Postfix) with ESMTP id B46121B1F2 for ; Sun, 8 Oct 2017 14:41:24 +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=R9DpBmxqnxQORm3Pbo7T9j6vPXm4CJrmz7IzYuN4Gds=; b=cZIqb2mSrejiVJ5ItrfNn+XR2nVZ5oxVWM7/6oXaBjujjOIYDK+Dn5Xb/grdWr1LKkuAbxkeevFIQ13qdZ7qlRKt7yYDkZQztA1Qnv5fyn3hjTcUkHV3bUOOprqOIT0pnjzRottATaL7AWqzBcsR2tmExOKmYe7smxdERRbG/MM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (14.140.2.178) by MWHPR07MB3103.namprd07.prod.outlook.com (10.172.95.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Sun, 8 Oct 2017 12:41:20 +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: Sun, 8 Oct 2017 18:10:10 +0530 Message-Id: <20171008124011.1577-10-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171008124011.1577-1-santosh.shukla@caviumnetworks.com> References: <20170831063719.19273-1-santosh.shukla@caviumnetworks.com> <20171008124011.1577-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BMXPR01CA0045.INDPRD01.PROD.OUTLOOK.COM (10.174.214.31) To MWHPR07MB3103.namprd07.prod.outlook.com (10.172.95.9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6182e45d-fa49-4ca2-296b-08d50e49e1e5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR07MB3103; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3103; 3:8reP8qlhrsoyMR9MBAwmtp5kLzVdCTEE1T6S/wBt21RBsbrRmkUekzoWRYlcA1YhRZBzc6FwrVw9HAbkCYgliqRQ/I1wCVPtwSo0uPzRr1uh89KmXGEVY7n9pFAFbqd/j9YFT/KS5nU92ISRE0ZyEhq3Q011cH312hT+D6PvE43MBZfY1YzzgFM15Kvh2Sijoik63Gv5CLYcEpagEcSweyQT+tvHAVncid68n/AiQ9EpUXmHe8iASdokQOrtLylR; 25:RekXVVMpaKumHseJglZthWrT7hfb9jW8p4xZ5WDnTNKzKEAjP85oes6bVwAM3U9calTUgtV3DDeNRw8gJckBhLY2Ho42znnr5QPRZL/sb19+mBqSBTNfrvi09Nn8X2aV+RyL8kalB1r819gkLeKAEX16jml3UNtkVIPzZ3i+w/HXB/2XLq/+KexzW5RVFRDlPPBfl3Z8ra11AuJPFGh9FO06tbXQQGG4wdz6bZ3xkpNfzuG7eXKITrl29NyGpB86YITkcJl9r8rRYnZbvNpgtYhXH1pWS8tvZkfQqm6UjKSq1h1yYEYwq0uKU6gD2f6vTC2Rrbqfli2VZ8aIFOsJWg==; 31:Qlb6tEk6/qWgJdkSJ2kHAiWHsr74DmN2JozTA8WCs2d3f+E/EHccmf1UhXO9S+hfPP8oI2Sez6d8m1vytNig8rVTNuUZ2u75GZvwRqPe55RWJ2tgMoCdchWLbw0wSrpqogR2HWH2OSANQ1z0kQ29hPsegE38LzeBpW0U4hy/yV3H2WnURlMn3Bz0mXllde7R0uywyK1hxyZnIVhmer3I4xTfjJNnMGaZb2TatkHLrrA= X-MS-TrafficTypeDiagnostic: MWHPR07MB3103: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3103; 20:WUiMEybV627bjf3M10LLNyn9LcJFCIoPJAAk4q5HlWBTZjV4z2MR4+lT3I/pKLPOzftILPNTbpKtVs75IxEtx4NAsixvw+jV5JU4zr7+upGwQYMb1lWV0Bu8zA+ru2aOJ7sApALkKHdjBXQWNC1jBLgloCOsJ7XysZecCbw3UR7OjGkSZyX+xm2pSwP9rO7P8KWzsHKanDx+qodNkPXrlfYdJI4W7sGIcKE4a+pH//J7YCGPkIOTrHyDURppIGC65Cx3/xWOnVMTCi0kqkGrx/gIY7Zx93fs6X3tHni7kHkugIvFIZkxKnY1f5SBJRfkUYJgxv3FDX1I+n0bGzY7ys3Tk0iO+TfficWrsTzHVsfOgnxxXd/ZRdlAdq/YFA2GNCDZhuuVsxUw6/kxWPL7vcZU0mnhhVAlrkspNsk6s2bwn/Vo2ptCYhZTMX7MQNZYu4ujsMsHHZQAu0TFKdZdrWhObhavEgksVNXAeGiNVU9dD9YI/osR3JyRVoHb9Hr3QB2Yy1w6uE3aSijwvkMcsxNAAGFlndhk4Ly6oBbyiUy1fgFKu8LEagz/6A1JN0cf0CZU+enppm8OhTaeIj49gieFFs4iP8iOVt6O6cBh0fw=; 4:xjInjRFp7UD5uzdlkXm/uIiKtpR28G9nqkbMfFQSbWG0Hxwp1Jyegf9rGTc6gistKKwc52M7DcaNczl5MgEeCV4VDp4UL86bTy3lAlU1K/d8gdduQ783RXBxiTID/a9LunR8VCL8VARFtDosLx68E4abFBDfw/n0dnBNugdiKUw+FzclIpJjUtt6y8mXiUd6BhdjBGUQ8PfgSuk4epmiUr7dIqQour+CMGPzM5mkvy77HePbDIGQhznL/9Pwstvk 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)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(93006095)(10201501046)(6041248)(20161123562025)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3103; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3103; X-Forefront-PRVS: 0454444834 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(376002)(346002)(189002)(199003)(3846002)(16526018)(1076002)(6512007)(2950100002)(33646002)(478600001)(97736004)(107886003)(50466002)(25786009)(106356001)(8936002)(48376002)(36756003)(4326008)(5660300001)(50226002)(105586002)(305945005)(5009440100003)(16586007)(6666003)(189998001)(72206003)(66066001)(76176999)(81156014)(6486002)(5003940100001)(8656003)(68736007)(47776003)(316002)(53936002)(7736002)(81166006)(50986999)(2906002)(42882006)(6116002)(8676002)(101416001)(6506006)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3103; 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; MWHPR07MB3103; 23:zJ3QLmY5w8mc1DJu15RHMlzp8ekuKY/dTd1KRBsf9?= UZCCDePg6WXV0MGuUuz4ayq4ohx+3u67nYzTosMkXVyKPS98ZCU8bDp32Oz8VVY0eavRCaw6FIloWE1f6dISbh6gXlvJ2Tc8Ivo1RxXGyAt+TMDz4IrdMtvZBNhboGfDWxYjCB3EvqNHZiyW+WBWvhRn9YfCtHDq9/gOnIBCFRWuU2xEQweauGkJlLdoiKIL196/OW1vX1uIiRCs/5/bicUxzBJwrlVLg5am46EeyCcmXVItmtRsgAPtQpPll4mM/L990nmgmww/MQEP+4DUNnJGKYM5aQJKWiu4IGvBGOec4Wzy3TMU6oeCUYPYnRzAnscTO+hTQIIj1YMWJkQopUBsbIJmp1cCZrOei3AgBdsXQPBUQDGV2cFnDuO5Cd+5RijehYkwqqlNwievyhkahe6S6lv75WQHlhdY1H6U6eMxvCkcyTr7yUi/WqboR5CXmW4N9w984hAdYrmO7UOFJIF7Aqc5EQ8xSwp6nCyBnlPyZap+7UGlMb+fa3uPuPICkmKG8Od5bgCA2jvbYEfBQwyZZcRpEMdhlFLS3PWxd1/tg0XAQKcSeC02GQoGoCuF+jo2T+Ij+ypGGvJO2SRKgKtLHPJi+hxStUh2w6vTsqOhyAWdpZK2IATjt2fOls5TLHOvXUGACts3Cc3YjG92p/9361iEQH2DIEKDpVll5Qi1xI83/S5/UV0HSQvyyBStKTQkO5N3GPxZctR/jC6pQFzoiYRaEtf04rcvUWSCx4oBwgXns3dS9dVFCCIl5dh6hM8w0r2h5ZgkZEfZ+d2C7lYKxUkQM0QYQB/6O2rM4WyOpl0eqYhaY+vpuwsKA75xasQ1RNaOMEIthghEIisLBhUcvoifm9dModVVXtyAHBnXSR16kMt+hCRsMu8QqIjMCHdfc/ceYsYepomaKVxFB7V8Sb/U3kcAAUgFZccLpvJJ7YHyrUOS8H+y0UWPPFP9nSGL3hZcFRqZgtTSJmpzU7ysNNH+crc4V3EM25xaQWHlELAd5zSUhIURkWJM9SMVysy8WhvVY0aHNjuAiuq6MIj1KkqrlDkj0LXlpCi2Jjiugdkqt1lhlyp7NrYfLq5gpFfNDHAyhXBCd78dy24UTRR8tYOjcKNaP5RwzBQsF0JX5ctgibcLVyB/Fe8AxtylAJ0lKKrQwADeEha54KHaNRM X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3103; 6:qO/wNouirg2aMtD0WIC1krp0aw+00Wt4g89SZh+4tHeqqr3YZ2NINIwfNjCsRH2Fh9c9cM+5bV39UdCtTGSz97VYLkvxETAohEhrbmunyOzJ5K+rSgzeA7Ygu1bxd7S3gzPigJHDT89Eh/qNHbNeR30BCnRNdLam2VDX89pnFE5H71rrYnDzAUAU+oFpICH05vMBXTVuEJg7H+0WyIErIcjpp4/XETH+/SNDdAhOjFxUH90usdrTKl0wGU/TOF+hAAHIEsi+zDmX6UgS7m0alFrFYGulxfMQ7WAlbo36+WgyxVTM9/NWDRO5Ml88J2dGLMvJCaQjkwmxLvpK3GBIlQ==; 5:74LDuy3AfT4dtX6zcokuf21qVyZOkc00Zp0EoDdAE4/XggjEcj1/SXse6zXnBFG5OFgyMU8aD96MVVJGLPOcddWctFJDURC/qWKCz+9EJ72ScquuucrEVxJbACG5eT+Cny2hf5bpyHPZE+45XmmBrg==; 24:MiIwNP6/uLNC1kOahFmu1pCOabxSZbf7WRJ4NQFfQ+QgAt8ZwZ/oCw7N5Rzn3A54E6luXmoWd4ZCw1t5E/AJ0myY07QySezbH2IsYNqtaQk=; 7:h7pNn1YEtEHF/bcozqaFWCYaBCedq/DGRECXsFmkBSQwOCcw90OORx9iL/fqawKEtQTHZYJSYt9AHLAuMO00L1stuyuC37OM6vr8bBOC7Sxv+rONf+aDabZbARO+KqmQ5umLPhpTuFLUcaTmZFie4VguFxX6jK8P1Ryd3ChKrkR/4rgWzmg+l5NyzDx+9PNxyF3q+xIBO0+B+ApBeNK24DKOq/vFVz6iaASwC6ZKUPI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2017 12:41:20.3086 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3103 Subject: [dpdk-dev] [PATCH v3 09/10] mempool/octeontx: add support for memory area ops 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 register_memory_area 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 | 74 ++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx.c b/drivers/mempool/octeontx/rte_mempool_octeontx.c index 09df114c0..9f1c07f9d 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); } @@ -169,6 +218,27 @@ octeontx_fpavf_get_capabilities(const struct rte_mempool *mp, return 0; } +static int +octeontx_fpavf_register_memory_area(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 -ENOMEM; + + 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); + return 0; +} + static struct rte_mempool_ops octeontx_fpavf_ops = { .name = "octeontx_fpavf", .alloc = octeontx_fpavf_alloc, @@ -177,7 +247,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, - .register_memory_area = NULL, + .register_memory_area = octeontx_fpavf_register_memory_area, }; MEMPOOL_REGISTER_OPS(octeontx_fpavf_ops);