From patchwork Mon Oct 15 12:01:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 46826 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 9E74E2C28; Mon, 15 Oct 2018 14:02:52 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00066.outbound.protection.outlook.com [40.107.0.66]) by dpdk.org (Postfix) with ESMTP id 53A442BF5 for ; Mon, 15 Oct 2018 14:02:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2qdtcVXHz0p2Powi3KwN9sVuvw3ZaGvndV+he94tGa0=; b=OIwgcaQGpxm4Jshwbo9/dUkqW3feoLS2WJ5i0syeAK9M+5Rx/8WlkdLCeX0XxMNRwQKP0QLptMXg+/yGa8jMzmItW6przK4BONvDE0ifI9u9UV4+anvZTR86WaHO2FMQefuTWHUlr1zKllzzut84wuNdZ+hgkQl2B5hBkT0ZHKo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shreyansh.jain@nxp.com; Received: from Tophie.ap.freescale.net (14.142.187.166) by DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.26; Mon, 15 Oct 2018 12:02:42 +0000 From: Shreyansh Jain To: thomas@monjalon.net Cc: ferruh.yigit@intel.com, anatoly.burakov@intel.com, pbhagavatula@caviumnetworks.com, dev@dpdk.org, Shreyansh Jain , hemant.agrawal@nxp.com Date: Mon, 15 Oct 2018 17:31:52 +0530 Message-Id: <20181015120156.27793-2-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181015120156.27793-1-shreyansh.jain@nxp.com> References: <20181015064202.20802-1-shreyansh.jain@nxp.com> <20181015120156.27793-1-shreyansh.jain@nxp.com> MIME-Version: 1.0 X-Originating-IP: [14.142.187.166] X-ClientProxiedBy: BM1PR01CA0102.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00::18) To DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9a85e97f-55d5-4f3a-c86b-08d632961d3d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR04MB4683; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 3:goV/RZv4aJIDYpePLKlBGQTBy8p8rWndoVwXnPa4KAn1TOrLS8ffMkG/+IWoBghwzEy24ObPBPg7U0LPYujKu0E6J82fQMigbfy5CTFIJ/SCd6JBNRJ5CWtKv0kF1ICAY1FXRAJV62dsOL4hRWgJE+/NccsfKiHAbBCFKsARJ9cme6uWycSYKnmnsFAunGYfq9Yn/Wglm+6UbcHr1jMhYdXXCPMeQk961AIiZ6jPL1lB9K3WSmWryXkzTX8klmOt; 25:AotcQc9b1IhfIVUKWPV5ivWAKx39Uh13+qqXKv9+8u2fsYdi3foQjD7BJLPZH9uu9fjFnELKSqDHScwdnxOQ48msRVMUWURd/cjFwKewHOorxuzlefOebiffhafJR7gGoMBPu/KdNx0oIemm4y4QyVV4LnN50o6fe1sYj0C0rUHSM4BwKqyjRA38Z5NsIJSCKBdzzZbDbUrYz/XDyO3wQN5rR0RN3fPzrJJwUu0Bc9+U4arPVexNnGBPTvhPgCWlvzapGLGc9b9S/2jS22q6uaVc/FYWRo8jfFwSzd9W4ihfxHnRtZoz1cGgROs08x+OCNi6D7TNIc+gVAH18NpMhtFeDT57BtSl1J7UG5tPstQ=; 31:gau5PDR2ReT0XVXqVc5aJf4Lap49Vdkcjwc8BUn3HiNop/r7iDcO97602YRGjzjvDWQpd50mqJwvaJjXWRH0k96ZWuBaGR6fG12VVLBh6v1nHT5cuLBEoZJ18Hze/yj+nCH0jpcCcLxIYAavELPqxTsG0K6VOvPmfMih/FHj/rcEC0miUUnaHmgppKNSbm9jmoCfKKv3uQBJ3c+1m9zfX6E6immXevPXndkiFYZYiX0= X-MS-TrafficTypeDiagnostic: DB7PR04MB4683: X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 20:Qhr7YETLPHFpGDpdphdXz34lT8T0eHEOh5sbBLD9SWVtPdzf6vgsIbjkWOi0lxGfaJBFusa2RYYsYStCAXh/5ws6c9P561COnYtAF74nbRB/UwFzLObiOOpm4sz7/O/jUGifeWF0v6/Ae8a43vb7PHJW65+ilMpno6U4R88ESfqVTGX1nlja45jWv9vgGnBeVJhzRN1n9WT7Z1yOI8VltrVOgY4nhYTIw7hXHAEWtIpS8EXdux3wlYTwmYWlZ6HntMYXDdQ/QXeYlc4ZLdD6vM+UDO0wTij3vPyRPrQyTKi4NJx/AnDd+KGn28bBTLxIqMMFZT83ts4Y7EfUyhJdogWZgn5MRvQkZqb6l4Qnb3zEU8whBKAfgfmRHbIEJYotgYchtghdnvBmLKEEd/xFxvUeS23RY8QV4eNKYWkzEoB5DASltWY9YkjyfZ4p+pDIzoEOK/XAnYJNAyd+6r/qfE8kszyNi7DF603X1q7SKtgoOwEu43SbIcs3AutvjOqO; 4:6PPMRjWZPpfRuy5ett9QT0rLTXmIxbvpggXYZE5nX7RHH6fkcE7HzQm99YIPs0U9LY5Y6wqdI7WQa04Tvw72pn3/O7T+jsxpzZk/VzEn1AJdL21ZtD6UI4ovaEgUp8pjcyoMjjOraKommzHxcZKapqkIfcXxdUdJLrrr6K+gIAGfaxu/qV5edHA9ctbues96oirwxjnd2aKStQQxGgUPHKJZHSGyGtn/ACjvxox+4DdRB/ZSNh4urWkfEDxAE+Go5ZuHMi45FMMbBSlm/tsnkEx71bUzIfD7Ru2SCoJDZDF5wQkVLafeF/GIKieGVz88 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991067); SRVR:DB7PR04MB4683; BCL:0; PCL:0; RULEID:; SRVR:DB7PR04MB4683; X-Forefront-PRVS: 0826B2F01B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(136003)(39860400002)(376002)(366004)(199004)(189003)(6666004)(68736007)(2361001)(50226002)(186003)(16526019)(26005)(106356001)(47776003)(305945005)(105586002)(316002)(2351001)(66066001)(16586007)(4326008)(2906002)(97736004)(6916009)(36756003)(8676002)(5660300001)(8936002)(78486010)(81166006)(81156014)(1076002)(3846002)(86362001)(6486002)(6116002)(1006002)(2616005)(53936002)(478600001)(51416003)(52116002)(55236004)(6506007)(386003)(76176011)(48376002)(446003)(11346002)(44832011)(956004)(50466002)(25786009)(6512007)(476003)(486006)(7736002)(110426005); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR04MB4683; H:Tophie.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR04MB4683; 23:r3B0RLIYZFlnVkDUOCAwDxlq73IbV700/V1S5xhxa?= qq/ln9Nee0DFugFByOtMiHl4B+TKtKr1HzRo2WyL5pThHacnFTnmA7iqSBKlFAd2tckVMuIk8OVq5WYYt1iafbPGESoCtKuQEtfcCEWjlCC7AWsEHVRH/OTosnjV4iMPBWkufCOoMTIPnEiCWn03tFJgW/mqceC+6hdUw/6fSYuq6dGMRPxarN9ow8SBazUukrJ6Bavq6A8ZPldWX/TPytC04ZfTC61uSHUPM8MU80MfkIzyEvnCw3rgbb/clQv6wpdDcltEkhuSJP8Dmv1xxPZS6bLz8y9qXSthVIGnu9mDEm7YtAwYUrfPMNtZMIm63tho6oJZoGREz3Bjy/gv/NSh7kjNv8dmlOQNceSVQvtFoXxslcvhm1UccVLbhqEP+N3Gb2KpLZWDA0gkz4nGS+DrMMSqlI9fkBYvoDlBAdBxhWES11vCO/ErBpZ6d2o1ADUE23hsDEysRsITfIRWEAnwBfV29W5gLLgrbIDlHW05QiQn1Z+kgWt5xAFTUFV2ph4jmJX4ExX+yFMiZ1yPvaZOZ/L4ygGNz+NgIqlP4+iZRl7EhioQpWj1zm2vvfUuproQJSydra7hfG5hJ6+UR75zCoOi/374ydNP4VTYpuuc8qLz+I/smiCGrti2yEuNaPPUQkAgzs0Csk1q4fOR7BlhHgeVx/AKP7EggbsmfV1CpahxoOd7zFjI4rZ08cIGBorQJxgz0uWkNiZUhCr51VTH2GDOB0Ve2s6qrpSoQz0Ocj6U0dmI9C0hgKA4CiVZOLwk/S6Wnubp9qQ7yzgPzg9pgslTN7gDE28NdHvUJHcvSfXXTuz02wD0gCVLzwK/jfcTu+MJl3U0xNND2U3jzDT7BxDY85u/+b0flrlJWmujeV2SKUYCVm/LY10krfouCAqmTgYQu8N2HL7jUTDqUXWMyfMUnAP90gIGTOlT4uEug+nSushw9PmsQm+4qn3PGT6Hqkm7/7c531YwNureuQlM/MPW8ZrXwTPvd9+U52ox8MXo8bRGPQe6l1XTQg55D/zIMwWNvWpT4XoCHq9Y2t/toCS9nHfq1b35+XKtH8EqJX0tAdhV6q8sfLMUs6fhokHd0FZSLPZISfjuQHv33qX+mNpcWxQyoXxM6BRwDE0GwhdzQyh9aenwMP6hJnGc+mkTfOjef7GCIjLdvSZLY5kY32lTOSaRNoluyEAnJBSwijf3g1jZ1eQfrgkq3I1+CyCck1jh87fdYE4rWfAOpRuQQirhVHYieAnyA3bkom55A/l1OJpFC3MPFC81gh+SAdWvu9Zf2z+0d35WaGN8/GX X-Microsoft-Antispam-Message-Info: xyowvPiN2Bzq6bGUgsnR0OhPxaYGBvAUmTgtR3fWiS1TKM4xKwom/osFpblhx7bwsqQ/D4hnheebht5PrY/dj3Dq0g1lX1+TZuCVmmL59QNCAucgvnNdygYc/ghLnh6EKo31dOAN9pz/f1otf5J3MnaBuCeh1oJ7T6+67u/qXqerRqZgME3ktixKpXAVy7dYEt0bcVValxizBzjznm5DyzmQwWK0FTto0hnzuYNlo8k1UkGxVzbC0yBZftpIVIP+Hf+8G6dqxNyS9Du/g8TDxz75UzIHcak3gvC5mM6qSopJOlijIGBB36QKQWylaC2ljl97wp7IlsuieWrQVtRqy7WGy/0EFl3DecTs2FL6HgE= X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 6:gervGPLFsVEZ2FlXiVt2MLhcFDI5+TzSCJC8jVk4i38xmW7Cp8k5AxSj96IuE5IdmsPPppHp1U4IBJF/63/SIP3wJZFChYb+mM8/EG2zORuBbiRAHg+IyVTzY0J7aX3pJcMSX0wB+S2q7kT93a9pMPi2xXISISUvwgFtX6ks3K7ze14LqkFvPhAh/TBEWWP1q0jjStABmJ6vv41eGJhvzsXM9ZXxWZr0nVBv4N2GjRg6Mhe790GNZeLyUnn5yTMEpATbxeLHjSVvg+0354emgdTNZr1UZQFWz+AayZwEtOV4kF1FAP/9pjHZ4ScKJNnYEXA/CKsacUej9duh4Z7s8bctZkh+VDBHk9tBnanDRf+Ka1xlLb07lrM9lmYXtrz+VRPywZToj2deEc25CmFJmzWx2LLh0N6Na+NxOaxyUQOsojgnV11dYGBYI9aPzAOOacgualFLGG9DPob/xB0s9g==; 5:vYAygAAkGo/lG2nwkRq85YztiYfbNJ9CULocgyebdgbmUWYe6GEwHeGfjahMP22bxKiyQTBDKsAsMgx6azYgtmrU5FkFaMo6vWRKRNOE2cd9k1K76oBZKiu5nJm1qsFNXdWM0QT+/h5O/FT19K5wP7yQS5HjnIVVoJiRFdDH53U=; 7:H2XQtqBelYqJjuwRvlapSg+29z6Kozsrd3ndm8/kIxEOtT+2dNa487Bs3Hs1kALpiH0DSDhvu+JTyFHR60///GKlTDstlUMTLeS6cmFG3nUDLTR/yk0VRIzdEpQfAkTzA7yAkxHnZm+D9VWOCnuHeeVi1LCOdH6Z+LcRHdmrjDRPHgkz+/PvSz38bSckYTHnENY52Zx4/DGHt7mOt8ec1NqpI+Tg000yI7HXVEytS4SniqMm6G48sMSgaixkIbnw SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2018 12:02:42.1354 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9a85e97f-55d5-4f3a-c86b-08d632961d3d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4683 Subject: [dpdk-dev] [PATCH v5 1/5] bus/fslmc: fix physical addressing check 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" In case RTE_LIBRTE_DPAA2_USE_PHYS_IOVA is enabled, only supported class is RTE_IOVA_PA. Fixes: f7768afac101 ("bus/fslmc: support dynamic IOVA") Cc: hemant.agrawal@nxp.com Signed-off-by: Shreyansh Jain --- drivers/bus/fslmc/fslmc_bus.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c index 960f55071..2bc9457bc 100644 --- a/drivers/bus/fslmc/fslmc_bus.c +++ b/drivers/bus/fslmc/fslmc_bus.c @@ -496,6 +496,10 @@ rte_dpaa2_get_iommu_class(void) if (TAILQ_EMPTY(&rte_fslmc_bus.device_list)) return RTE_IOVA_DC; +#ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA + return RTE_IOVA_PA; +#endif + /* check if all devices on the bus support Virtual addressing or not */ has_iova_va = fslmc_all_device_support_iova(); From patchwork Mon Oct 15 12:01:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 46827 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 9FB7C493D; Mon, 15 Oct 2018 14:02:54 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00066.outbound.protection.outlook.com [40.107.0.66]) by dpdk.org (Postfix) with ESMTP id 6E5062C28 for ; Mon, 15 Oct 2018 14:02:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K3vMPf3w/c5cshjPKmlO7j5mbRp0V5+v5vv414y80o4=; b=kNH3tI9PTyaxRJSIkLat8qADL/KZ3uSq13KTR6Q48SAlmZwqOTSpLg87vpqBFOlRRsghBBjEUhq4f0vh4ldz9Y/yRtCus3fd/A78A89PNFtVOg2kvKwcletTRnAxHdYjKyrNvegkZJ2pK2zMdz47zCt9ivnBDU0G5D5Z0LU7CjI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shreyansh.jain@nxp.com; Received: from Tophie.ap.freescale.net (14.142.187.166) by DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.26; Mon, 15 Oct 2018 12:02:44 +0000 From: Shreyansh Jain To: thomas@monjalon.net Cc: ferruh.yigit@intel.com, anatoly.burakov@intel.com, pbhagavatula@caviumnetworks.com, dev@dpdk.org, Shreyansh Jain Date: Mon, 15 Oct 2018 17:31:53 +0530 Message-Id: <20181015120156.27793-3-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181015120156.27793-1-shreyansh.jain@nxp.com> References: <20181015064202.20802-1-shreyansh.jain@nxp.com> <20181015120156.27793-1-shreyansh.jain@nxp.com> MIME-Version: 1.0 X-Originating-IP: [14.142.187.166] X-ClientProxiedBy: BM1PR01CA0102.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00::18) To DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5b786970-dd7c-4cf7-3613-08d632961e60 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR04MB4683; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 3:kTxlNIkS2SJtGDHF9tm2etdDe12mPaJoV3G5KLAxrTqcUDISfYYrGXVxj1OVmMReiA3OYhbiUi/p2no0BG185xX4jnia/ZnBZ2JBV9zucvajJDh/qaMj4N9h5GvAYfiqpy/e6ZuBeg3c+jiSrjyzCjsrRBrsyDyamFzxz5zBnF7kR4TJpOGobKgG1nt72ZancNtdIvOWt5+xRoanoZ+9jpQ4AG5qSr9RgAXACehIqsZe0gQEi61/xUwige4/Pxwn; 25:B1Pp3H1zl5irgWZy+j280t+Mmjc+eaXO5Smbpf4WPn5YkaVh5brTHo+PWZ5AhlOZ57xKO57uW09afz1Z1WxZ1xKuglyIXBaDnIZJK4i3chBK/+HJrvus+ojPIIrZKe0a6x57TpxEi1QsYNUWlDXqY459+47+8egbT4fSD8lTjJNLb3Z9qGIbu1Ygk141sftSG0jcyQTG9dvtY42ha0i5e/azMAlkKrwofBZAmzCld5IW2aVm2bOfiWEBIdILFqljo2jIgiMQa7dAmiJuhAh3cRXQE8Wn9fYJb5BVOr37NAhksXEwgeykprtjDAk31E4byx8/oKWYF0gNPDjuao2Ns4/7YDpLmhpu6lRiQ0qhBBY=; 31:jAXO6Zbg2pL8L5nU+RG/yRrSGn3z2nMpCWBhFSRCc1c0tZxVFrIK4FdWsyuIDZIhY5G6AWQZQmOls88zBq6u2EgpSBF27YjukLZlOwhQ/AGwaEEViYGhBF8CQRx26SITfd5Q7eE75RLn4YLGdMd5RiVX+uPS4TXZ9q2wG6RKR4eO6YbqEk93tedxGN7I4azMBER+78cbhAVaRKAs8ar7amYpx1qTdWRCNClvl+vvVJY= X-MS-TrafficTypeDiagnostic: DB7PR04MB4683: X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 20:2lHY1KAtw/CemOGmrGwFwLNuNBsSVQgFN3OFxQzi5J7o3EfesYQc6X0Dd68252X8jLRux5n9OF46IIgg9utidtPJF3IpFDp8uxtUTCr7uSFBECE/b2n7vJlZi1ldivac6ll5C6MmUHdJnJXPynUoivg6/zUTMmaGKBu5/SOi6EHhlNY+0i1V5F2XNc5EumF3y2mbTEwRgnuNs+4sG6NfifA9a620sV0i0BqcaGrDP2/MfoTOy7mGjVPXV8lJMBdozPkSLDCCXJDLYg15xx+nKKkUO2Cve0U576hUqdzVdnPZYYS1+gItsSSseoB9OOFMiLzzM41gsh2V8HjHZ8Yvc+MHTEY81R0jD3bXJ9pWX+lMwkavKv4oTmpqECSOFgAQluQzwmLRSbFsTm0dH+VUOkk3XNoQteM2/vc8nRQQ4JpUoyth+IA65WbKvVMzSilarfYld5vrmG8VixAqkq0der88S98ZGXkFPOptiMnaYHK7JkQmhYoGFjp3Bo5C/kYe; 4:HR605+BjuM8dbHO3qZInGLxSNg5JVC6jvbyHg1gPw6qPfpYC1iQvqbL3QCTkgzkOGf+gWzS7qeev/KGZkmQM9iBJGDYe0RlAb83KxJ+itlQY2xaOJM4/5GdOLTvxYvA6kHsJ9u8TEczzJa03io+C20GdlbdMNF8wDrcz8Wv1jRr6WhNCtTMrM7u6efzyFDnuTp7Tflh3PouC6PVEWKM285/U6HCGJYt8R5DEkpnEdM3pD8tqJg0KnPOy42IhgYy3AQxL2PL1Pm3MgbD0/rpIJ1sqBMwkhMQVjTssNKJMZhmgblB1KSu1C2rLsQfgb3Yz X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991067); SRVR:DB7PR04MB4683; BCL:0; PCL:0; RULEID:; SRVR:DB7PR04MB4683; X-Forefront-PRVS: 0826B2F01B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(136003)(39860400002)(376002)(366004)(199004)(189003)(6666004)(68736007)(2361001)(50226002)(186003)(16526019)(26005)(106356001)(47776003)(305945005)(105586002)(316002)(14444005)(2351001)(66066001)(16586007)(4326008)(2906002)(97736004)(6916009)(36756003)(8676002)(5660300001)(8936002)(78486010)(81166006)(81156014)(1076002)(3846002)(86362001)(6486002)(6116002)(1006002)(2616005)(53936002)(478600001)(51416003)(52116002)(55236004)(6506007)(386003)(76176011)(48376002)(446003)(11346002)(44832011)(956004)(50466002)(25786009)(6512007)(476003)(486006)(7736002)(110426005); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR04MB4683; H:Tophie.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR04MB4683; 23:CyYAT0m0xzOKFtMaUvXYCZ2FJFVtS8oI8gICwApVC?= 4wV+XOGeW/lobMoKQoUeOVThPhTYNOUjlYk06Hr1F9t7M3T6MbfxdCw/hpwYnUcagR93z3ksFe+ISYKkb+PF6X1XbDcpP5eSkc7ZwKZAbXQ0Pg4NOV+134e6gLsdvf4zC9aZqgu2/pgApzYIHIx5MEpYCK/UhDKuNVMQiX/fZeNew/bqFJf9JpHbdnRaNX5MwrLgolQVM3bYpHeN0usuxtQSAIp+pfZe+oL5S1TOkUduOp7Sq/J6HUUcwnAI4nk1S2k1wHU9okOTa5547HwBXRbqsHQN+QhECeNTZJhhhNNIoPeGhxJe+QbZf1RAuSZoVZC1k9Rcf+6MmfeHUuHcWiE1fHCOAnKY/+4TFKEpJiCVP5xBgXm5tVnLYb9/Flw8jBasINKf6OcyYJuc/xPfIzLq0ORsDx/zxzb9L0KnykTtqN+jaIES2dBOOt+7U9s7/5lQN0ItQ1GYl2liilbvSndkbzJ/gn3QAr0iSltRgfPzUQfYlBRD2KApKtVX5JAYNaqQreDXuIz3KMx4gzZQvxSNCSPdhgG7rWu9vpdq5oF4soIuogSrB+GTXvOJL94Z7HJPC6m+ZygfKpiC1uXfiU7ts8HucnrnL6DsP58ZHRXLKy7/dTVs1BbzemMOrcxlKe5I34joM9tXwaKUkWtGsaKasR2TMrJTvzRTm6re/Nubt6rlW5LvmRMdZgLcRBSRftaqh5WB9nqZuOIMczwmnvIOsOeIv6d3fawGcUFffsYoZbO5njRvT78IZCliFElQbH6I8LMcWIT+afUshfz+BjM0RWj4/TmdHCwGkxiF/0qKEty0SfWEEJ6smKRKuI1ImiZIFTTRMRU6ING66zcN2Qn522k0WOeOI8YFSNrpCnoJgxh00Cm0P46WV5NnXQhWtR3B4SJTrMMnGpq+VxSFxYOlAqQ9sfOYia5/1xLku1i4dE8Y7CaEfvb2Tnc5yG3/5L4t1cqKaTDO7cSSAnRRDkvQbxi+JnNZBg5IQJryKB6BFbQEm+TTSu5ceqzMofAQyYmDaU5T2yp8665V/U104JqYF1uJ9CWI/GYUAnYKIALzdb2G4RNWg+AzYOpIMMbC80ThpzX/0tuDuDXJEo0eJbmOLF5a9g/Edg0RWBWqj/5+nk2rVMPZ6jDdv8iSbSyOUqhfYvE8YAQSUj01e+GHxAIqNRCgGsDGeVGTkpSnV8At6dAD1GPoXgzdOwxRFIQWAzyIkBkA6M14nDQAKvXKRC7HaIjxYLaPjnoHeSdzrfPXY12QXoOxehddsnwktmLNnPfzgokXYkhGTv5j5eSF0XwmSzVNyiydUrUDbHv552qTQ== X-Microsoft-Antispam-Message-Info: h9aGAQlzWcO8L3Vso1eVI69EPSA9M38Iu0KbXu5CNsZ34IrnsG1vwD9MSHHw2BP/Nv/SG1P85cKXlqtk9o8dwa8jtGaFMOA18B234G6suHiPt1p8yPE0bJmXqtGuROvuh4dxFDVqTWVkWp4CFU8ajUw4lUxH/ZetYb+a+5kLPonYWbNAall7BAwFDPkUTrR9EMdGntVNqIB8CRSIpa6ra4jzwzX/rx3JWeWES8U1c7u+aHMdIIB6Fe/0WzIZLGkVWw8FzzkzmgyfGOgeGEoGXZ0kyB/dB5gzY2NcsvNTGHSLigOe8kLSjQKOCXIjXMA9HR/2pRB0i7+tHz6mozjJjUYJwlsqPs94p3mYBZCVuZo= X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 6:Z3/BY1KAVyVobeEc/a20zlS+x2HGHPvBXmSJC3qElN5Ai+xGjKGQGl5Z9RTQVG34kg4rgLYa6JkLdKUEOdcpWxzsZ2hc24I4up+Gbgs5nMq7FYFx8ZRLrpwZ4fiRyEFHF3VC5mrVVSVTi0c+IrtrWcArm2i/y250diYv4nStrwvD0dmRGSeHHzP/6yQneKkIzmn0n4T+aU2rXGXTJxht4Ea5450520DZH98MZ2k8epahjsEbXMqJBZkbGHzIPE75V57Z4KAO3IXOZ1AlaeH65KJvnR5q8JHgn/VknIBIqG3aGZkDR504wY8K9Q4pvi74+Q/+BaMAzKcTkzYJ3nmzxBLXmo2SXzlT5Cgx99twdIx0YcVSxW76HCcOBXAidpsCNoQ8ktjhT2Hlyk1Iwh2Mj/Twt57/mDmMqmTX+X2tMAeSXsHyl0NIqrq0avmNQs9MYOFQZA2MORNpwev7QiuIIw==; 5:9llVnRUi1juQggB3j71i8u2mQhWt4Ds+wp8OcaS5CkxTrbtCcpL6E0IwAz6uEPz6apMgv7E3ABiOiFwC5ad0obKQh8PCwBXzqNJU/IAl2bhzdc5VqUOet3LGi07ob6TNtOGubjBQGKn6NkMFJ1XpkdEDb5o/hFYnPHXMjseIWrg=; 7:qy19PgPJhQLxfpZLLtq2Bkci2zubOswCf87mV2MLPFn8CrKJ9Ttvj/6uEM8eXshOhXWcI5kOSuXa8Wv7jBpOP5fcWyfGwkGPQ5b5XBJV2o9poGdvhzn0jXUQTc6nmKk/dbshS8Cnak64NOYSGvjDetH7P8vyKowxxw4B7INM1dioj6F5zQjW0qe38kAMiSimye/GxVdfFeWF1CvHR2cgaoxrXxFtxUvLxw+wqflkLvXUyZneXDXlicZzpUpxUKOV SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2018 12:02:44.2109 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5b786970-dd7c-4cf7-3613-08d632961e60 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4683 Subject: [dpdk-dev] [PATCH v5 2/5] drivers: common as dependency for bus 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" Prior to this patch, bus and common compiled parallel. But, post this dependency is created. This is especially important for the DPAA/FSLMC buses which are going to use the common/dpaax library. Signed-off-by: Shreyansh Jain --- drivers/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/Makefile b/drivers/Makefile index 75660765e..7d5da5d9f 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -5,6 +5,7 @@ include $(RTE_SDK)/mk/rte.vars.mk DIRS-y += common DIRS-y += bus +DEPDIRS-bus := common DIRS-y += mempool DEPDIRS-mempool := common bus DIRS-y += net From patchwork Mon Oct 15 12:01:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 46828 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 94A854C9D; Mon, 15 Oct 2018 14:02:56 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00066.outbound.protection.outlook.com [40.107.0.66]) by dpdk.org (Postfix) with ESMTP id 880C72C2F for ; Mon, 15 Oct 2018 14:02:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V9TO3OPmntgGo8QujRluns6nk+2bAk3EMdyeBnOpcqM=; b=VUpyhedF5+ai7z4GTf8gasAvIUzAOKDqiKftrzUSGAlwOAonfNxK0413m2/uSUbTSOB0RyyAY88bB8QV/nsq3NTzapXvD5r8+4NUUDbvoG63s3ZL27Rb1MBt3bsApm8kLBJJcSswzk8T1spb9XlbfstUDc0XG89JIwy+x3do+qU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shreyansh.jain@nxp.com; Received: from Tophie.ap.freescale.net (14.142.187.166) by DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.26; Mon, 15 Oct 2018 12:02:46 +0000 From: Shreyansh Jain To: thomas@monjalon.net Cc: ferruh.yigit@intel.com, anatoly.burakov@intel.com, pbhagavatula@caviumnetworks.com, dev@dpdk.org, Shreyansh Jain Date: Mon, 15 Oct 2018 17:31:54 +0530 Message-Id: <20181015120156.27793-4-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181015120156.27793-1-shreyansh.jain@nxp.com> References: <20181015064202.20802-1-shreyansh.jain@nxp.com> <20181015120156.27793-1-shreyansh.jain@nxp.com> MIME-Version: 1.0 X-Originating-IP: [14.142.187.166] X-ClientProxiedBy: BM1PR01CA0102.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00::18) To DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9ccc7be1-46ba-4647-bd14-08d632961f7f X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR04MB4683; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 3:oS0JuTt1odjrkW8NyckoTK4D4h+Qjg34i2zFCyxmaqVV77KIF+2htmRwJ1lVkxxhvRU3/N637TdwOvz0eXWK94ZXrPgfGWDRS8gDkrAHfJ3W6pu79WWObengxu34DqUjwJE3pu4xwQYruwazHtoatEspENGH7VpbE+LBBIAezx+Gteso3JNTQ6M+k+eyyDPQMKvE0SvBTQA0R2UBFtb4q4B+xCkmg9/Rap2f84J8KKUJNx0ubqxThOlWX8GVXcEY; 25:de86hTcEsmEg9IWOkLsg08FkEAkOVvX+b11lPv46bYCRhUzg/ryIRlI+7ZE5QWRlP81DLI3QCTVo30kqisU1jIIcjgEjyiKhwIeC57vWfFr0W/uM8xnb6hTAQtsYQ7cdYr60rHKRrQP95QIngk7CzsTL7mRvWkQDoSR0kZnof8hbULemTBk4/TFQyS8Ej7kUpNR/K3vwAc1amKCr4IY3p/tTxiAC/nC77tfN7uQfeaUIyXnUdf6SMluhXDuxBwYORh7b+XWHffUVvNeXVmIf0DSZPpzKX7Bz2BijI61+2Yu5SCGh28Awj1C/ZXJ0BVfF88pS5IoSVG9iXTVFgzVLfA3TYZygS78tF+Kop3y8pzg=; 31:692KGfnyMfVgtep5h9LsxUlQk52XK4EHGMt6ptkN+pHBFm3KV1W3LH9GVJVXpIIEEld+SzL1txzh3wUlFFirNzph6XVsvQ9pAqGj2I7Xov6yGB12nbnyRRonazkTmL/rekqdAkmsjpPoORqUtgD9wN9603A0IoDY3oEIz6p17fP0730tA0fvbTMmecw05bkeJvWiCxY7YPmyrwqmj8FMrVS6cJQ52pDE5j9BI4jRSk0= X-MS-TrafficTypeDiagnostic: DB7PR04MB4683: X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 20:0P2eU7+aIP1LYYRbCMZu8jSKPfJdjrPBSc++WZV+Hkqd6XHxbnRgJbksAtOfvTnZo1/TGEzpOrMoTdgcGhVFv+kg2JhXYMCHCVZLcUwV9W4LMwle2Z8anCjGJJ/FZXKL1L95+Hwpi2zJWJKfrODadc0+JL6+Lqv+cJTujHZDB8rsfc97Co/h5rx8zqlGvdvpyKq6PZo4mQ526HjqxKaf/TvVKS7Yyr8iqviPaar8JAUrm+HeUuj11uR8Dt20In6ONr++NZkqIBv+XvcvxnLTiI+vxInXWwsGWqkjIfLr5FDOGZyv51//+s0gBPC+P3w2zRS9Qh5F4tkWYFfCUjSNJrKvTMB/69zgv4SKypSjXJZ36DtLe+Hu6ehF/hQXYjmjtQpBrv5EQz3aDvmu3jRdlH2+hCLhUcBIFfjLD1r4W9LTqMADKepUnyKCSbHrNYl8hGTyLVEQIVMCz8raCkFyug0LG0jorttfPcVSrrHFyZr110KOebWuh5oHF37P2Zy2; 4:72eJmJWC85Ir+YTYTDGhd1dsYPo4TZTJ4RV7dY5rEFrDvsMgSNwz7IyvZCMjF8L9nQN6AC9rjb5TO1vOW+NK75FkYhmX4OS4KL7/9XCYsw7Dl9+khG556L5J4tCQhmVxjhBJA5jdmwGdF8oMADg6f5NZ/5Z44VubNoZ84yT/C6zn4GBGp0sCqqmemRmwWDZHji6bPYa6QrTrefSb20yDa1n8jDnJxMog4eO7YEEln0GXpI4Qc+U5flRbq6Lq2URNW9DNHeFYUpZ6K56tz6pkGc6AmciMviEq286qh6DEQxpW1T+EVgI4unngwFbgNcSeVggqEISO5im0ESqu2JbtALcDj0WrrzAgOy9+vB3mf5wC82yRaCmTkxDDGF3JPOuE X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(131327999870524)(163750095850); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991067); SRVR:DB7PR04MB4683; BCL:0; PCL:0; RULEID:; SRVR:DB7PR04MB4683; X-Forefront-PRVS: 0826B2F01B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(136003)(39860400002)(376002)(366004)(199004)(189003)(6666004)(68736007)(2361001)(50226002)(186003)(16526019)(26005)(4744004)(106356001)(47776003)(305945005)(105586002)(316002)(14444005)(2351001)(66066001)(16586007)(4326008)(2906002)(97736004)(6916009)(36756003)(8676002)(5660300001)(8936002)(78486010)(81166006)(81156014)(1076002)(3846002)(575784001)(86362001)(6486002)(6116002)(1006002)(2616005)(53936002)(478600001)(51416003)(52116002)(55236004)(6506007)(386003)(76176011)(48376002)(446003)(11346002)(44832011)(956004)(50466002)(25786009)(6512007)(476003)(486006)(7736002)(110426005)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR04MB4683; H:Tophie.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR04MB4683; 23:KR5Usu15GyqGJ78lYcLz7BkvA2V2sh931rMwYcrJn?= X2dhbU6xhomniqGTox/KxgGZpe/jqubPNJskMQ3xhQ4oANKRLBPq2lI7/Sg94PodMYY/qOtUUPf+sIZZ4IsPTCSl8TlMr4HmDPL6xNdjSmJpR927FJaplSH9fjSMQXxlJMvMVdsJttizLCwyXOzjWNJGkz2wBAZYw/xKcguBlubH2PQ77phGCPvQyoxvP3A6Sf2xsgNmmLlkEvxVicBcjIl1unz0pIpKbB3p4bjO2ykWchYJYUop56LjTpr9DLZ3Ya1napE+mgBcYt9gnkLCLVO0EcqAfjiQjh2ZVKHvfJL6QIiegtp3YP6NKw2YSv0bol168yju9srGajeeYP67OBz07NgjyCMf2l04PpwunKmLHz/rZeR2hsngtQCfsBD1WxyYTbfgQLG4wMoW0aqWTZXRK51AQCUKCLGsqZf9D8i9aMQST4ban/YuCE9PscoJLbmJmlfXgWhPZWfu5NCcvCTdJlDwu+yT9hCuqMJfcMV+rNkzn9FDjqzAipXPaSg55D37cCgKihQODRYoAGW+qA/324y6rs85EEYAyQQpElC7lEyCUcIMKL34taLQKHWtUIWu2D/WD1I3gdb+of2kC1vc3suceCs50AsF0FzCQ1GZgdL0u1ODgG09RK30nMUSGBKKZhwW2/xYAeeOMwoO1FL2TUkrdyPvg+08N/3JkWCXx1k1XTTnohfmllhh8V1ufKmx5yRVDeTACXKT1KgDcDW3rTwQHDIwH7FI4n1PqIEbD1sHYdl51W4a4tr7z1YEofTEkeL4APF4ts8ez/+0Fo4cy/2hbqZIGdAvpLnSrpNwBAkTCnC3cWmaz2UODXqugRYiXkLuMvu6kBs6qAnIQD2e+JKP7TJ85pXBrPNFmorKQF9WzkAjEPFVdEYYX3QfEh2Exed7RDCGA0PG4iLN4dD2xJkLib5epZ23iSM6TUzwPPqLQeQmPePYtGzAFX0QPkowrQ22V/fMYk7koEWs2IESjxy6+n35jwvKDximM6ebiiUIwh7pkPyT+4v+F1fD5Pa8J058OFREE/CGyBnpnh0ShaAXj65xS2mkZVotBU6qgxgVyvvNw5837mvclwrpkZpsLm/bKPNUbmAOqEtt3bsU8Wp9CEgjsl/1GNkeAu3b/bjKIAHcAHeC0AZLh0bY/eFWfibn4LyowiBjAtKkYFImcMArypEdjyqCwU5Ww9q2OpIUBUQmpfifyO5mVxNB04ouz6MPC9HPvm/NpFSCVfH32KidA/gZkDpmFZO5jc0ifGs82Bb7gVqDRYZOqNM0d0Irjt/zodC48oT7o8oT2oBu92m53ZMjW1c3CWePOxrstp+nGOoq3fQVPGXqMYyXgP/OFb/PudngJxEUaHR1HNj65xSp3W4TzDGtqBvt9xg6g== X-Microsoft-Antispam-Message-Info: P5g2BUHSjpz9yiTXdk4eCVGqkEaLwbVkTqWi50yGgixZCRsDPozs+UulfArGVWeKGBE0+N7+L6nDXIvfSRdS1WkzYLfv8G769tjuobdGWmRx+USJLwBnNB9iILzs4MszTUyqNhk2PkH5vAnGV/szSw574naaDC9okLEn0xQZAUdZstOGLzEEh53H+7nvQ31LPmigH2Z48MeFRe7fHDXjxwMs1TxAza+HWtYOAyrnWtDbB+R4THmua8sP/F8MBbCG+ERBGuIvxZK+jTisAumJdeaMB7L7cOG8hEDtLsZMM60MJrTayREV4j3tEYmCg+xohfdC6jqACCf3UqqnU403wxOzOVz+23zPK6uzo0lijZo= X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 6:YUUhARpqqxDCxQ0n+sBEEZRje4JwbXH+L1EXy4KczafqxPWOnYTPG+Ayz3B2icdOuzBFB5ilHH87xHS05Ut82ZBQPu0rjQI+78U+lXMV/fIZg1JaQ2vodbEr69kNuunsWbOz/dcBczxnnMEMMqPT5c3WT2J022h2q+rKrv01HBgSCdr8gfDcVycMaqZLoW1HqXP6fycPisNVs7a1QSohT0aF68xK/zZFoI3JFrwXo4F4h/T9kVsxrGaX7tRsDSUlrHwVAkXzyMArxMpcWWqf77ZLRQbYsps/Du3My8pt8eR2TUe2LJ1sslByAXlf3JHhprtUnnPAwskcvOh3Na4siUKFjCWT5HPfWpJZQuG/aVIaoyPDAgzeKjOFHuVQ6Ba6Up3OUYvTSuWIsDVwVKLycN2PyunjRh0ftjv/VYl/hB7ifFIDQEQVtoNsc/MLzBM47rqGNB2HlVxtBaSU3C9BMw==; 5:v6XlJGut/KNkCUkZ/RNTZ74VJjVP7IZzc+9bJjTQFDyTtnc+RSWDiFUniDGBBu47LeBHc/rDo3uxmN7La8HEX8TrXAV32wUQWu6I4+EpHs0q5E1BWgUiHCbpAheD6+eAY2HYpYImtekl9q/A1jNxndqbxzawDmTV5l643uF4UYw=; 7:FlBvW3mwo43jwAFMqiZ5drJM8m9GUWYB9oobwjHBtYzqHrerxM44S4wcM7in1zTBWoyqSZytH5o7f4ocAd28VhOFAkqsdSjNfMjbgksrIvFN2am1FxjeYZkIrp0EDiaXr6nFJxUq1FqxFul9MPFMII+GSXlUQSreVmkSs7/zNbyEgQwWLuN3WxJytc1E9CGLl6ByzTJz+GRkM6cvCVwLSjiZFcC4DcH0jUpOVdtnDd2l7ivX7Q3nVOgHcs1FAOWY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2018 12:02:46.0872 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9ccc7be1-46ba-4647-bd14-08d632961f7f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4683 Subject: [dpdk-dev] [PATCH v5 3/5] common/dpaax: add library for PA VA translation table 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" A common library, valid for dpaaX drivers, which is used to maintain a local copy of PA->VA translations. In case of physical addressing mode (one of the option for FSLMC, and only option for DPAA bus), the addresses of descriptors Rx'd are physical. These need to be converted into equivalent VA for rte_mbuf and other similar calls. Using the rte_mem_virt2iova or rte_mem_virt2phy is expensive. This library is an attempt to reduce the overall cost associated with this translation. A small table is maintained, containing continuous entries representing a continguous physical range. Each of these entries stores the equivalent VA, which is fed during mempool creation, or memory allocation/deallocation callbacks. Signed-off-by: Shreyansh Jain --- config/common_base | 5 + config/common_linuxapp | 5 + drivers/common/Makefile | 4 + drivers/common/dpaax/Makefile | 31 ++ drivers/common/dpaax/dpaax_iova_table.c | 461 ++++++++++++++++++ drivers/common/dpaax/dpaax_iova_table.h | 103 ++++ drivers/common/dpaax/dpaax_logs.h | 39 ++ drivers/common/dpaax/meson.build | 12 + .../common/dpaax/rte_common_dpaax_version.map | 11 + drivers/common/meson.build | 2 +- 10 files changed, 672 insertions(+), 1 deletion(-) create mode 100644 drivers/common/dpaax/Makefile create mode 100644 drivers/common/dpaax/dpaax_iova_table.c create mode 100644 drivers/common/dpaax/dpaax_iova_table.h create mode 100644 drivers/common/dpaax/dpaax_logs.h create mode 100644 drivers/common/dpaax/meson.build create mode 100644 drivers/common/dpaax/rte_common_dpaax_version.map diff --git a/config/common_base b/config/common_base index 8c7ead68d..7f10f7215 100644 --- a/config/common_base +++ b/config/common_base @@ -139,6 +139,11 @@ CONFIG_RTE_ETHDEV_PROFILE_WITH_VTUNE=n # CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n +# +# Common libraries, before Bus/PMDs +# +CONFIG_RTE_LIBRTE_COMMON_DPAAX=n + # # Compile the Intel FPGA bus # diff --git a/config/common_linuxapp b/config/common_linuxapp index 485e1467d..76b884c48 100644 --- a/config/common_linuxapp +++ b/config/common_linuxapp @@ -29,6 +29,11 @@ CONFIG_RTE_PROC_INFO=y CONFIG_RTE_LIBRTE_VMBUS=y CONFIG_RTE_LIBRTE_NETVSC_PMD=y +# +# Common libraries, before Bus/PMDs +# +CONFIG_RTE_LIBRTE_COMMON_DPAAX=y + # NXP DPAA BUS and drivers CONFIG_RTE_LIBRTE_DPAA_BUS=y CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=y diff --git a/drivers/common/Makefile b/drivers/common/Makefile index b498c238f..6392a3412 100644 --- a/drivers/common/Makefile +++ b/drivers/common/Makefile @@ -14,4 +14,8 @@ ifneq (,$(findstring y,$(MVEP-y))) DIRS-y += mvep endif +ifeq ($(CONFIG_RTE_LIBRTE_COMMON_DPAAX),y) +DIRS-y += dpaax +endif + include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/common/dpaax/Makefile b/drivers/common/dpaax/Makefile new file mode 100644 index 000000000..94d2cf0ce --- /dev/null +++ b/drivers/common/dpaax/Makefile @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2018 NXP +# + +include $(RTE_SDK)/mk/rte.vars.mk + +# +# library name +# +LIB = librte_common_dpaax.a + +CFLAGS += -DALLOW_EXPERIMENTAL_API +CFLAGS += -O3 +CFLAGS += $(WERROR_FLAGS) + +# versioning export map +EXPORT_MAP := rte_common_dpaax_version.map + +# library version +LIBABIVER := 1 + +# +# all source are stored in SRCS-y +# +SRCS-y += dpaax_iova_table.c + +LDLIBS += -lrte_eal + +SYMLINK-y-include += dpaax_iova_table.h + +include $(RTE_SDK)/mk/rte.lib.mk \ No newline at end of file diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c new file mode 100644 index 000000000..d54267bb7 --- /dev/null +++ b/drivers/common/dpaax/dpaax_iova_table.c @@ -0,0 +1,461 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2018 NXP + */ + +#include + +#include "dpaax_iova_table.h" +#include "dpaax_logs.h" + +/* Global dpaax logger identifier */ +int dpaax_logger; + +/* Global table reference */ +struct dpaax_iova_table *dpaax_iova_table_p; + +static int dpaax_handle_memevents(void); + +/* A structure representing the device-tree node available in /proc/device-tree. + */ +struct reg_node { + phys_addr_t addr; + size_t len; +}; + +/* A ntohll equivalent routine + * XXX: This is only applicable for 64 bit environment. + */ +static void +rotate_8(unsigned char *arr) +{ + uint32_t temp; + uint32_t *first_half; + uint32_t *second_half; + + first_half = (uint32_t *)(arr); + second_half = (uint32_t *)(arr + 4); + + temp = *first_half; + *first_half = *second_half; + *second_half = temp; + + *first_half = ntohl(*first_half); + *second_half = ntohl(*second_half); +} + +/* read_memory_nodes + * Memory layout for DPAAx platforms (LS1043, LS1046, LS1088, LS2088, LX2160) + * are populated by Uboot and available in device tree: + * /proc/device-tree/memory@
/reg <= register. + * Entries are of the form: + * (<8 byte start addr><8 byte length>)(..more similar blocks of start,len>).. + * + * @param count + * OUT populate number of entries found in memory node + * @return + * Pointer to array of reg_node elements, count size + */ +static struct reg_node * +read_memory_node(unsigned int *count) +{ + int fd, ret, i; + unsigned int j; + glob_t result = {0}; + struct stat statbuf = {0}; + char file_data[MEM_NODE_FILE_LEN]; + struct reg_node *nodes = NULL; + + *count = 0; + + ret = glob(MEM_NODE_PATH_GLOB, 0, NULL, &result); + if (ret != 0) { + DPAAX_ERR("Unable to glob device-tree memory node: (%s)(%d)", + MEM_NODE_PATH_GLOB, ret); + goto out; + } + + if (result.gl_pathc != 1) { + /* Either more than one memory@ node found, or none. + * In either case, cannot work ahead. + */ + DPAAX_ERR("Found (%zu) entries in device-tree. Not supported!", + result.gl_pathc); + goto out; + } + + DPAAX_DEBUG("Opening and parsing device-tree node: (%s)", + result.gl_pathv[0]); + fd = open(result.gl_pathv[0], O_RDONLY); + if (fd < 0) { + DPAAX_ERR("Unable to open the device-tree node: (%s)(fd=%d)", + MEM_NODE_PATH_GLOB, fd); + goto cleanup; + } + + /* Stat to get the file size */ + ret = fstat(fd, &statbuf); + if (ret != 0) { + DPAAX_ERR("Unable to get device-tree memory node size."); + goto cleanup; + } + + DPAAX_DEBUG("Size of device-tree mem node: %lu", statbuf.st_size); + if (statbuf.st_size > MEM_NODE_FILE_LEN) { + DPAAX_WARN("More memory nodes available than assumed."); + DPAAX_WARN("System may not work properly!"); + } + + ret = read(fd, file_data, statbuf.st_size > MEM_NODE_FILE_LEN ? + MEM_NODE_FILE_LEN : statbuf.st_size); + if (ret <= 0) { + DPAAX_ERR("Unable to read device-tree memory node: (%d)", ret); + goto cleanup; + } + + /* The reg node should be multiple of 16 bytes, 8 bytes each for addr + * and len. + */ + *count = (statbuf.st_size / 16); + if ((*count) <= 0 || (statbuf.st_size % 16 != 0)) { + DPAAX_ERR("Invalid memory node values or count. (size=%lu)", + statbuf.st_size); + goto cleanup; + } + + /* each entry is of 16 bytes, and size/16 is total count of entries */ + nodes = malloc(sizeof(struct reg_node) * (*count)); + if (!nodes) { + DPAAX_ERR("Failure in allocating working memory."); + goto cleanup; + } + memset(nodes, 0, sizeof(struct reg_node) * (*count)); + + for (i = 0, j = 0; i < (statbuf.st_size) && j < (*count); i += 16, j++) { + memcpy(&nodes[j], file_data + i, 16); + /* Rotate (ntohl) each 8 byte entry */ + rotate_8((unsigned char *)(&(nodes[j].addr))); + rotate_8((unsigned char *)(&(nodes[j].len))); + } + + DPAAX_DEBUG("Device-tree memory node data:"); + do { + DPAAX_DEBUG("\n %08" PRIx64 " %08zu", nodes[j].addr, nodes[j].len); + } while (--j); + +cleanup: + close(fd); + globfree(&result); +out: + return nodes; +} + +int +dpaax_iova_table_populate(void) +{ + int ret; + unsigned int i, node_count; + size_t tot_memory_size, total_table_size; + struct reg_node *nodes; + struct dpaax_iovat_element *entry; + + /* dpaax_iova_table_p is a singleton - only one instance should be + * created. + */ + if (dpaax_iova_table_p) { + DPAAX_DEBUG("Multiple allocation attempt for IOVA Table (%p)", + dpaax_iova_table_p); + /* This can be an error case as well - some path not cleaning + * up table - but, for now, it is assumed that if IOVA Table + * pointer is valid, table is allocated. + */ + return 0; + } + + nodes = read_memory_node(&node_count); + if (nodes == NULL || node_count <= 0) { + DPAAX_WARN("PA->VA translation not available;"); + DPAAX_WARN("Expect performance impact."); + return -1; + } + + tot_memory_size = 0; + for (i = 0; i < node_count; i++) + tot_memory_size += nodes[i].len; + + DPAAX_DEBUG("Total available PA memory size: %zu", tot_memory_size); + + /* Total table size = meta data + tot_memory_size/8 */ + total_table_size = sizeof(struct dpaax_iova_table) + + (sizeof(struct dpaax_iovat_element) * node_count) + + ((tot_memory_size / DPAAX_MEM_SPLIT) * sizeof(uint64_t)); + + /* TODO: This memory doesn't need to shared but needs to be always + * pinned to RAM (no swap out) - using hugepage rather than malloc + */ + dpaax_iova_table_p = rte_zmalloc(NULL, total_table_size, 0); + if (dpaax_iova_table_p == NULL) { + DPAAX_WARN("Unable to allocate memory for PA->VA Table;"); + DPAAX_WARN("PA->VA translation not available;"); + DPAAX_WARN("Expect performance impact."); + free(nodes); + return -1; + } + + /* Initialize table */ + dpaax_iova_table_p->count = node_count; + entry = dpaax_iova_table_p->entries; + + DPAAX_DEBUG("IOVA Table entries: (entry start = %p)", (void *)entry); + DPAAX_DEBUG("\t(entry),(start),(len),(next)"); + + for (i = 0; i < node_count; i++) { + /* dpaax_iova_table_p + * | dpaax_iova_table_p->entries + * | | + * | | + * V V + * +------+------+-------+---+----------+---------+--- + * |iova_ |entry | entry | | pages | pages | + * |table | 1 | 2 |...| entry 1 | entry2 | + * +-----'+.-----+-------+---+;---------+;--------+--- + * \ \ / / + * `~~~~~~|~~~~~>pages / + * \ / + * `~~~~~~~~~~~>pages + */ + entry[i].start = nodes[i].addr; + entry[i].len = nodes[i].len; + if (i > 0) + entry[i].pages = entry[i-1].pages + + ((entry[i-1].len/DPAAX_MEM_SPLIT)); + else + entry[i].pages = (uint64_t *)((unsigned char *)entry + + (sizeof(struct dpaax_iovat_element) * + node_count)); + + DPAAX_DEBUG("\t(%u),(%8"PRIx64"),(%8zu),(%8p)", + i, entry[i].start, entry[i].len, entry[i].pages); + } + + /* Release memory associated with nodes array - not required now */ + free(nodes); + + DPAAX_DEBUG("Adding mem-event handler\n"); + ret = dpaax_handle_memevents(); + if (ret) { + DPAAX_ERR("Unable to add mem-event handler"); + DPAAX_WARN("Cases with non-buffer pool mem won't work!"); + } + + return 0; +} + +void +dpaax_iova_table_depopulate(void) +{ + if (dpaax_iova_table_p == NULL) + return; + + rte_free(dpaax_iova_table_p->entries); + dpaax_iova_table_p = NULL; + + DPAAX_DEBUG("IOVA Table cleanedup"); +} + +int +dpaax_iova_table_update(phys_addr_t paddr, void *vaddr, size_t length) +{ + int found = 0; + unsigned int i; + size_t req_length = length, e_offset; + struct dpaax_iovat_element *entry; + uintptr_t align_vaddr; + phys_addr_t align_paddr; + + align_paddr = paddr & DPAAX_MEM_SPLIT_MASK; + align_vaddr = ((uintptr_t)vaddr & DPAAX_MEM_SPLIT_MASK); + + /* Check if paddr is available in table */ + entry = dpaax_iova_table_p->entries; + for (i = 0; i < dpaax_iova_table_p->count; i++) { + if (align_paddr < entry[i].start) { + /* Address lower than start, but not found in previous + * iteration shouldn't exist. + */ + DPAAX_ERR("Add: Incorrect entry for PA->VA Table" + "(%"PRIu64")", paddr); + DPAAX_ERR("Add: Lowest address: %"PRIu64"", + entry[i].start); + return -1; + } + + if (align_paddr > (entry[i].start + entry[i].len)) + continue; + + /* align_paddr >= start && align_paddr < (start + len) */ + found = 1; + + do { + e_offset = ((align_paddr - entry[i].start) / DPAAX_MEM_SPLIT); + /* TODO: Whatif something already exists at this + * location - is that an error? For now, ignoring the + * case. + */ + entry[i].pages[e_offset] = align_vaddr; + DPAAX_DEBUG("Added: vaddr=%zu for Phy:%"PRIu64" at %zu" + " remaining len %zu", align_vaddr, + align_paddr, e_offset, req_length); + + /* Incoming request can be larger than the + * DPAAX_MEM_SPLIT size - in which case, multiple + * entries in entry->pages[] are filled up. + */ + if (req_length <= DPAAX_MEM_SPLIT) + break; + align_paddr += DPAAX_MEM_SPLIT; + align_vaddr += DPAAX_MEM_SPLIT; + req_length -= DPAAX_MEM_SPLIT; + } while (1); + + break; + } + + if (!found) { + /* There might be case where the incoming physical address is + * beyond the address discovered in the memory node of + * device-tree. Specially if some malloc'd area is used by EAL + * and the memevent handlers passes that across. But, this is + * not necessarily an error. + */ + DPAAX_DEBUG("Add: Unable to find slot for vaddr:(%p)," + " phy(%"PRIu64")", + vaddr, paddr); + return -1; + } + + DPAAX_DEBUG("Add: Found slot at (%"PRIu64")[(%zu)] for vaddr:(%p)," + " phy(%"PRIu64"), len(%zu)", entry[i].start, e_offset, + vaddr, paddr, length); + return 0; +} + +/* dpaax_iova_table_dump + * Dump the table, with its entries, on screen. Only works in Debug Mode + * Not for weak hearted - the tables can get quite large + */ +void +dpaax_iova_table_dump(void) +{ + unsigned int i, j; + struct dpaax_iovat_element *entry; + + /* In case DEBUG is not enabled, some 'if' conditions might misbehave + * as they have nothing else in them except a DPAAX_DEBUG() which if + * tuned out would leave 'if' naked. + */ + if (rte_log_get_global_level() < RTE_LOG_DEBUG) { + DPAAX_ERR("Set log level to Debug for PA->Table dump!"); + return; + } + + DPAAX_DEBUG(" === Start of PA->VA Translation Table ==="); + if (dpaax_iova_table_p == NULL) + DPAAX_DEBUG("\tNULL"); + + entry = dpaax_iova_table_p->entries; + for (i = 0; i < dpaax_iova_table_p->count; i++) { + DPAAX_DEBUG("\t(%16i),(%16"PRIu64"),(%16zu),(%16p)", + i, entry[i].start, entry[i].len, entry[i].pages); + DPAAX_DEBUG("\t\t (PA), (VA)"); + for (j = 0; j < (entry->len/DPAAX_MEM_SPLIT); j++) { + if (entry[i].pages[j] == 0) + continue; + DPAAX_DEBUG("\t\t(%16"PRIx64"),(%16"PRIx64")", + (entry[i].start + (j * sizeof(uint64_t))), + entry[i].pages[j]); + } + } + DPAAX_DEBUG(" === End of PA->VA Translation Table ==="); +} + +static void +dpaax_memevent_cb(enum rte_mem_event type, const void *addr, size_t len, + void *arg __rte_unused) +{ + struct rte_memseg_list *msl; + struct rte_memseg *ms; + size_t cur_len = 0, map_len = 0; + phys_addr_t phys_addr; + void *virt_addr; + int ret; + + DPAAX_DEBUG("Called with addr=%p, len=%zu", addr, len); + + msl = rte_mem_virt2memseg_list(addr); + + while (cur_len < len) { + const void *va = RTE_PTR_ADD(addr, cur_len); + + ms = rte_mem_virt2memseg(va, msl); + phys_addr = rte_mem_virt2phy(ms->addr); + virt_addr = ms->addr; + map_len = ms->len; + + DPAAX_DEBUG("Request for %s, va=%p, virt_addr=%p," + "iova=%"PRIu64", map_len=%zu", + type == RTE_MEM_EVENT_ALLOC ? + "alloc" : "dealloc", + va, virt_addr, phys_addr, map_len); + + if (type == RTE_MEM_EVENT_ALLOC) + ret = dpaax_iova_table_update(phys_addr, virt_addr, + map_len); + else + /* In case of mem_events for MEM_EVENT_FREE, complete + * hugepage is released and its PA entry is set to 0. + */ + ret = dpaax_iova_table_update(phys_addr, 0, map_len); + + if (ret != 0) { + DPAAX_ERR("PA-Table entry update failed. " + "Map=%d, addr=%p, len=%zu, err:(%d)", + type, va, map_len, ret); + return; + } + + cur_len += map_len; + } +} + +static int +dpaax_memevent_walk_memsegs(const struct rte_memseg_list *msl __rte_unused, + const struct rte_memseg *ms, size_t len, + void *arg __rte_unused) +{ + DPAAX_DEBUG("Walking for %p (pa=%"PRIu64") and len %zu", + ms->addr, ms->phys_addr, len); + dpaax_iova_table_update(rte_mem_virt2phy(ms->addr), ms->addr, len); + return 0; +} + +static int +dpaax_handle_memevents(void) +{ + /* First, walk through all memsegs and pin them, before installing + * handler. This assures that all memseg which have already been + * identified/allocated by EAL, are already part of PA->VA Table. This + * is especially for cases where application allocates memory before + * the EAL or this is an externally allocated memory passed to EAL. + */ + rte_memseg_contig_walk_thread_unsafe(dpaax_memevent_walk_memsegs, NULL); + + return rte_mem_event_callback_register("dpaax_memevents_cb", + dpaax_memevent_cb, NULL); +} + +RTE_INIT(dpaax_log) +{ + dpaax_logger = rte_log_register("pmd.common.dpaax"); + if (dpaax_logger >= 0) + rte_log_set_level(dpaax_logger, RTE_LOG_NOTICE); +} diff --git a/drivers/common/dpaax/dpaax_iova_table.h b/drivers/common/dpaax/dpaax_iova_table.h new file mode 100644 index 000000000..3e913ef45 --- /dev/null +++ b/drivers/common/dpaax/dpaax_iova_table.h @@ -0,0 +1,103 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2018 NXP + */ + +#ifndef _DPAAX_IOVA_TABLE_H_ +#define _DPAAX_IOVA_TABLE_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +struct dpaax_iovat_element { + phys_addr_t start; /**< Start address of block of physical pages */ + size_t len; /**< Difference of end-start for quick access */ + uint64_t *pages; /**< VA for each physical page in this block */ +}; + +struct dpaax_iova_table { + unsigned int count; /**< No. of blocks of contiguous physical pages */ + struct dpaax_iovat_element entries[0]; +}; + +/* Pointer to the table, which is common for DPAA/DPAA2 and only a single + * instance is required across net/crypto/event drivers. This table is + * populated iff devices are found on the bus. + */ +extern struct dpaax_iova_table *dpaax_iova_table_p; + +/* Device tree file for memory layout is named 'memory@' where the 'addr' + * is SoC dependent, or even Uboot fixup dependent. + */ +#define MEM_NODE_PATH_GLOB "/proc/device-tree/memory[@0-9]*/reg" +/* Device file should be multiple of 16 bytes, each containing 8 byte of addr + * and its length. Assuming max of 5 entries. + */ +#define MEM_NODE_FILE_LEN ((16 * 5) + 1) + +/* Table is made up of DPAAX_MEM_SPLIT elements for each contiguous zone. This + * helps avoid separate handling for cases where more than one size of hugepage + * is supported. + */ +#define DPAAX_MEM_SPLIT (1<<21) +#define DPAAX_MEM_SPLIT_MASK ~(DPAAX_MEM_SPLIT - 1) /**< Floor aligned */ +#define DPAAX_MEM_SPLIT_MASK_OFF (DPAAX_MEM_SPLIT - 1) /**< Offset */ + +/* APIs exposed */ +int dpaax_iova_table_populate(void); +void dpaax_iova_table_depopulate(void); +int dpaax_iova_table_update(phys_addr_t paddr, void *vaddr, size_t length); +void dpaax_iova_table_dump(void); + +static inline void *dpaax_iova_table_get_va(phys_addr_t paddr) __attribute__((hot)); + +static inline void * +dpaax_iova_table_get_va(phys_addr_t paddr) { + unsigned int i = 0, index; + void *vaddr = 0; + phys_addr_t paddr_align = paddr & DPAAX_MEM_SPLIT_MASK; + size_t offset = paddr & DPAAX_MEM_SPLIT_MASK_OFF; + struct dpaax_iovat_element *entry; + + entry = dpaax_iova_table_p->entries; + + do { + if (unlikely(i > dpaax_iova_table_p->count)) + break; + + if (paddr_align < entry[i].start) { + /* Incorrect paddr; Not in memory range */ + return NULL; + } + + if (paddr_align > (entry[i].start + entry[i].len)) { + i++; + continue; + } + + /* paddr > entry->start && paddr <= entry->(start+len) */ + index = (paddr_align - entry[i].start)/DPAAX_MEM_SPLIT; + vaddr = (void *)((uintptr_t)entry[i].pages[index] + offset); + break; + } while (1); + + return vaddr; +} + +#endif /* _DPAAX_IOVA_TABLE_H_ */ diff --git a/drivers/common/dpaax/dpaax_logs.h b/drivers/common/dpaax/dpaax_logs.h new file mode 100644 index 000000000..bf1b27cc1 --- /dev/null +++ b/drivers/common/dpaax/dpaax_logs.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2018 NXP + */ + +#ifndef _DPAAX_LOGS_H_ +#define _DPAAX_LOGS_H_ + +#include + +extern int dpaax_logger; + +#define DPAAX_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, dpaax_logger, "dpaax: " fmt "\n", \ + ##args) + +/* Debug logs are with Function names */ +#define DPAAX_DEBUG(fmt, args...) \ + rte_log(RTE_LOG_DEBUG, dpaax_logger, "dpaax: %s(): " fmt "\n", \ + __func__, ##args) + +#define DPAAX_INFO(fmt, args...) \ + DPAAX_LOG(INFO, fmt, ## args) +#define DPAAX_ERR(fmt, args...) \ + DPAAX_LOG(ERR, fmt, ## args) +#define DPAAX_WARN(fmt, args...) \ + DPAAX_LOG(WARNING, fmt, ## args) + +/* DP Logs, toggled out at compile time if level lower than current level */ +#define DPAAX_DP_LOG(level, fmt, args...) \ + RTE_LOG_DP(level, PMD, fmt, ## args) + +#define DPAAX_DP_DEBUG(fmt, args...) \ + DPAAX_DP_LOG(DEBUG, fmt, ## args) +#define DPAAX_DP_INFO(fmt, args...) \ + DPAAX_DP_LOG(INFO, fmt, ## args) +#define DPAAX_DP_WARN(fmt, args...) \ + DPAAX_DP_LOG(WARNING, fmt, ## args) + +#endif /* _DPAAX_LOGS_H_ */ diff --git a/drivers/common/dpaax/meson.build b/drivers/common/dpaax/meson.build new file mode 100644 index 000000000..98a1bdd48 --- /dev/null +++ b/drivers/common/dpaax/meson.build @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 NXP + +allow_experimental_apis = true + +if host_machine.system() != 'linux' + build = false +endif + +sources = files('dpaax_iova_table.c') + +cflags += ['-D_GNU_SOURCE'] diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map new file mode 100644 index 000000000..8131c9e30 --- /dev/null +++ b/drivers/common/dpaax/rte_common_dpaax_version.map @@ -0,0 +1,11 @@ +DPDK_18.11 { + global: + + dpaax_iova_table_update; + dpaax_iova_table_depopulate; + dpaax_iova_table_dump; + dpaax_iova_table_p; + dpaax_iova_table_populate; + + local: *; +}; diff --git a/drivers/common/meson.build b/drivers/common/meson.build index f828ce7f7..0257d4d2b 100644 --- a/drivers/common/meson.build +++ b/drivers/common/meson.build @@ -2,6 +2,6 @@ # Copyright(c) 2018 Cavium, Inc std_deps = ['eal'] -drivers = ['mvep', 'octeontx', 'qat'] +drivers = ['dpaax', 'mvep', 'octeontx', 'qat'] config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON' driver_name_fmt = 'rte_common_@0@' From patchwork Mon Oct 15 12:01:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 46829 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 BA9624CA5; Mon, 15 Oct 2018 14:02:58 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00066.outbound.protection.outlook.com [40.107.0.66]) by dpdk.org (Postfix) with ESMTP id A21882BF5 for ; Mon, 15 Oct 2018 14:02:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VT3X66NIuhavUL2sTTolc1TiCUVu6pA4rW/+qO554Y4=; b=feK4QpUaoo6SD/eQOXENPv2mFSUuzqRsV3GM+G/QpvuPCuwzrJf3r6b0AwNX4FhjYEA2f6RyWXatFfwTVn+Eo9wlc2Wp8+tWQM8prcbaGWAPvtRz0rD7aSg62gwV3y0zVnSA9QDOmMEEJRCYx/rBa8Xd4oG99qY0HYnsYC8CMCI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shreyansh.jain@nxp.com; Received: from Tophie.ap.freescale.net (14.142.187.166) by DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.26; Mon, 15 Oct 2018 12:02:47 +0000 From: Shreyansh Jain To: thomas@monjalon.net Cc: ferruh.yigit@intel.com, anatoly.burakov@intel.com, pbhagavatula@caviumnetworks.com, dev@dpdk.org, Shreyansh Jain Date: Mon, 15 Oct 2018 17:31:55 +0530 Message-Id: <20181015120156.27793-5-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181015120156.27793-1-shreyansh.jain@nxp.com> References: <20181015064202.20802-1-shreyansh.jain@nxp.com> <20181015120156.27793-1-shreyansh.jain@nxp.com> MIME-Version: 1.0 X-Originating-IP: [14.142.187.166] X-ClientProxiedBy: BM1PR01CA0102.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00::18) To DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 76f4853b-da18-48d9-bd20-08d63296209d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR04MB4683; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 3:QVGw+EmqwyYEdo5qvHx0c49E7oHNABCqqpD1pUjBZ7MUvWEBF5GWfBxsg3/oTgOSpUSbAs/QQfMTbbk5QJaYSUZ3MBUKXskXkCNT4YVwRbUmutGS5rfYZxbMSKVufawQOUW5MYTSpg1OvJ9hAd8NU7jN9mAdhg+l/UnrvpsKvqmilrGbli0Adf7D6/TsxvjP9NV8EYn6GcopDeHDaimb8yqZMVHufdjItMKp9uz2GGqBEgNFd/ELtCIja0jAzlTC; 25:9nv1qerAbYLMa/rZ/N/FOIxOq43LRXeImS9SKtmMVXdK4Pua1lHHrJX/O55IPDm7HLzHIgIXY1ZlEzMbsES0zkmiB7IWhuM8rMYOrUspLXrrzIzmotIoXL2rgnxi50rTU0VNkkuyO4RICjI4GufhfyJzNbtsgOjIhAm/iJCwRuu6sFN52FeMGfZHPlqWW7D1QdMQ9pDW2wtUC3iYdW2gdrohbw8FXuhsQ1xljkAzGOUzczPiEYcX6pSpQGTs8MkLgB6d9tvzm6z64Du1z+eBlHplWyOBdJjy1aLAdHoFOzt8R3aD1c1fdWBPVvJds16IBGDaJn9KY3r44MJZlD/2+xCiWlY1UNV1/vWPpv+JfwI=; 31:ZcF6AqE9ZQuBqmCanQy1tTCgLzVYjksr8EGJL4OlBC2SP2EfC9CCK+Fi6uXpDnrZ+pFOrCj6kRV1Zw9TjXk9OKXIU4xkVX6byOAvPPT9CGwV1CJg7henjqVc9xldxuKq4JmrxS8ry0oCIGIqt6oBVOfjOrWTQpZJ4LCZ4QFNEFr7IXff4PrFbcFB3T6pFpii3d/zvyi8j0HOU/KVWyWDkx13JFSxYjNpawppt9kQxCk= X-MS-TrafficTypeDiagnostic: DB7PR04MB4683: X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 20:SUvJbbqWbIPFmCknyLhzAfYB/l8it+uq3aqJ2lqMg3OfRtc5bjZ7zq7jeKgmauktEEAf4rdF7+dUQHz115AOcepaSJorF+O6pSLtUMsEgxh+k59NI4y/sR4ffTlZsVQe/WqeqFeXueCZ2MxN5DQ1qa0EJocN79XGJ5rqRpy2vsTPuIKQjKSmFEIKKJ+E1fR/K4eTu095b4QbT0v2xIzd+OmYn8uz6Y/eU0q8vgNmRffiEqw5qHNDPz4G6MA95B8oxqKRcq6Wv20H4WquIC3frM3Eb2TM3xk+grOs1bh/MTNHZJEL23+r9u0s77gdu3YPy4yPHjMIZI4Y4UguwYiE69UrWK40UrpNXizpfL03Qnb7wSXlin72Jrz+OdQ3pJyDMfSZmbLa7Q3qgCMFkbcU3+N0FRPRysqFr1hC39kNF5CEpPA8onpzehFvmkAH3XpuyxH95N95R89kU+YsNBV/QUVu7sCZialzAoMsBzg+1Gzl1+W1ZsuUfMNZY+iKH0dS; 4:rlPfJMj6CM8VdRlOICRvkC07rKiiFhVl5shZI3+iFNXK1eLnKmmlAsMSIn5D9CZntYnO2fRptc9HG7kILfQRPakXNdwbfiTHj6zI9u26M2C4woWChRQaicHAeEdJOV9a3kqG/KVn+T0wOrN2nEYMAo4R88lhT/FLelY/xftV1KVrSKJqBrrNwLyPr5t8DRWCpiYmDQStXeoz6Hv1OCloncxSoac2Y/bCdAQSYpAPqKmo86lm0ghxPDLhhcoAvjfCI+3XOh3e7VgvQvhWfi+vYXsXhodKH0gGYNK/k1Ep3c5ZzDN+LiaIliJkVOwm76JJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991067); SRVR:DB7PR04MB4683; BCL:0; PCL:0; RULEID:; SRVR:DB7PR04MB4683; X-Forefront-PRVS: 0826B2F01B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(136003)(39860400002)(376002)(366004)(199004)(189003)(6666004)(68736007)(2361001)(50226002)(186003)(16526019)(26005)(106356001)(47776003)(305945005)(105586002)(316002)(14444005)(2351001)(66066001)(16586007)(4326008)(2906002)(97736004)(6916009)(36756003)(8676002)(5660300001)(8936002)(78486010)(81166006)(81156014)(1076002)(3846002)(575784001)(86362001)(6486002)(6116002)(1006002)(2616005)(53936002)(478600001)(51416003)(52116002)(55236004)(6506007)(386003)(76176011)(48376002)(446003)(11346002)(44832011)(956004)(50466002)(25786009)(6512007)(476003)(486006)(7736002)(110426005); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR04MB4683; H:Tophie.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR04MB4683; 23:w5hTNH244RmYLlg1seSiWAglaIp+Qausf1DcdLJHC?= vtrqL9I5FQKRIzOd6n4sngs6iRjTiWuWpCA5DVawFHsPmDLOVh0/GIcl6dY3Sl5LZTOoxYDSL0chjPYTj3Nn/Gq1NCy3OXEpVH6yZ3vWb0kFMtU8Inp7yHiCUZfdMkXo421XIO4IS0CBYFhAl/MEEIWDayMvgsShwFm+qvioqi8RpcNPuHiGxWdN9lJ2QoxQIw5jj4aVQp5tjxA1qvafl1AxX5GjdcMLHCDAaUpypTXkna9N+uMslOoe/d0M4Nb015VypyukE+jzHxWwJvOeyA6g8PtbCONgJrPjZqTgZaijPWvI0796ZPnsjP9Lyxujsa7cgJTlFKQjVCNyFAQOEWceijCkGgZuQQRR5L0Lgq9r/AbBDMo3WMs6kZV33Rwh1NKDbf7POWfwl9xysZTY63YU8lv9QEEoe94oq4AHwo7qkOX0tPYgkSyStH7jTIln9h2oNwR7i7N53i4RwXGBlGec/LqHszcq7ERCKi5OID9V2QKQfHa1tjx0jPux3T2wQ3gg22cuZTBjoUvcM12QpTw5Sk+/04zJcnxqTVgaYP2xXpHc5FdaRs7GHfHxFPEs5xDZKgL9cU+8K+7uS85EsOYja/diR/fGeRMEyNIKI7lH9a3L731EKTqp1OfFHUOn0x1bt7MnMarInMkMoj2K8LMGvt6ijpjOrt7ajeuhrcQ9mHvQFYwZUXSXHVQhuAC9nKoMT/lszDZZ+hUFN4V2DQzlYTsl8sCCz9acG69WjGREi4tn+fDhCvN6vlWuf+J3JF9w0TuLbMZlsQjE9EyAyqDg+c4yZZrIxq52PW2nhivB5+/lmO98P9K2IxaVtD3bJhg0HRuzhJkMWgv4HDrliYOWanb9E64th2o7saVwIi2dGeKrP3vm0Ajcd8sqwzmPvmCbFr80l6Fg8+mbLlktYhN4rY0iZEN0GN1GV3IQI/4AVUqDBJWzlxgxMnLeXRZ7Wpxcxj9V+cPnEDaTBz1RQgkfHj2/95BvehiRSJVIvRmeNDtMhT8/wkT7DZZX2yOwfzXhqsWFOXVD+7400sq5tmLCB05fbdAfn4NG8LSOmnpW4zEwLK0Y1e9Rgh6bM4SfzSUTN1+UXTfOmk64qE+U2uxthl1j0L1eimFhboW18l8cqSrbdsaucQkZxP7qXy6W/Nx+gzI5An+HTclsCIoOAml+ZydENokL4HKt+oApnoR7SWFuxAs2unuziJlSkO3xJ05JUFBYBSxJHZvY1EOPXp9lhmYq+aalYryAGDlthjZvjm2rW5Mu36ugQu84wEY8jH8yU5sHmklCA4Z0SzLzGbQRWmYNXebzTC9OQgxtemeuUGrR7jnqUfuj6TI0SnYmk4= X-Microsoft-Antispam-Message-Info: NMZZxzTnNq9ZZIBLoreVSv6AqBRjaVW4nYAP4okInBtfqNZJ/jVzZoZeKlcL8+oVZ17YjwV/BDqL1VHcwMwZ3jKBqXbhFG/EvU0qTJOJJVsJQLEEno51HKBp69CHjv8BnF1BkSdzSA1usd2HNnxMYwEzIbX63tau+rJKICZQlTfGMaE/NoEyAmMlTq3yoiiwZsNXkmYQCIznPCvp2+J2W2a4OCTJEEjs6YFGwjoH0KLcwRsADjyvDsR9a0OqI2o9KcJrlKLno9wiGE8ZruiUB5//tgGGUZfbP1O+Lw+8lC47krydV/apz0GUzxSzxntsSaG/jjFEQcSd9c4wGOppGA6E7nLiWzNsIVE+J4yfSPQ= X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 6:1Qtr5ftWFVCKXPdqpqoRTKy8PlKTMNZEnVlyAZ1rSQ911aM5j/7SskwS7qzKWwXP/Jh+iukcBjCCcoqlYn3MsdrTOcKpx9kvPtyiRsYXvDeE2KQn8z5ATxjNlrnQUddQLJQtEzQYxDpqBtqUw9hyMtdAOXf4dCpCikKVm7V4Nj4b2hXonERIqlze4FHY8e1NkNw/Yb2Ci+tE3yTMYOND/ygJtDADiXx3Ts6eFPUHqjyA1bp7qlqy+J30XDwIG31JE6KG4XM5LC4tT9lbdZfRKZRZWpacFzqpuzyjTB2CyFI5fq2QLP2vPe2r9ldty/EKbd4u54yaOelC2wP0I8eVu1qI73ZtGhz8N24Nr/VkDDyuFQoGgbfh596xpJjIcL6Y8FQZtHJ4P8cVkvSwsbrL0jSW/8QZQGD6JKsAljxKRGmBC2lBW0cxQWw4hVfCTaq0bpWchhvBUzYXn+vC9mn8Bw==; 5:rKI0RyIsvAShxt0KbPfMy+9t4+RwsHGo3S6/sPBFIYfWV6adYFPY3po5PIAwRprMK869lnTAF/EFJ7JtlMjJA4pRljzXHUdE0XJkLj+lCxoUAs0FjuUTv0C5Xmtq1n8d+ez0s8jV7HxFS8pCHXlgh5N9XLkI4CwnAeMDnDaBLIk=; 7:eSlkEIPssaTMUZq881AmRrSMaHvozZCEUR3oluU5Wv8boe5vK7vkDFW0r+1WLAle8XfN3QAKiXxLMut56yYJqi202EjlD1w/9Gb+EREnjw5dVQKae71SCOk7nvd2lIrtij7VgZYhcJvaZzMjXYBPXjH1jA99O5w28pgdkzPRidsxDR4Mveo8PTbLvnHLuZ0MSoyGNIcQxLb4hLl+CivykZFhXVL30Pqajsm4r1478OLZYnWMaXsF27G/WJjOTKrW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2018 12:02:47.9715 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 76f4853b-da18-48d9-bd20-08d63296209d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4683 Subject: [dpdk-dev] [PATCH v5 4/5] dpaa: enable dpaax library 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" With this patch, dpaa bus and ethernet devices on this bus would start using the physical-virtual library interfaces. This patch impacts mempool/dpaa, event/dpaa and net/dpaa as they are dependent on the bus/dpaa and thus impact linkage of libraries. Signed-off-by: Shreyansh Jain --- drivers/bus/dpaa/Makefile | 1 + drivers/bus/dpaa/dpaa_bus.c | 4 ++++ drivers/bus/dpaa/meson.build | 2 +- drivers/bus/dpaa/rte_dpaa_bus.h | 6 ++++++ drivers/crypto/dpaa_sec/Makefile | 1 + drivers/crypto/dpaa_sec/dpaa_sec.c | 6 ++++++ drivers/event/dpaa/Makefile | 1 + drivers/mempool/dpaa/Makefile | 1 + drivers/mempool/dpaa/dpaa_mempool.c | 4 ++++ drivers/mempool/dpaa/dpaa_mempool.h | 4 +--- drivers/net/dpaa/Makefile | 1 + mk/rte.app.mk | 4 ++++ 12 files changed, 31 insertions(+), 4 deletions(-) diff --git a/drivers/bus/dpaa/Makefile b/drivers/bus/dpaa/Makefile index 9337b5f92..381a5c659 100644 --- a/drivers/bus/dpaa/Makefile +++ b/drivers/bus/dpaa/Makefile @@ -48,5 +48,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += \ LDLIBS += -lpthread LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_ethdev +LDLIBS += -lrte_common_dpaax include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index 138e0f98d..381c3b17c 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -34,6 +34,7 @@ #include #include +#include #include #include @@ -548,6 +549,9 @@ rte_dpaa_bus_probe(void) fclose(svr_file); } + /* And initialize the PA->VA translation table */ + dpaax_iova_table_populate(); + /* For each registered driver, and device, call the driver->probe */ TAILQ_FOREACH(dev, &rte_dpaa_bus.device_list, next) { TAILQ_FOREACH(drv, &rte_dpaa_bus.driver_list, next) { diff --git a/drivers/bus/dpaa/meson.build b/drivers/bus/dpaa/meson.build index 5e7705571..11a3c9499 100644 --- a/drivers/bus/dpaa/meson.build +++ b/drivers/bus/dpaa/meson.build @@ -7,7 +7,7 @@ if host_machine.system() != 'linux' build = false endif -deps += ['eventdev'] +deps += ['common_dpaax', 'eventdev'] sources = files('base/fman/fman.c', 'base/fman/fman_hw.c', 'base/fman/netcfg_layer.c', diff --git a/drivers/bus/dpaa/rte_dpaa_bus.h b/drivers/bus/dpaa/rte_dpaa_bus.h index 15dc6a4ac..1d580a000 100644 --- a/drivers/bus/dpaa/rte_dpaa_bus.h +++ b/drivers/bus/dpaa/rte_dpaa_bus.h @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -110,6 +111,11 @@ extern struct dpaa_memseg_list rte_dpaa_memsegs; static inline void *rte_dpaa_mem_ptov(phys_addr_t paddr) { struct dpaa_memseg *ms; + void *va; + + va = dpaax_iova_table_get_va(paddr); + if (likely(va != NULL)) + return va; /* Check if the address is already part of the memseg list internally * maintained by the dpaa driver. diff --git a/drivers/crypto/dpaa_sec/Makefile b/drivers/crypto/dpaa_sec/Makefile index 9be447041..674a7a398 100644 --- a/drivers/crypto/dpaa_sec/Makefile +++ b/drivers/crypto/dpaa_sec/Makefile @@ -38,5 +38,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC) += dpaa_sec.c LDLIBS += -lrte_bus_dpaa LDLIBS += -lrte_mempool_dpaa +LDLIBS += -lrte_common_dpaax include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 7c0459f9f..54f1913f2 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -107,6 +107,12 @@ dpaa_mem_vtop(void *vaddr) static inline void * dpaa_mem_ptov(rte_iova_t paddr) { + void *va; + + va = (void *)dpaax_iova_table_get_va(paddr); + if (likely(va)) + return va; + return rte_mem_iova2virt(paddr); } diff --git a/drivers/event/dpaa/Makefile b/drivers/event/dpaa/Makefile index ddd855227..6f93e7f40 100644 --- a/drivers/event/dpaa/Makefile +++ b/drivers/event/dpaa/Makefile @@ -34,5 +34,6 @@ LDLIBS += -lrte_mempool_dpaa LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs LDLIBS += -lrte_eventdev -lrte_pmd_dpaa -lrte_bus_vdev +LDLIBS += -lrte_common_dpaax include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/mempool/dpaa/Makefile b/drivers/mempool/dpaa/Makefile index da8da1e90..9cf36856c 100644 --- a/drivers/mempool/dpaa/Makefile +++ b/drivers/mempool/dpaa/Makefile @@ -31,5 +31,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_DPAA_MEMPOOL) += dpaa_mempool.c LDLIBS += -lrte_bus_dpaa LDLIBS += -lrte_eal -lrte_mempool -lrte_ring +LDLIBS += -lrte_common_dpaax include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c index 1c121223b..b05fb7b9d 100644 --- a/drivers/mempool/dpaa/dpaa_mempool.c +++ b/drivers/mempool/dpaa/dpaa_mempool.c @@ -26,6 +26,7 @@ #include #include +#include /* List of all the memseg information locally maintained in dpaa driver. This * is to optimize the PA_to_VA searches until a better mechanism (algo) is @@ -285,6 +286,9 @@ dpaa_populate(struct rte_mempool *mp, unsigned int max_objs, return 0; } + /* Update the PA-VA Table */ + dpaax_iova_table_update(paddr, vaddr, len); + bp_info = DPAA_MEMPOOL_TO_POOL_INFO(mp); total_elt_sz = mp->header_size + mp->elt_size + mp->trailer_size; diff --git a/drivers/mempool/dpaa/dpaa_mempool.h b/drivers/mempool/dpaa/dpaa_mempool.h index 092f326cb..533e1c6e2 100644 --- a/drivers/mempool/dpaa/dpaa_mempool.h +++ b/drivers/mempool/dpaa/dpaa_mempool.h @@ -43,10 +43,8 @@ struct dpaa_bp_info { }; static inline void * -DPAA_MEMPOOL_PTOV(struct dpaa_bp_info *bp_info, uint64_t addr) +DPAA_MEMPOOL_PTOV(struct dpaa_bp_info *bp_info __rte_unused, uint64_t addr) { - if (bp_info->ptov_off) - return ((void *) (size_t)(addr + bp_info->ptov_off)); return rte_dpaa_mem_ptov(addr); } diff --git a/drivers/net/dpaa/Makefile b/drivers/net/dpaa/Makefile index d7a0a50c5..1c4f7d914 100644 --- a/drivers/net/dpaa/Makefile +++ b/drivers/net/dpaa/Makefile @@ -38,6 +38,7 @@ LDLIBS += -lrte_bus_dpaa LDLIBS += -lrte_mempool_dpaa LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs +LDLIBS += -lrte_common_dpaax # install this header file SYMLINK-$(CONFIG_RTE_LIBRTE_DPAA_PMD)-include := rte_pmd_dpaa.h diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 3ece996e8..4c70a408a 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -104,6 +104,10 @@ ifneq (,$(findstring y,$(MVEP-y))) _LDLIBS-y += -lrte_common_mvep -L$(LIBMUSDK_PATH)/lib -lmusdk endif +ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) +_LDLIBS-$(CONFIG_RTE_LIBRTE_COMMON_DPAAX) += -lrte_common_dpaax +endif + _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += -lrte_bus_pci _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += -lrte_bus_vdev _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += -lrte_bus_dpaa From patchwork Mon Oct 15 12:01:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 46830 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 B1B9A4D27; Mon, 15 Oct 2018 14:03:03 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00054.outbound.protection.outlook.com [40.107.0.54]) by dpdk.org (Postfix) with ESMTP id 2F5A22F4F for ; Mon, 15 Oct 2018 14:02:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DcS7DsMbbe/xCJdDiSeVrfG4foaewhjRQx7t3HQC5VA=; b=tzx42W6IHjnLpZGLDZWs3mRX3TG09iBR2fbMJySIFCd7EeCRbj+8jvwcansl1TaHSORKto8GOzuD4WfR7XSl594oAPs60Iz2ZbL1K/ggv6/Kc/2pPdFvXBBSQbNYwJtsoDq+OmEWSfl9rmVxMl8BntRDp29TrdEzFEqXrAmkQFw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shreyansh.jain@nxp.com; Received: from Tophie.ap.freescale.net (14.142.187.166) by DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.26; Mon, 15 Oct 2018 12:02:49 +0000 From: Shreyansh Jain To: thomas@monjalon.net Cc: ferruh.yigit@intel.com, anatoly.burakov@intel.com, pbhagavatula@caviumnetworks.com, dev@dpdk.org, Shreyansh Jain Date: Mon, 15 Oct 2018 17:31:56 +0530 Message-Id: <20181015120156.27793-6-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181015120156.27793-1-shreyansh.jain@nxp.com> References: <20181015064202.20802-1-shreyansh.jain@nxp.com> <20181015120156.27793-1-shreyansh.jain@nxp.com> MIME-Version: 1.0 X-Originating-IP: [14.142.187.166] X-ClientProxiedBy: BM1PR01CA0102.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00::18) To DB7PR04MB4683.eurprd04.prod.outlook.com (2603:10a6:5:37::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 40ac46d7-53a6-4c36-fa90-08d6329621ce X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR04MB4683; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 3:RkLtHaeIVmFTSWv+8nkHVml0RWRWVSlmEFNkuw2GtLNSkGRBlK+CVLShwnPpVgqop19Qv5lZKGrGCIaFtvY26SLBEfODrh3Kuk6JoiceYjD+7quUM3oC+Gx7Fasms2TZp1jvK2sChF10p6fRez4TCZGYjycX1S545Z0PS3NXb1eTR96DvjpLWzuy+BpNkDILoIpCfxtmOclDsnp70pbZ0LABYE+lLK47EJV7z9gQ3gDJAyg2V805eVj38IPWXaQs; 25:TT+WZCBq7wJ676h7FlxDwlH6r2e8GF1Ay3zUtcvYRtQFXbVM+WIKXMGOOH54xE5A8ZhfzjikfR8VeNAcpi+6Z6qTUWKC3o313Lua5EvZqzKT3wajirI6XBddyOabO8tHH+5gQHjLePnwQIc2OBPAWPnbikNxDuwcWlelGVa1J7js0OLCv0uI8o7VoaRVMxpZgvSK55bSD1Q+tpq3AviXxRxLl7OUTf6qkchDNmZGCFwjS3+o0ejahy9e2f5GadMkfYp7SFhK9LZoCZd+NTxf7valR+QeWyC7p1LYtTP8Fu/m8V303/FA1/MPkRhWyx5rn5y/Q06DOoBjvhxwxCa8agW9B+ySpXJ29giYWuzC6lU=; 31:9Im/SMjzyTu1l2WqqVj4xDGfKB8rqtW0RxMfYTW7DPkx/K2lhGT4NKPtElGqiYL1eukNv5KXPMoWYZZWSj7fdFiXI8laAP83tYVdZ3eFfsbXhMYGN0EEz2s0ISLLT4RADRuldbsINvzCNKIgsIPtj5Q4ZNLgHvZ8xmtCb/zN1ywbduHnNHJGfI0RhLt+U+MWNF8BzS22eFS1qat/Z+5/9TssxAxriD7r9cI3BTgiEm8= X-MS-TrafficTypeDiagnostic: DB7PR04MB4683: X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 20:Jqn07IXlD/SFLYtkYDpCiz1viXQsi+AQGNEntl8oFGDdTx4dYcsddEokpIimihfVjCvSwmlu5AdGo2YMcljEWh5vwuiqhWFN4dFLd/7v6GFLVuyi3/xcSw/uBoMZD5pWJeWo0Y8rCWd5z4YJRcw46IPELuAhSW0xK5D8suIeFbxQhnUdqjBAeWRDgraCagh9kHLZVuCnAEeQiXEBanlhaHE0+rZevUKbsH6/5RUYx8baGN5txqR7k8eIU7hADlWfxjmujCjum5xkxh1ltNb3oBykvrn/31ixsNH25vQOf+GzPYfSujp9E1oh0d/mmiV98HwE7zTZgLSx4ol/RXpCU7DmLCz2Ob68DTwfapeyMTGeLyvWa4NpviTuvVhC9USlXkH+8KJAxK/SHhUDQnItrTvofYCSdDPUXo5vyiqgez5hXZaBbUCPO0qkHHA0nopVCa9w1N/pdtC/Ym1Hs4svU54gqXzcD3jowHRsgJo1E7/01Wqnx/ckoV1EhiEgZ6yD; 4:NQQbNOYhWI3R1RSnzQQ4bQr4akLwvQ3k3WMGfDYZvPDfo1i2Kfi7rQrO+WTuQ/qx0HvBViO9xrHW+sffSbeUIa2uZep1hH3qaGljHRmaZBbyYuFfSEBIC9GiTRiOecj29DME6QzhBPW/qQ3lUI5RmplOEILgby9HqOeOYYMfeSQzYDWdWQGeTSo8fl/whWuPkBeH5xcGtskPr3rHnlouARkfhtGvqd5Z0CHWZJWdxV+dhmKzCrxs4Xh0Wn+F0CvRCfWhq7OAHRqZREPpongt7lB/Sfgk1Ka1r+0ital3T79Cm48BpXM7YzL33zNpBz6n9iraIncPgEK42QJ6oqaZT8ZkOJY+WGAwEhMVikYoVjw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991067); SRVR:DB7PR04MB4683; BCL:0; PCL:0; RULEID:; SRVR:DB7PR04MB4683; X-Forefront-PRVS: 0826B2F01B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(136003)(39860400002)(376002)(366004)(199004)(189003)(6666004)(68736007)(2361001)(50226002)(186003)(16526019)(26005)(106356001)(47776003)(305945005)(105586002)(316002)(14444005)(2351001)(66066001)(16586007)(4326008)(2906002)(97736004)(6916009)(36756003)(8676002)(5660300001)(8936002)(78486010)(81166006)(81156014)(1076002)(3846002)(575784001)(86362001)(6486002)(6116002)(1006002)(2616005)(53936002)(478600001)(51416003)(52116002)(55236004)(6506007)(386003)(76176011)(48376002)(446003)(11346002)(44832011)(956004)(50466002)(25786009)(6512007)(476003)(486006)(7736002)(110426005); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR04MB4683; H:Tophie.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR04MB4683; 23:ENo0nFBA5Z5jkrCBXiRUqFbrLtK+HuViEn6oF9yy0?= /Oiurs3u0toKqEvCPQ5AQd3/Q/cJ1NWfXdEfmd+RJUDzmh5rq4o496/NuZzTOXjCzB+eLa+JYSTOv78fGyGo3Have44xs1utyzJp7c2adO5ehOdN6Kj+vOrQcYzeMhZUYh5+4+YcjUptvyTCSYMyE/FNghPx2/oux4wOLTg1aYIdsbMlomvMQJTtXfC/OOU4brjlJes0RcHizgg28RbP5B1EmtlCUg5TFXLH3mmAY98b6nfgGwpYFD/P9n0L45gOTl6EIPKx7WXVfVQvyuEvn14DvyU2kQBUW7t3owS46Lnltx4SMwcKe1MqLwrA+8x8IwdqSX8DuttN3IdVo6x+fxWaOrnFLRRXeWJdPg90KG5wpYPHp40p/TmWYbXI6gBkFQp8OpCfVoy5etrtwjdgCmEKah66fLFlxJWnBeSKUw1C0g3vtkVdUzbZc/cpEKQqcnIcnuKGYArSmSHeIHi88/bXQD9TqSIztlmtQUVfPBFMM9PG5uvgJeDDzVULGS+UciAljsShAZV3p0X3vABJ0iM1kP2159VrY9ijcbzhIkHiuwEI1Sn1fAjmKcl2qd/DbUtFQGrBMMm4Yx+1/hbpE8WaHSSmNDNvZzZPlu0x5M0znUVYXdo9RSGIo1We+LdlfPBgrsM3IFZScXzTCj3wd+Blr3weUBU/GF6jenn++B+3It+sDfp93PVyNej+0ueZ9lEzt98Bc0oEAz7Mi4DRQj0xCA+bsxZsTzLkVzsPOfU3ThI3bwCrqU+eUqaAbYWP2bt6ocsGJHaCSpAjqbTI8enoqSP3+bz2X/0NucvtfnarzLeWr3SHzLYZAuL6GGWMIfLZoY0yElyftIDo6oErLrCB8W63kZDAceEWgPirqVk8S1Z+/gzValj/64MNR5Ah5e3Pn60+EBVHU99B90CCJ9qzxhwgHnaMydo8gwY4lTTHnM8gCuGa2xvUFWwU29TtXWs2a+ChAHhB2Z/oO46ddWHjtPj5ATH+i4x2oClVkGqpKugW/KpQFNX0T+oSNri+RS1rGWdTBVyWEQHjmRKkwI9hauljeJVLZQ9AFZzK/ZPQ3+0P8esBatyS5TItgLZrQPmn6olpQ0W0jBbQZ/xKJ9NigBpsRuZUItTOy17q+Ryt+rcTVVRZfcFWlcbKorG/PlVWdRmNvoXKwaDZLOaGwcQc+iOiPb7ZCZ9WMi1FD1IUEjpBsqny+QKjsUBxP/VHqHAQQg03zIuMmCvb2VrxkpkZHYQLrf31Ghq4e7ZeohoMn2Oxf8gWX59zKxTMfDuhH+S8SztB9dBJnldc/yxgyoEMZtVe/kaFRG3yN8bvWPsPXAYTCaoSAvu9DVZXLwgsJs= X-Microsoft-Antispam-Message-Info: t93Y+lo66v6A+661nEa2IpYY0G4Yn5vLuSYHkPaL51ffiduPijvAfmBv/s7AxffXB5rXouqhST5jwAyrduFBqq1HO172UzJbPabT7RVfYEmjpxHdc3hVJU2q8pbwssYJfmyJgJaKUXy0s+IZCO1EBHIlZ4F0wCv3F6vaYVR33FNADC4ny+1jbFsZLrhI1F+TUJAYYK9v5DPSOeOqRamOMSNXjmd3twYwSivBCJNvxyh6WY/flDWX5gljTWcm1S1mkWtpaaqbhWTnriVLFk1dv5fC9tipqLC73CaUlpjbKaIh9P/PjdKj5kaa3IBgLlmMy+nk1tsF5Mk3IUhN9e5hYkUCWS1XDgWAOPMpBjvVaaU= X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4683; 6:iyXquLMdLKoej8mU6C5sQJKzwC5juSvnr0l82wZFuDgnOq/8NO/enZS/1sOOnN0OJBK3WhUIjF1BGv5ZJjymUYKj2OyX8JyRfgQqsLKFrgiEY3kl4xTPo3UggkG6eo64IZS8eG3kn88RlrjvBmKKFX5HyMv8BbYF5bCMzrYXi/fF8xQz41SVoNLmKfII19F8yJ/8zN8cQAQ8l9yMf3d9jjNCBPiBeVCX8GN3ffYZEYeFugX8QiA1OfuvI0smSB91tyWeWaQ/njZpP7BIQAbCNmLgm9/P92FSU4+7SVjvPaql5eOKLStXngfW+vrDEgRYiJEFaFCs7CUZwLsPiBtTjZggk3ZHo1qzeO7Dgix7ndgGojf4XaJBDZ7irh1NwC418iA2WXvyBWMyQX3A37bt21q2FP8ZzlrZpSEu1Npnnpze3Wdc5yA1+UCrz7FYQe9qrEW35eRKwuqLecqqdMl+2g==; 5:HCZqXA9bz8kVFJO9kv5PDc7W3cv1VmIBIckSm525aszzYG1d2S2P/plRyYg/4YBaeGDe+hK7nDitgKoty+0ViuVr0gblDP3ZgxQxs/5gvAr8sQwTuSvUapIqc8d4c19Z/ttrJDGVTC6fTAuROtPXEaaJrCZ57YI+BlKJfc2LELw=; 7:k3uvpRGo9k0MKr6UeMEc6KHED3K1J00DFRm1DkKO6u9UoO7GQ4ZON6Cv66mTWuio6YOrgrI6LIjOlRP390KQEY74aD1Yv9sOZvhk5o0ghB11oKXMfC1Oj1Wpgt55f/XjyxqSzQ9Ei4Q2XW5XMFhgVzcCUiID5ekcQO06p/C0PuAekmQCKDZ+m0QWMxK7yDqiGqHnptlHBZuPWpAqybwAz+jpP5iMbAnCwVVBIFe5CzRB9Jrn2jBRKefJcTof3JiE SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2018 12:02:49.9700 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40ac46d7-53a6-4c36-fa90-08d6329621ce X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4683 Subject: [dpdk-dev] [PATCH v5 5/5] fslmc: enable dpaax library 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" With this patch, fslmc bus and ethernet devices on this bus would start using the physical-virtual library interfaces. This patch impacts mempool/dpaa2, event/dpaa2, net/dpaa2, raw/dpaa2_cmdif and raw/dpaa2_qdma as they are dependent on the bus/fslmc and thus impact linkage of libraries. Signed-off-by: Shreyansh Jain --- drivers/bus/fslmc/Makefile | 1 + drivers/bus/fslmc/fslmc_bus.c | 20 ++++++++++++++++ drivers/bus/fslmc/meson.build | 2 +- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 21 ++++++++--------- drivers/crypto/dpaa2_sec/Makefile | 1 + drivers/event/dpaa2/Makefile | 1 + drivers/mempool/dpaa2/Makefile | 1 + drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 29 ++++-------------------- drivers/net/dpaa2/Makefile | 1 + drivers/raw/dpaa2_cmdif/Makefile | 1 + drivers/raw/dpaa2_qdma/Makefile | 1 + mk/rte.app.mk | 3 +++ 12 files changed, 45 insertions(+), 37 deletions(-) diff --git a/drivers/bus/fslmc/Makefile b/drivers/bus/fslmc/Makefile index e95551980..218d9bd28 100644 --- a/drivers/bus/fslmc/Makefile +++ b/drivers/bus/fslmc/Makefile @@ -19,6 +19,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/qbman/include CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_ethdev +LDLIBS += -lrte_common_dpaax # versioning export map EXPORT_MAP := rte_bus_fslmc_version.map diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c index 2bc9457bc..5ba5ce96b 100644 --- a/drivers/bus/fslmc/fslmc_bus.c +++ b/drivers/bus/fslmc/fslmc_bus.c @@ -20,6 +20,8 @@ #include #include "fslmc_logs.h" +#include + int dpaa2_logtype_bus; #define VFIO_IOMMU_GROUP_PATH "/sys/kernel/iommu_groups" @@ -377,6 +379,19 @@ rte_fslmc_probe(void) probe_all = rte_fslmc_bus.bus.conf.scan_mode != RTE_BUS_SCAN_WHITELIST; + /* In case of PA, the FD addresses returned by qbman APIs are physical + * addresses, which need conversion into equivalent VA address for + * rte_mbuf. For that, a table (a serial array, in memory) is used to + * increase translation efficiency. + * This has to be done before probe as some device initialization + * (during) probe allocate memory (dpaa2_sec) which needs to be pinned + * to this table. + */ + ret = dpaax_iova_table_populate(); + if (ret) { + DPAA2_BUS_WARN("PA->VA Translation table not available;"); + } + TAILQ_FOREACH(dev, &rte_fslmc_bus.device_list, next) { TAILQ_FOREACH(drv, &rte_fslmc_bus.driver_list, next) { ret = rte_fslmc_match(drv, dev); @@ -456,6 +471,11 @@ rte_fslmc_driver_unregister(struct rte_dpaa2_driver *driver) fslmc_bus = driver->fslmc_bus; + /* Cleanup the PA->VA Translation table; From whereever this function + * is called from. + */ + dpaax_iova_table_depopulate(); + TAILQ_REMOVE(&fslmc_bus->driver_list, driver, next); /* Update Bus references */ driver->fslmc_bus = NULL; diff --git a/drivers/bus/fslmc/meson.build b/drivers/bus/fslmc/meson.build index 54ca92d0c..18c45495b 100644 --- a/drivers/bus/fslmc/meson.build +++ b/drivers/bus/fslmc/meson.build @@ -7,7 +7,7 @@ if host_machine.system() != 'linux' build = false endif -deps += ['eventdev', 'kvargs'] +deps += ['common_dpaax', 'eventdev', 'kvargs'] sources = files('fslmc_bus.c', 'fslmc_vfio.c', 'mc/dpbp.c', diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index 820759360..678ee34b8 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -9,6 +9,7 @@ #define _DPAA2_HW_PVT_H_ #include +#include #include #include @@ -275,28 +276,26 @@ extern struct dpaa2_memseg_list rte_dpaa2_memsegs; #ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA extern uint8_t dpaa2_virt_mode; static void *dpaa2_mem_ptov(phys_addr_t paddr) __attribute__((unused)); -/* todo - this is costly, need to write a fast coversion routine */ + static void *dpaa2_mem_ptov(phys_addr_t paddr) { - struct dpaa2_memseg *ms; + void *va; if (dpaa2_virt_mode) return (void *)(size_t)paddr; - /* Check if the address is already part of the memseg list internally - * maintained by the dpaa2 driver. - */ - TAILQ_FOREACH(ms, &rte_dpaa2_memsegs, next) { - if (paddr >= ms->iova && paddr < - ms->iova + ms->len) - return RTE_PTR_ADD(ms->vaddr, (uintptr_t)(paddr - ms->iova)); - } + va = (void *)dpaax_iova_table_get_va(paddr); + if (likely(va != NULL)) + return va; /* If not, Fallback to full memseg list searching */ - return rte_mem_iova2virt(paddr); + va = rte_mem_iova2virt(paddr); + + return va; } static phys_addr_t dpaa2_mem_vtop(uint64_t vaddr) __attribute__((unused)); + static phys_addr_t dpaa2_mem_vtop(uint64_t vaddr) { const struct rte_memseg *memseg; diff --git a/drivers/crypto/dpaa2_sec/Makefile b/drivers/crypto/dpaa2_sec/Makefile index da3d8f84f..1f951a14b 100644 --- a/drivers/crypto/dpaa2_sec/Makefile +++ b/drivers/crypto/dpaa2_sec/Makefile @@ -51,5 +51,6 @@ LDLIBS += -lrte_bus_fslmc LDLIBS += -lrte_mempool_dpaa2 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_cryptodev +LDLIBS += -lrte_common_dpaax include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/event/dpaa2/Makefile b/drivers/event/dpaa2/Makefile index 5e1a63200..7a71161de 100644 --- a/drivers/event/dpaa2/Makefile +++ b/drivers/event/dpaa2/Makefile @@ -21,6 +21,7 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/linuxapp/eal LDLIBS += -lrte_eal -lrte_eventdev LDLIBS += -lrte_bus_fslmc -lrte_mempool_dpaa2 -lrte_pmd_dpaa2 LDLIBS += -lrte_bus_vdev +LDLIBS += -lrte_common_dpaax CFLAGS += -I$(RTE_SDK)/drivers/net/dpaa2 CFLAGS += -I$(RTE_SDK)/drivers/net/dpaa2/mc diff --git a/drivers/mempool/dpaa2/Makefile b/drivers/mempool/dpaa2/Makefile index 9e4c87d79..0fc69c3bf 100644 --- a/drivers/mempool/dpaa2/Makefile +++ b/drivers/mempool/dpaa2/Makefile @@ -30,6 +30,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL) += dpaa2_hw_mempool.c LDLIBS += -lrte_bus_fslmc LDLIBS += -lrte_eal -lrte_mempool -lrte_ring +LDLIBS += -lrte_common_dpaax SYMLINK-$(CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL)-include := rte_dpaa2_mempool.h diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c index 84ff12811..c5f60c5c6 100644 --- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c +++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c @@ -30,6 +30,8 @@ #include "dpaa2_hw_mempool.h" #include "dpaa2_hw_mempool_logs.h" +#include + struct dpaa2_bp_info rte_dpaa2_bpid_info[MAX_BPID]; static struct dpaa2_bp_list *h_bp_list; @@ -393,31 +395,8 @@ dpaa2_populate(struct rte_mempool *mp, unsigned int max_objs, void *vaddr, rte_iova_t paddr, size_t len, rte_mempool_populate_obj_cb_t *obj_cb, void *obj_cb_arg) { - struct dpaa2_memseg *ms; - - /* For each memory chunk pinned to the Mempool, a linked list of the - * contained memsegs is created for searching when PA to VA - * conversion is required. - */ - ms = rte_zmalloc(NULL, sizeof(struct dpaa2_memseg), 0); - if (!ms) { - DPAA2_MEMPOOL_ERR("Unable to allocate internal memory."); - DPAA2_MEMPOOL_WARN("Fast Physical to Virtual Addr translation would not be available."); - /* If the element is not added, it would only lead to failure - * in searching for the element and the logic would Fallback - * to traditional DPDK memseg traversal code. So, this is not - * a blocking error - but, error would be printed on screen. - */ - return 0; - } - - ms->vaddr = vaddr; - ms->iova = paddr; - ms->len = len; - /* Head insertions are generally faster than tail insertions as the - * buffers pinned are picked from rear end. - */ - TAILQ_INSERT_HEAD(&rte_dpaa2_memsegs, ms, next); + /* Insert entry into the PA->VA Table */ + dpaax_iova_table_update(paddr, vaddr, len); return rte_mempool_op_populate_default(mp, max_objs, vaddr, paddr, len, obj_cb, obj_cb_arg); diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile index 9b0b14331..52649a945 100644 --- a/drivers/net/dpaa2/Makefile +++ b/drivers/net/dpaa2/Makefile @@ -40,5 +40,6 @@ LDLIBS += -lrte_bus_fslmc LDLIBS += -lrte_mempool_dpaa2 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs +LDLIBS += -lrte_common_dpaax include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/raw/dpaa2_cmdif/Makefile b/drivers/raw/dpaa2_cmdif/Makefile index 9b863dda2..3c56c4b44 100644 --- a/drivers/raw/dpaa2_cmdif/Makefile +++ b/drivers/raw/dpaa2_cmdif/Makefile @@ -21,6 +21,7 @@ LDLIBS += -lrte_eal LDLIBS += -lrte_kvargs LDLIBS += -lrte_mempool_dpaa2 LDLIBS += -lrte_rawdev +LDLIBS += -lrte_common_dpaax EXPORT_MAP := rte_pmd_dpaa2_cmdif_version.map diff --git a/drivers/raw/dpaa2_qdma/Makefile b/drivers/raw/dpaa2_qdma/Makefile index d88809ead..2f79a3f41 100644 --- a/drivers/raw/dpaa2_qdma/Makefile +++ b/drivers/raw/dpaa2_qdma/Makefile @@ -22,6 +22,7 @@ LDLIBS += -lrte_mempool LDLIBS += -lrte_mempool_dpaa2 LDLIBS += -lrte_rawdev LDLIBS += -lrte_ring +LDLIBS += -lrte_common_dpaax EXPORT_MAP := rte_pmd_dpaa2_qdma_version.map diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 4c70a408a..06a457d62 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -107,6 +107,9 @@ endif ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) _LDLIBS-$(CONFIG_RTE_LIBRTE_COMMON_DPAAX) += -lrte_common_dpaax endif +ifeq ($(CONFIG_RTE_LIBRTE_FSLMC_BUS),y) +_LDLIBS-$(CONFIG_RTE_LIBRTE_COMMON_DPAAX) += -lrte_common_dpaax +endif _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += -lrte_bus_pci _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += -lrte_bus_vdev