From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0056.outbound.protection.outlook.com [104.47.33.56]) by dpdk.org (Postfix) with ESMTP id 2D542D19A for ; Tue, 11 Apr 2017 15:38:43 +0200 (CEST) Received: from CY4PR03CA0013.namprd03.prod.outlook.com (10.168.162.23) by BY1PR0301MB1286.namprd03.prod.outlook.com (10.161.206.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17; Tue, 11 Apr 2017 13:38:41 +0000 Received: from BN1BFFO11FD047.protection.gbl (2a01:111:f400:7c10::1:140) by CY4PR03CA0013.outlook.office365.com (2603:10b6:903:33::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17 via Frontend Transport; Tue, 11 Apr 2017 13:38:40 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; caviumnetworks.com; dkim=none (message not signed) header.d=none; caviumnetworks.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD047.mail.protection.outlook.com (10.58.145.2) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14 via Frontend Transport; Tue, 11 Apr 2017 13:38:40 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v3BDbY3G023442; Tue, 11 Apr 2017 06:38:37 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Tue, 11 Apr 2017 19:07:25 +0530 Message-ID: <1491917847-3935-20-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1491917847-3935-1-git-send-email-hemant.agrawal@nxp.com> References: <1491917847-3935-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131363915206021948; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39410400002)(39850400002)(39380400002)(39450400003)(39860400002)(39840400002)(39400400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(105606002)(106466001)(50466002)(8936002)(86362001)(33646002)(48376002)(5003940100001)(4326008)(356003)(54906002)(77096006)(97736004)(189998001)(85426001)(2351001)(2906002)(50226002)(6666003)(2950100002)(305945005)(5660300001)(8676002)(6916009)(81166006)(8656002)(110136004)(38730400002)(47776003)(50986999)(76176999)(104016004)(53936002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0301MB1286; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD047; 1:MmBwbwPvteaUM9f6obHaI9fe6n8BYEBPmOQKlyrL45xh2APQjZOS7OqIh/ISlkBllLvGV3E2AtmWdotwFN+Qg6uoVEpW7WUS2b7aap2wySll6V9E0BMkHoSPZourTyPri8Dtqswu6ZRQySAkn0r+HlFfsRb1R286NyzkFVaSGlm6UhZZWdP7rSHehwE6zRzD4USegL4zbVxA7OOj4H/1v9GxQ0EAOhBjl4gDvpz8bMcRgOhnIe7y8jxtH5WTQZYN1VZ6McvIHXtjZw0LloFmaK8FAwKod1eLt3Eek8+qpTy8g6llDsn45x86YecSzFxP29S039nby559Mk/98kaW1du1kAHTvJMfOXD/uIm6mdlUB5v3QE+3fvmYEfryBYMBd4ccmE7Bh1u8IpM57zfHMTI68QBPPDmm7KOeWkQlMvW4uI4WrSHo7Ic/814+ufQMcYNvPq31dus/CV8OSPqVxVRnczsATsoZfnKPoT/TjM9r8O7z1orH0tg3LPPM1F5hDm8o6Nksw64pj+O4ih9VIRZYb6tWbW7+O2TROlByQonwFiBnVbEy6fFw3pIJDgl1dlBx33fBKsB0MflYEwR4THK0j73acNj/n8J8G73QaSHdHi+nyKh0k37uLNBSC/Ho9iU/i63BwgDXnJHCRfnrarPIh03wnoZVu9du/JFd11w= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: a0681548-1721-49f0-71df-08d480e0109d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030255120)(201703131430075)(201703131517081); SRVR:BY1PR0301MB1286; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1286; 3:HvtStKeCJTJG+cwyPyk3xcpUU8RG3ZMhc3Sk668GmqK+OOVNaRwn6zZOHagBhKk0XSH9vXam5dWSS/QRZeZZ+uAPT6mbEb8lQDQF2TzRjVutPbUi5hxV82Yz2k3W7I6I1OTsKIFjtqA8sprYnZnK5woCu9VM/oaLH4zVFAYy77Dgp6NaSCd+MR0btuG3iN2khRUcOnUWkH+HhNjBMEdG0rlRTwG/zFJwEBSbG+qoyk5svC2jcf5xnlJlWWfylmRkDWwcAuPwO/dCvHGIldD7ToYEaxdIlE4MNH3lw+Zpq05SzzBTrhO8AQ1xoVPMqpLuwfbLa6tfsbdZmSiHSwQXxcUcRWoR+8KwmAU0F91mfte9fD9ZnA62BYS5iHdooG/LXs7utY784agHAKrp37YLa3OVsu6E3f3iJz1pgJxgR457ih+1/Xt49o3+3DFOmgt8NSigOw9jKSSJRSxLPCpSlA== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1286; 25:saTqwBPq/gVh5dgsaRTq1pzkhN7/kDsnR7Z9Q/mJG4gqCds/Y1qE6x6YL49eHe+Xlo+IkA9RD5q5udBb7sbNzpjZ7VR8sKKVJ0C6RMSSeqH+LL7toXU5/TFF7Bu6vDP6IzE8Qw66BOqr5vhRj51Lw6ObdytVGjt7SLdjff4OdhmzX/jwfG0kQlk7jsPitQs09v7xv7MF2yZ/6tSDYOLf1rnYGOFaFlFZvizUu14LSwEnDoCoEaa4kpioMgp21f9+8DiiRywe2vPlp2y3ae6+b3LgLq4kQeuuj9JgNlIjmfOUwlZJ1Q8kLAvuvciMfMuYAwHx4DUug7baCp5oO3ezWcKKlZthKPf/15Vg6uKnjfq2Uo3k1DHvF4KXxz4TXpzuaV7gN/j8GN37tTBcrKF55fcjjpT1XudWVlHaEN3y98X/6UGIOppP3nPHVyukSUamEPp1V9SOY43V8xqEfF230Q==; 31:ggwLeKfNvuGDFc8s2ZTnq+UBOPOCTTQB4yUJlslFRR7tUxqoVzxWdaVm97DVmbaDpNi9NBHPF3AX6nMT0OSc9JFkXoFCDqfMmB1tRzOqxxiK9PgvIdDPlYxM84tBf6txJCV4M1NQPF7TsdgNCN4/DUOKpW1OM9umhpzBFzkCRBKj4CpjeLSdL9sA5KHRto33EU11UyPH/R8YhmAHZwZGAtE97wf23re223JlFzPUSRCSGoMU8vSrXoP1o/2UGliCazXFlg37JsnWdMZVoSiOZstoWvTgpxJXxCXqklSA02E= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(13017025)(13023025)(13018025)(13024025)(13015025)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123561025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259075)(20161123556025)(20161123563025)(20161123565025); SRVR:BY1PR0301MB1286; BCL:0; PCL:0; RULEID:(400006); SRVR:BY1PR0301MB1286; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1286; 4:kS479vObD75bSjvhLWCoK/9Yz84eme4YaKfxE4oq?= =?us-ascii?Q?rysINpTO9s7FR3lPQCo82BxZCKRxjivQsK6uN5pVjrZAHJDO1w9K2htG2FcM?= =?us-ascii?Q?7aYsBxCJcSB1SEjbNcCcqK+/Qpz7oPgkPFTjBOiFjojzGoDU9aRjbI+jgGTW?= =?us-ascii?Q?QWAeGONV5gyhXvZI1ODOYOsY0om+jf/lqAbqPgLc/+Q18vAVzy14SPD13Ig9?= =?us-ascii?Q?PZAEpjC5rBjE1DFo1ocHmGDgenrkZOdkB9ZE6EqZWJv9m1quagkNPl7CJ7T6?= =?us-ascii?Q?GC5Fxr3bQLRKs7+TZyHhCjt7ij9WxFOqyzqYrk8UunKPAuvGIohRE2pbz2R3?= =?us-ascii?Q?lLTX1vUrKwOSxVuGD60AkTdamSE9zXz8f/zPeVUd3YVqAl1D5hAaUksYWoBl?= =?us-ascii?Q?lAccrUI5NnWJIFzDGMH789waRwp5wGOGqCY+b870Fia2qTyg8aashaa7m/Lf?= =?us-ascii?Q?lHHl8Fcpr3DjKu19saNVhjt/TfusDsJj4lZxfscYmqlaetcXKcwcxF1/P9og?= =?us-ascii?Q?e6E1DB1xoRs6h1oSqmlCkZKswj8fFoqyEycdmnoShGz+1G/YFN6XWczL5jA6?= =?us-ascii?Q?JR7IPCuJlnLdxJI69g++yvZ7ROOJ2ydg8Y8cnW7ttWqCTrC6fmkpYK27s/Nt?= =?us-ascii?Q?C0owoqzdO6bYipAq5EI3XMLb11APW9YR2Smm1nThdELzwHJkoNHdEbUdWeHn?= =?us-ascii?Q?xpbj0hCLQRxm8OodDCNkA7IKlFIWwdyMdp9RNZNqKn0AxNS99yH0B4mvu4zp?= =?us-ascii?Q?ufubUltgPoAAHqv46VwNTjLSicaQ6b1Erpjj2ST4dhV3dVcmgoEQQyM5d+hG?= =?us-ascii?Q?cYmOOvqaeE+iZoOQivTZtu1BRbqw1/uxnua201/YNIF2AjrUDrvKps2HJybu?= =?us-ascii?Q?pEDK1JuYFbHy3aaLrvdz2hUIz0FaKEm9ExA8yEuxiqDeW9ytFdYgw3cgzQbE?= =?us-ascii?Q?VCBeRFTCtNpZb7YGLHsp3uZL2uKDmC9hv5oW50u0BQ=3D=3D?= X-Forefront-PRVS: 0274272F87 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1286; 23:OM8tuv63gHSW+gNe8l4uee1Q5FYjOYvGFG8UMCS?= =?us-ascii?Q?Ytc/x8nonbm4GoyfewHocJ5DYH0G3jumaVyumQLXcxRnX3dMSsqEbdZz8amc?= =?us-ascii?Q?5/MMLu4iWEBGrZwCaoSXqP6/0WyEX2kCDYJHY9+ifb+J+JL+5dx0v+7MW91w?= =?us-ascii?Q?uRHhM0IBfn0Cha+pgrfQGZyDK5ASqd+duothyMmYj5bP3qtzJ0Nyf0oHlCX4?= =?us-ascii?Q?Oqmnk+4eTvGoa62xwOKltThmdJ36AFnWd8NBNMRZ8xLsFQi5CPVbSQ8flWui?= =?us-ascii?Q?jWO3MOPm4EtoK6N8EDePL7xKhDtULPd8HUfTKwkUbGQmM2qk061uVZEeY8EV?= =?us-ascii?Q?nUHWimLVH5E++TlAPwcrH+PZOD1/JBRyfr65P/n6v4mxmvMYoOYZ8gLOeYd6?= =?us-ascii?Q?9pa9iRQVG69dpWzI5/pK5K6DHCDIZNG1p0R46q3ZBs2kxiad2U5L8fQBqq+n?= =?us-ascii?Q?wYyKIGx8LdYsSWOBVAwFyBT6r9XKVFbnJRki8W4JJXG+3m+1aLjogabY7DKs?= =?us-ascii?Q?FCM2r2TQuiKjNUfc4flj7dNeRyk+CochLFfzRbYDYOZt0seSbw9uuUw9bt68?= =?us-ascii?Q?MekuaL/wpQpX9IjIcQVM1aALdRfrKdJ1vNrQL5RT+kK9KPS26rjTBKaFM5ga?= =?us-ascii?Q?uSK1aWRDuvIrGDPy/z5B6W1q6QbDrfdqBncan4rI0cdwAKliVN9NSSXAzrLT?= =?us-ascii?Q?oKUJYBH9CjhXb3vzJRG1RqD9jwy7ypitdQP35xePhQuY8M2mBXk8TFteoijC?= =?us-ascii?Q?pGucqqaqU8Wp69zy1/vdYcT5lJLdcVmwqWN+gGmgbtAcCT79dDt+4pv74XR3?= =?us-ascii?Q?LwGDuE9O0EuUqc7uIuMORNMg38sEDqCPmTon9CfLloD96eIKt5iKChsMSFFy?= =?us-ascii?Q?D6ywqULQC5oIOAHTAiELnUyrwCetxU7dG6fk9mlhDLg+qUwOpKJiH24tZVwH?= =?us-ascii?Q?fAPDPme0GsJ544A6/inW8ye2JTapvYJHKJCIh30oeKSq10FXlpmLM8iqh69Q?= =?us-ascii?Q?FTWa95Q1Hd1Vybgdjw+Yx/hqz8mdDz+6J/8rjIZ1fivX6PxPTpXJKyCvVfI3?= =?us-ascii?Q?fGjJ5sKIJOWmHb2t9bKBruAZDeqCKVX1zjSKSo0Cbj/0jQGYMd7OJmPouyEM?= =?us-ascii?Q?pW08bq+J5SWPr/dSt75rqdd1g/Q1SdqeL/YVPjPmSSY6KB1ir7nwPhkuc1NF?= =?us-ascii?Q?piio3z9MTv4GrHTaTE0rakpk6VVA+S57XQFXnaeGWmvsNYwRDoPtAuDVY/A?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1286; 6:3BQ/rVrULSLvKEkvGZbYBA4zKbuscg/xy1ubHJsUVYNf4s94Rht+0XUDtOdiibGUjCm5ta66uoZl9e0r+IolYR5DE0z4Rt3Wyahu6yAPyS2pKfuAsMHpmM2MeVDk6ArO/8yMjPnCdU3JafjocjQfMCYAkIr10zBhLLDWBMwKWZB4XYUyWHfnxTFRBAG91xv8pa833LmbHE+4N+HjJ76bT6Glj0KPSpfltvE30uGg9De2Cr2+yCVU8my9kXIitNMdWOjKerPU3Jgfpq/0Fl1Im5/rGQfJqSbo4zyg3Af6VfHqmw3WR3OkAEEAISt0n0mRgxoyB36VHR/h2dyHiR/94TMfv/8NXc/IxjFlYTVG9Pp6reT82qE1J5JhoH49eICnUTagGFTTltKQcfW21v7BTag+X/Ho9n8A0F+n4/Y8s70tcJ/72yxxeZuR++ju+8rNfDbfNFpqZeERRebwdpxhcBqxDjhdluW4M+sMEP5RL2BkCVa5mNlyuIZ5SEalmbLd; 5:y0Smb7eYUzbIwgjPBCZ5WKT057PeLZ40VHPeeTewAt03B+D6pdXyP7l4SiBiYQQ6T1fZzWdfNt0nh+iRDMFlHuC00bbn+sjcmGFZV+qAX6rKSPIYWSDfMr9AKQ/OePZXJHI6haVqnERdaYEQlE7LZMMLyEUy4MwYNrNm60ba47+KHQmn7meMeHdYe5/FCBNu; 24:LdJmICNHYPMHu5RJa9VB8Ne+Lf+HyApR51o4cGjRm4iZDou/IlCBEY/8a1boDgZvsTsrPgf0PZ2oKWyswKBsyTc0bGuYgGkQVnl1ggo0EOs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1286; 7:W934zbYbFrljHnUpg2sg2j14HGMQW/6U1I0ByiqpbSNb6Zq8y7gMT7bL0kIk40N+4llWyaXNI4dHx90nKrGw22keLxD69R55ASDU9J67O3t2jZpjh5x2/DWU2LZN8rXBEjUzWn1agkp43qgqAEeqa4JgQGIiB+CblD8mw/Yy/rcbMCc/raKpboU3HIM7N+ArTWFFODoITm7oMAjYC/QsibS6oeQgaLdl1TFe8oi48EPFbXVKoFgYQ7BSxHQ8rrEZr8L3EHo2qSeAIK/qfTe+fqXECNUGYVuN9Yh8HqOjzuTm3rHoYW73VPy3JX2KrtXuZctBPAxY1XJB5e1eNcKcjA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2017 13:38:40.3837 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0301MB1286 Subject: [dpdk-dev] [PATCH v4 19/21] bus/fslmc: add physical-virtual address translation helpers 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: , X-List-Received-Date: Tue, 11 Apr 2017 13:38:44 -0000 Signed-off-by: Hemant Agrawal --- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index b405af8..41bcf03 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -173,6 +173,72 @@ struct qbman_fle { */ #define DPAA2_EQ_RESP_ALWAYS 1 +#ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA +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) +{ + const struct rte_memseg *memseg = rte_eal_get_physmem_layout(); + int i; + + for (i = 0; i < RTE_MAX_MEMSEG && memseg[i].addr_64 != 0; i++) { + if (paddr >= memseg[i].phys_addr && + (char *)paddr < (char *)memseg[i].phys_addr + memseg[i].len) + return (void *)(memseg[i].addr_64 + + (paddr - memseg[i].phys_addr)); + } + return NULL; +} + +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 = rte_eal_get_physmem_layout(); + int i; + + for (i = 0; i < RTE_MAX_MEMSEG && memseg[i].addr_64 != 0; i++) { + if (vaddr >= memseg[i].addr_64 && + vaddr < memseg[i].addr_64 + memseg[i].len) + return memseg[i].phys_addr + + (vaddr - memseg[i].addr_64); + } + return (phys_addr_t)(NULL); +} + +/** + * When we are using Physical addresses as IO Virtual Addresses, + * Need to call conversion routines dpaa2_mem_vtop & dpaa2_mem_ptov + * whereever required. + * These routines are called with help of below MACRO's + */ + +#define DPAA2_MBUF_VADDR_TO_IOVA(mbuf) ((mbuf)->buf_physaddr) + +/** + * macro to convert Virtual address to IOVA + */ +#define DPAA2_VADDR_TO_IOVA(_vaddr) dpaa2_mem_vtop((uint64_t)(_vaddr)) + +/** + * macro to convert IOVA to Virtual address + */ +#define DPAA2_IOVA_TO_VADDR(_iova) dpaa2_mem_ptov((phys_addr_t)(_iova)) + +/** + * macro to convert modify the memory containing IOVA to Virtual address + */ +#define DPAA2_MODIFY_IOVA_TO_VADDR(_mem, _type) \ + {_mem = (_type)(dpaa2_mem_ptov((phys_addr_t)(_mem))); } + +#else /* RTE_LIBRTE_DPAA2_USE_PHYS_IOVA */ + +#define DPAA2_MBUF_VADDR_TO_IOVA(mbuf) ((mbuf)->buf_addr) +#define DPAA2_VADDR_TO_IOVA(_vaddr) (_vaddr) +#define DPAA2_IOVA_TO_VADDR(_iova) (_iova) +#define DPAA2_MODIFY_IOVA_TO_VADDR(_mem, _type) + +#endif /* RTE_LIBRTE_DPAA2_USE_PHYS_IOVA */ + struct dpaa2_dpbp_dev *dpaa2_alloc_dpbp_dev(void); void dpaa2_free_dpbp_dev(struct dpaa2_dpbp_dev *dpbp); -- 1.9.1