From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0044.outbound.protection.outlook.com [104.47.34.44]) by dpdk.org (Postfix) with ESMTP id 52723D148 for ; Fri, 24 Mar 2017 13:42:47 +0100 (CET) Received: from BY2PR03CA068.namprd03.prod.outlook.com (10.141.249.41) by DM5PR03MB2793.namprd03.prod.outlook.com (10.168.198.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Fri, 24 Mar 2017 12:42:42 +0000 Received: from BN1AFFO11FD013.protection.gbl (2a01:111:f400:7c10::146) by BY2PR03CA068.outlook.office365.com (2a01:111:e400:2c5d::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.991.14 via Frontend Transport; Fri, 24 Mar 2017 12:42:42 +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 BN1AFFO11FD013.mail.protection.outlook.com (10.58.52.73) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.977.7 via Frontend Transport; Fri, 24 Mar 2017 12:42:42 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v2OCfacR031007; Fri, 24 Mar 2017 05:42:38 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Fri, 24 Mar 2017 18:11:30 +0530 Message-ID: <1490359292-18773-21-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1490359292-18773-1-git-send-email-hemant.agrawal@nxp.com> References: <1489754201-1027-1-git-send-email-hemant.agrawal@nxp.com> <1490359292-18773-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131348329621852989; (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)(39400400002)(39840400002)(39850400002)(39450400003)(39410400002)(39860400002)(39380400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(50226002)(8676002)(5003940100001)(2906002)(575784001)(305945005)(86362001)(77096006)(356003)(81166006)(8656002)(106466001)(38730400002)(48376002)(105606002)(54906002)(2351001)(4326008)(110136004)(8936002)(50466002)(33646002)(189998001)(53936002)(47776003)(85426001)(6916009)(36756003)(104016004)(2950100002)(50986999)(76176999)(5660300001)(6666003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2793; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD013; 1:h3mdTOnCzjTvij8SgtKo8OHHOJWrrYOGI45P+qWkWQcMHxLAVRG4rnuB6J+LPmf+E4kQGv2F9z1U0mWN+qZ7X9+uExuWM410x+4PAARVZ/17sejh1CAuw0xEfDC3Z/QaGC8yq3zfVibdCGwRUQ9b6HPQZaCbfBIh8P6BNAKdO2/G1WZx/LwUm41z+f4CmrGB26qJ7gbzT43PiMQ+8EMUdNZ9pODxYKUMLl/j+s1Y5CmhodkSt4UN5PNMPtruNqwTT8KFDlbUOfvZGikXk/ThvmhuIIGEy1qTsIO+IREh4ydyF1t3TBeXgcb1PtM1JgEJckC/SXCn3wiodUKYyOB2X3us77UeS1w2nxdz9/FKlExo7hzhnBSoAHSi08GwePmFYXcT/cTTGiFHjXtAjLOgsId2BevlRYjtYbHwAoI6NR4dskt/C16bEeLcs5TLtGxSMZdM2udpJWipOzE0tqRPmxiNZZrLm0cwlMpmLJknHDrYJPoaJ5ck/YRUedLKpGsXsKilwhcJ4mXUbZdJohyxWeannEBpaubHbGi1AGcBlIATkiV6NlhNb5LT4wH/6k/DpYIyyD2Bd1lfheBJR4YFmYQiuAgFeFL4KPZZC6sYOW+1pSsgW4MJvdsgqjLrSCefSlUE+sa4b/BfYmPT9F0WzQ== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: c3ea7bf9-db64-4ed9-933d-08d472b3436a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DM5PR03MB2793; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2793; 3:9XJqqwfprUSjgdtjvlC5j0IGi9sxWnIkmdi9IW3XYKe24ml1YZX2p4UinMBMrcpViSx45L0fnAtLF0IdAizBPOLCQ26TWoNdfrD0BiyJeoC7Q4ZiMnw7P96f20trV5uwgzKwwd0af7qgvgsj1jBTUFx0b8EOItB9Fagfp5FztAp4rNrZTYKxYIt0AYvo7/x2HNk5CL3gsEXlIWFDCLXjKwK4PNUkn3CsA3oLAtyEhA/PMjR/zT/gmm/5W7NguHYVt/KLJSWvz72W2L8jFwtOu0m4Zrv8n9qWK+E6s+yS6mxcSGuqz6NDezCpIdDQh22C7x3/p95RhSKc/3tQYzQd9mZt15CKQ1jFQl/SyqtdiTQ+rA+vatJGCcwqbEGR7IeF; 25:wq46rIj1c+aFSyGvxvei/4cHs8J7/qZcaE1wZUanFoc2Tv1tKFE+HB/K4OaKNnClPH+6PLPkD5Fn97am4XsmUP4lN5Bpi3+6GXBi22Yh3ETEKV8C/vM7h65tNmY68zu2DVQnzE8HpvrMsicUXdSQ9zHQ9pW9wJ+WiDfWZyTjQvGiah9YS3Q/474SUYNPrxNMFdDfMc+bc5ps1HsJyk32JcwzhEyeToLaOWwUNy6ljETev6rPmjuBvzqHbEtEcikrVnImQDzZTJCLHeyrDfoczrxvKAJTd34M9xlZL/JXisYToAwjW5wWIfaxEFf5xCIiJkzOPPudPRgKtKCYXHXXRMPamjmirgEzQYp3cFB9YGXXgUFbWuRYh07LABx1g4/vKxE2sbQgCRltXo8eapTnX0HhdCcfUjae7f7AYWCE4bN27eE3r+uCpeCDobnO0bjic2j9hpDxIpMrd65qCP77+A== X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2793; 31:S5h5v5Gu+GmU/oWsFtvi7qX5eoT/WzmObvGFBNFkBNf6g5RHBOk+3AuQ91MdchfhSvu3xZKtltZuA3yZMEUj2RVmtp9vVYSYIFRwA+JwlFYtIwzJaPZnqHkyek40bP567MXV/yDNgiU5ee2ZRMU039hkUjiI5AYxiV7WgKPF6vT9t2dulQCeINKD6zLDaf8QkNTA+3NoXcEiUR0hkfg46M02mQZScXtSil9Bv4SUbda040RXrKgDzf+F7FGtBIKL0QYtF8cBvSTO6LW7zp4wqg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(8121501046)(13015025)(13018025)(13017025)(13023025)(5005006)(13024025)(10201501046)(3002001)(6055026)(6096035)(20161123561025)(20161123559025)(20161123556025)(20161123565025)(20161123563025); SRVR:DM5PR03MB2793; BCL:0; PCL:0; RULEID:(400006); SRVR:DM5PR03MB2793; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2793; 4:b4GOM/CD5uqgPT/QXF0OiQabKfhC2Em6BP1Px2Q0jzv8Y9AvAMS6YI3uH9BWa8bEPrNJveuJrbfXx52vbN+k1u410OyE9LQBBNC7XObPb+OiHA1zzgcb4SYI7l+8pDT0jqVhCEaFwjwp3ttmkJih3CDWbPbBKf1oArt077YEgbJP64miiVHW3M/P1g86/RUS89+wx3ilWT/68EHEGbsi9ClS91rzslVpZStD6etftIEKdz4VjQAX77UuTwqSqAUSVWRuaiRhkOamlObgaXYxjPhl5RRosFN+qHomPvg6AR7XYeZ9E/ezWvyniHykwTmt7nD+ShV4CyiUNnjAXpSpIFAy1TbU49nKSvdDUjp9qYUQlXqsZEeB6x8dBbHFsJB8uaiaMDf3BT5LJVC0umqW+4Jv60H6avt/0OXLVOxR4duLhpMw1VOlY6Ed0qhSH6t68u4egQAJfFg2qlOU/J+lUUTzt6HpXBkc5khjTeJLqnkSiuDwlfZR/A3jvz3DGtelR6Xam6NTmwcNJJzMIlRlD3q3R9+8TrVq/IxhFhULvZVLo1e9g4BbobgGAW9nqFfos9nWidEMFTKCCks84yT+K7tbZJ4yHsx/6UKhtyGi5IoD063A00MlqHndBj4TwGo5oXmTZMj2VG/9vH3PWmlhn3hmRpltKo63odET83u0/tVumfI3XPzgzJ6agIofL9UkwhKofmtX6QxHVdXoIMIaOba5PKq6Ibo+exMX3+RdtxTm9xWrFpqtZ90iS2potSHqDhap18ePDRO9q/kWlnJWLw== X-Forefront-PRVS: 0256C18696 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB2793; 23:er9O+Y5n3jQ1uM2bhnlGyYKyD4plPBjTvmptGKz6Z?= =?us-ascii?Q?uWaTDpSVKyB1K7wnZKWYyPJJ69ofxE0/PYZU4LvGAHFZIpCmzbuAhPuM2uWs?= =?us-ascii?Q?rH5QrB+UhK1WY6NqpMBGVbM+QTh34W3I6JJfmpBe52iogPBz8ZV9WNea2e8J?= =?us-ascii?Q?uC8BAaWjFGNc4F//w7Nqg1PqmfjUk5TnbM3LLGHVayrRmruGzXCAU7rG9Dod?= =?us-ascii?Q?y6Icor3nmYgocEX6Z0R+ri9sBwFDBianGJcliWPf+yamemQAX837iXEj+3B+?= =?us-ascii?Q?u4MTdlIwpMEQ5y0vpAFk5TQv3APP+gx4RCVblcJq1AnNTPoLwdFZHlKktuI6?= =?us-ascii?Q?RIgoqzjrD+ht7Ne4UuH/YjB+PyGAoaBiYJzrM1mxQf4CxVC0x8qK0HQYF1fB?= =?us-ascii?Q?D1bwmaO3i/vSSTqJftEYcw4HB+4KDRi8ZpDCoMa4PKnDL70aMz7IesCuyjbf?= =?us-ascii?Q?zRYQ4LiVMSnz6zPTC+Uq5V3A9Bix0NZeTFK86jEwS7xMXkAsePP+8Ku7bpzB?= =?us-ascii?Q?msDpELVpwrHpD9ocVCy2BdIFeR4fkXH0Lgu1RPB2hgC7AKLQ2KjdWTeoRgS2?= =?us-ascii?Q?EhS0c1i3JNlAhDN4UCl2h0aEK7Y9E6eL1L8oqnRxfSlxUwv7EgxFclk0SvJB?= =?us-ascii?Q?C9Vl3hjGUm5LXYKpjIQvC5o2nFlOYWbSnx92TO35BHUu8aQrlg5os9FMIt3M?= =?us-ascii?Q?Zt1AkLooZrUMb9GRPiR/AuNkatpue7CKSD44MsxrYeuDcw9bSUiUWff86HEU?= =?us-ascii?Q?HIi7FTtaDMLMk1/m9Ivahz32fJjGukT8ijY9fVNrille2ElCzdx9O/lsUfF8?= =?us-ascii?Q?EjK38d1IJDCTTEdvt2pg/fTPHfIH6ZZupiY45YZDoO2+cl9mmuBqKYdLvVED?= =?us-ascii?Q?SSDvH1KHX9dO4zADOZ37QbtPBg/LUfKJim8J6WzAH1Q9wdqE6+YF2zuHKQbb?= =?us-ascii?Q?j2G7p5VH0I/A5PUTd5jXahY58tGs/FdmVntc1QJowDNXlEQ/PDvf7evaWPLM?= =?us-ascii?Q?J19a2ksFFJ5BOuvzj0GX4FMc0mcEW8gf4nxHbkRNMZvMJN77/2kunFo5lBCt?= =?us-ascii?Q?N3xgjjhg0JWDI/qzpTBBjSdp0p5qNWqr/XPKDaNZHSHzkPamXT81wGK7qJQO?= =?us-ascii?Q?tXXwnlJnbMi3KsqmvkQBNgqY4o5scoMkpZ8upU2WawqwKbG7kl+ztf86V130?= =?us-ascii?Q?6S+IZympoi6O6aeB27anmYCWpHTlrPh6mxV23P6Yb03/zniYWQGAs8GuyiR2?= =?us-ascii?Q?qwEzLEj6Uz/XKwujLY=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2793; 6:aZSajlH8mt2HSLJibAjXqN16bO9hlMvLelTKcvjZP9Jg27+E9vlhNI4lWfn1qoyWZCVNcj85u0YWOZrbaMHt7Ipj8wNEE8+qOrh5EWK13kN9iqZlAxvjNmrJMp9jAYU0kt5QlBezPP65lrPpxDYnwpIsSGWwFW0iAJ/bmMfrGHIeqX9tRx3k8lJpQQ8ANvdmnsBMHpci+He309BAv4yxzwrD7Q0+qVQ5ubzrJwzwLfzwOT6DHpL/itxmzgDRV0nCyr+11hX6N5nwTpMlFeps3jX45rf5ZdbF3H+Tv953UJMODDGRUQwhC/SVUDbwX3IhOS3b+yRK6qBgqK4j8869v6fQ7ll7GA2bjHLOIzHc3AkS4UF+sQXvsU2p0xQsoxUU5A1R+azB+99/0yRyQX1eX7O12XugC9yWWE/W9Vmr2W8=; 5:aeeQRnV8wX/bp/H0H6mTEGzJvBrT+xZvjoVH4xJ5oVrVjwkTMkVCOBhcgSIlMa5y+/vXK9W5+M0Rkk9rrj6kF+B4XbWtLvHT2iaewu/yGXaI38QhTPh5GYzGO8t2una70YC1X2R/zWVf4OI1bekLqoPymScMtZdFmifgFvr2+JRMsbZg4UziiE7N+q0WNZYt; 24:tpejjUxDqgxGavbBF9YYDp+tswkktROZ3TGUiFR+1YS4jUtRNoiy02fOIuERD4MXp/c6ww04DrTVct2ByIExiGAKCNKWiww3oDLgaknS/rM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2793; 7:DLo9yo+J4nwET4C5YiZ1dr3a/PX4O8LOunW4vBvw+JXwUu00dfGBNqUMZ5KqBM6Uv3Y0lV0DplVHKLCrCAlOfIOVtqYRb/ih09TeDI0fSfdywTHbOiv1QM4VSmj8NVBWQmWG42C6HdsxUjxLwr6jWqq5BiYZtpwFPgh0u0Q/9+5aK2xOYyMIviFCbhh4MkanYz+fux34teHC5rsDdmQXqsa6zZJXHxGjOseLjW2N40+upmq70qKfmubsKA3fKr3tHr6OlbuCqX+l+tsZm6Hegbo+Y5HaXBju/5PITtiwHixwET/IsMo7DHfY+VkMPYmac+lDmXeluzLFsomxObvVHQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2017 12:42:42.0137 (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: DM5PR03MB2793 Subject: [dpdk-dev] [PATCH v2 20/22] 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: Fri, 24 Mar 2017 12:42:48 -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 f37ca0f..ec71314 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -176,6 +176,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