From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <hemant.agrawal@nxp.com>
Received: from NAM02-CY1-obe.outbound.protection.outlook.com
 (mail-cys01nam02on0041.outbound.protection.outlook.com [104.47.37.41])
 by dpdk.org (Postfix) with ESMTP id 274F5FA5A
 for <dev@dpdk.org>; Sun,  4 Dec 2016 13:44:48 +0100 (CET)
Received: from DM2PR03CA0025.namprd03.prod.outlook.com (10.141.96.24) by
 MWHPR03MB2477.namprd03.prod.outlook.com (10.169.200.147) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id
 15.1.761.9; Sun, 4 Dec 2016 12:44:47 +0000
Received: from BN1AFFO11OLC002.protection.gbl (2a01:111:f400:7c10::161) by
 DM2PR03CA0025.outlook.office365.com (2a01:111:e400:2428::24) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10 via
 Frontend Transport; Sun, 4 Dec 2016 12:44:47 +0000
Authentication-Results: spf=fail (sender IP is 192.88.168.50)
 smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)
 header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com;
 dkim=none (message not signed) header.d=none;
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
 BN1AFFO11OLC002.mail.protection.outlook.com (10.58.53.73) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.734.4
 via Frontend Transport; Sun, 4 Dec 2016 12:44:46 +0000
X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:;
 SizeAsReceived:725; Count:10
Received: from bf-netperf1.idc ([10.232.134.28])
 by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id uB4ChXbV032240;
 Sun, 4 Dec 2016 05:44:44 -0700
From: Hemant Agrawal <hemant.agrawal@nxp.com>
To: <dev@dpdk.org>
CC: <thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,
 <shreyansh.jain@nxp.com>, Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Sun, 4 Dec 2016 23:47:23 +0530
Message-ID: <1480875447-23680-29-git-send-email-hemant.agrawal@nxp.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com>
References: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com>
X-IncomingHeaderCount: 10
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131253290869897827;
 (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)(7916002)(2980300002)(1110001)(1109001)(339900001)(336004)(189002)(199003)(105606002)(106466001)(39450400002)(77096006)(2351001)(38730400001)(39400400001)(97736004)(39380400001)(39410400001)(50466002)(104016004)(8676002)(2906002)(33646002)(4326007)(5003940100001)(48376002)(305945005)(86362001)(8936002)(68736007)(50986999)(76176999)(81156014)(7846002)(8666005)(626004)(356003)(81166006)(50226002)(36756003)(92566002)(85426001)(189998001)(6666003)(6916009)(5660300001)(2950100002)(47776003)(110136003)(7059030);
 DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2477; H:tx30smr01.am.freescale.net;
 FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11OLC002;
 1:eeyPIQ9mRLNh5LIBehBh3VvfkT8//JScd9dP7kS9ahbVZEdd2R+KmSl6ItQU5el8KmElpcyRn25ybl9DtZ7t6Ny75/t3RmAMxDvjeD4Z4qgMjbjo3Majf7IBYkgAnSlzjjjA9OyZRePMSm60joE+67M4cYoaqDWYdZOPscxSysFDJvp1w0OIwq/zwwOmCiGNT7eSrlGteXM01tjQCkyF2CyMDfZ+oywwDAkWhFR+h7GtkUExtiJdTqapLLqR2fWMsCVYLznIrvnzPP/SbqLC8b0ksC5EZgfof0pm8PdRREsMfBcQ3u2GdoPAZ6NQJXgzVRdqYDDw5J6z3VuZ9PciYk0FpmiqasMelyveNWh4qqt38hUGuHTEilLeQOxtNBhjyapIPUBWXpOOa9RN/qaDhOK4SeTB7T40M7Q9XDWgrjyZXrNpeGu95QgnRXRayy+nwwKhAGml0w8ekixbCGeS0JlgREwpHwMfynWPUNIZDNAEe9RMUcT2xediwGdGEd3KgOmQTaueSw8FThF9uB8R/y0tOCM7jmhh6QdxUzZBJqsDmtxKMc6iBkPTf01E5aXndzmi1vmEsWenl9R7HMRgCiEIaw1cVwdn4qnKJcIq66/hh5ceDKIVCa1E5g2g7sPxNScVP02KIcIZmDbtLry7sKg1hznqaKRJYqKCobwwWb/UYPALFkXf1ZBhsMG/izqBEZ4fIWbCCTTM/HRt4pIjWyOj3QoJZ+Y2s2F3scLD9cxpxJAhjlN72dUonF3bJr5JU1z3CFlfV9uiyJakrz4XVA==
MIME-Version: 1.0
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: c9805e18-a3dc-4cad-5904-08d41c43545b
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:MWHPR03MB2477;
X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2477;
 3:KhCFgoYaf+RUf001wvKtnKqZlb2gx9+LKb51kC4bMVZYF81PKnZJjkH46NTYP+d3970HEz7hD7XkGOV3KDPN42H6vZcW4P5dOmeHlCPhcJPtfiiITIb3g1TkBmVlEfXYQnOwAOD9DUG5h9PP53d+rHbQORfqj8MoCiM2j6+ixuld46MyQ/7NVthTkhYNWOx8ezGKAXqMGEuV6WF+NzFDM6/xxp6vH4Bc4JH7ZO98it2W7Atkkrb8QkZFP9NxvhWTjC6Z+hmKDWy2Jnj7iBtPpIfoli9TrKeo8KjgDF6KW+pWO5dJk5I8HyLiB9MYcGlKohSbNa39gsTexwVckKnjcxqJS1bYCbJBLq/EzAOp7T/k2ckTKimLSd/Be//fSh8e
X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2477;
 25:ifhZTu5IA2fLxH/MNG8M6qDCMYgWqoMQ9Wa83+fy1mgtv2av8lKRooDyNKRLYGC75tNLFpKQB46+uUhkaVt8jM4FxVExhs1Od/1WpdYPssmqIXa+dMKMBp/AV/ETlJ1jYVYyatzY+rVZdBErnHRzFiSmpgo5SI4OfPXj/8DI5OI46lFreA4AtBCb20Ca7uEKN+IvjnYdFI6TtNP8MNgWQdXZY6idsKhAdx8PJfm41qzGmqsLJ5NH7Dvsu+rvkmT2XivYuIUtit1wFTM4zhqP1Hm7izN2G0mmS0+aPrJLfX+qt3NzuqBOe8XfuR363Vjfqa35lxUG2hkKRtloOAXx9/bYqGUFGWIPWcdgfj3/we1k2F7hBL0wcORZdkwvZ8/Io6LpS+69MeiZtW+C8GynHbyr62tWxtN1lbSf+cwg4byUaiwb+7jXiWu5edUAWqAIGHkFBr75S7Bcli//QftGkvR5wxSHFOfFYbt/bWs7LAVWevKzVDadHuqNrTGpRRThAtoyI8Z0PantfF/0DxKk3KWqp5RpXa6jnrXQZp+GfMSkR8qMbojeLUPIwt6VHlH5E9bl6RXLE039sgxRopV1mSpf0FEk9GyhGon9aiHunrfv7IjpwIpTlPdMcDPPSOLjukQ7SL1UhIf9XvKpM5LX2wN2R1kk4G00bwHsSDzqdtBLINW2HS1CfPViDL9YQCau5i9dfO7zXceStqU+GIPrF4wznRRjIgI5t9dxb83ZbiVieyQ7TsI8lumnkeHhXH985L/2L1jEyQTyNWWklYMeIw==
X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2477;
 31:wUg6W8Jc5m+b3OHVx8ELFFLItUo7c2mTxVJK5Y7dMjnuAJTxBXsbLtD11CsB+92omXr/qEoLDBLWPTarAgZOjXmiqgxVpWmin+M1ue+Lo/3244y4xPVvbOwS8Xh9OeeUz2k3cxhIFtUxd0gcCNKRyk2P+Ctlxc83Shr4uajbNTC2waYa3v52epGLDjnfCP3kdDSmZlwCRzTAgf3XGnqoRyMUJnaeHxIE2LJHbtb9nzUTapvA4wgZOme0eHkACRiINvR21NG71rSuU2m+lXLRz+sU24QxhbOc96b82h4gULg=
X-Microsoft-Antispam-PRVS: <MWHPR03MB24777C90F680FC4B38DD258C89800@MWHPR03MB2477.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(185117386973197);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6095060)(601004)(2401047)(13023025)(13015025)(13017025)(13024025)(13018025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123565025)(20161123563025)(20161123556025)(20161123559025)(20161123561025);
 SRVR:MWHPR03MB2477; BCL:0; PCL:0; RULEID:(400006); SRVR:MWHPR03MB2477; 
X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2477;
 4:qVOW8zFH4jBgbjDTPpw+sdwRVH8mEkZqU8N642mI2XBqxpKpJA5cNb/dHsmuo0j9VM8yH/Mq+9+SQ2VkyfqvGO+dEc9u+ZWN71oZ4jFKBPBu1wilIxuJ3+sZh6+KyxGB3kjMSZjUwta5iwV2yEgggXPfVu7C4/ztcFzkEwc27JFfbZCFBK7C12AxST/CRc2nqs68/muoizDE9+7wZB/lMt7YQfryVwJc/Pnmm5WqQN1sz4Yd8jres17nfHtoIi/NLBC5kohOzXyJNi53dQOtiQ7MZ4BsqRWRnMh+gIJYPFX4oQfaUvm5xjiAmmtUU4aKPCcFPVdBNTlhISdj3vV69LCokBaiocYf3td9Iy9XN4D5bVsOgRH94KH+YjGsmeiaUgfeoLbKV1DXmOCsvnQOngBNGZhv194N4tzfUdueH7peNMyM3IsZg3zp5utuOHAniLYsuDBiVcu4S4QmpvhPDrmh5qvtlGgnx9BqBIoiDPxwNmNH1IBrIydGe/27mpchZ7beVSoqxRKDkEfutzDNdoHG75+p1lVHY4gjUhCrqHF10/h/rIiFgXP0r2uWcuw5yYAPBg0Oc/PCPgxgab8v9mNn7IbinHr0HFhLZaXok4/keK4/QmLADv7JWppQG8N1SlSjKCi8bnYQUkVl5Ph7B1WNH2cZRzttzhYDeOV5iTy6cH3Y1gSI150eG4Ng+g08qGoxo18Xsp+xqp5+vqQin6avVZOdR7oUaIC04ksnJeF5WVFdI03ji/qU63Bzhtv5
X-Forefront-PRVS: 014617085B
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR03MB2477;
 23:PPavgSTkIGY7pdJBTX1KsefbpIdrbkX8phNkuF6se?=
 =?us-ascii?Q?n0+s0nfyoR/BnMwhE/wauauLDJftUCFeIMLpx7EbV60QATCziElC8aFTc9Nk?=
 =?us-ascii?Q?rTvV2oNi8rWraEsbRXdr7UJFyiKv8tNl+e6lareRc/ScL7cVjbcrCrl4l1YW?=
 =?us-ascii?Q?tZEURLXHOMdII57UY5AOHZSWrUWJ6UTISjjosEw/jinZKebxfJuMrt2qCMqt?=
 =?us-ascii?Q?vPcAg1ISoTaMkjNengLUoRRf8QEAisj0c1du+YQNWdTyMqZXVGiy8BzOoaJZ?=
 =?us-ascii?Q?pUJt0olgEJeJ0r1H+JtgRpnHJxDmtXfVih6KNW14FzWtNMbW+i3jwYk93stq?=
 =?us-ascii?Q?T77Yd/6rh7GumyWlRAb739XqCZ3rPmNA94JQfcq2xlg8Y3KG+ByIB/1wdHBX?=
 =?us-ascii?Q?tLLoTklIiUbAxjKJxw/naaePcJm+Axg93uQClbKiPWxoS73JWYrE6RD0I27D?=
 =?us-ascii?Q?mqUYkkM3C/LxbMTjXbK1FvUJJH26D6HGpUthndM070d8PyBWE3JWzm9XxL/Z?=
 =?us-ascii?Q?BuvZnu/xjqx0uYiQEDCEPMU73Dt//2zQAdo9y2cOSYOZMer3PxhjwjH9+4SS?=
 =?us-ascii?Q?+dG90AJzilcx54M239IpnQtxWM6A0Uj7QYRQcA9UapVntS2YakW+e/czcLTK?=
 =?us-ascii?Q?VBVa9rVJXVrxWk2PaK/JnJ7/9UyW4bhZEq89ov/9X0XDoiXRUF0mpA2x4Crh?=
 =?us-ascii?Q?5/vLL+PDF30xxY4r6gn0tLdQ+ErnITvSDeyp+f6htxTEKoH4JnTqnOcImQit?=
 =?us-ascii?Q?cV9+XJvBZbFAV1ycHzcFw33G5Mk0Pm8uSHPGyi6xYzjAPFxjiq52wQ/5SUKC?=
 =?us-ascii?Q?PmZ6TSs1W9TeDv36qSR1oxxAZw9L6ahddx9PbqsdZ8MNXPtR87YpLIhJBqYf?=
 =?us-ascii?Q?9Qoqz+ao8KRMuuNkKWDl7zC927F7lNDxzMsyt/c7P7uT6VxG0+1xIeGzMo/I?=
 =?us-ascii?Q?1SwXRT6+vVoWGza1jcdb/warxsjfy/TyYZygK0mZ/RLdLo5+RSGvRYMw3VsL?=
 =?us-ascii?Q?4+9vDOMdcFpE4SJjtmvbQXjdH2wkHO6KxktceZNx3aLAdVZ9e0R4EWXPgpHe?=
 =?us-ascii?Q?dx8TS0ELrv+5KQWvsuVsIaCvQSCuvmFhwWlGWvnyiNmmPz30DAkvoJdcZsi8?=
 =?us-ascii?Q?DEDPo5iht6gTeuSFwmJc4IKYEF0y140Tavj9Hx3W8B03yXlFMAB3VDUeTnbV?=
 =?us-ascii?Q?KLWLj2Xutqa3TXQ/AzehtZjuU/3ZZHB6KjqBY2EvRk834CuC7NXe5lEVQ=3D?=
 =?us-ascii?Q?=3D?=
X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2477;
 6:YBNBXezgKW0KTDtfDfidZvWhMB8oA9Pd3eP/0pSe3tBjZjulZqQzU/lrufgzfBIVNLtzjXHjm+3aIKZjwJM5PZSeQdO+jJcK0/r8/hSSRvJp++E8BvTvjOWjca16O+ETWLsIwQLPGnlF4ljKBiWIJWS3x6HRoZZc2dyo/ulDhE3YSdvX62L+xkrcZuS6IFFMWAgZzZNKnzowTdukDde3rlA8C3uShJxR4qmM9tGaRcaCXysD/9dViI6mha0T0Y9gu8cOW4UrRkwNr41uq9P90XnlqCXY2TGdrVO5SYar+Un32KoZo7s0KaIHwirEQg0PknI/C9WOAoWKAsYEg+qBeSTFhIJSafyyYMPFGpkg0plGXyqlvAW57fVREyL2dfc0gnDz0z87NA1m4CRPnosvC6pOKew2EOisZVhUWiBrMUc9qy7QaVbJHw4NXuCTbuKA;
 5:HE919qGrDVoRp369zsV0xe9+Y67WHSHG81TpnbTYl3tLVbxWF1I8ZFv0gcR8Bsq6dv7rVhDL6L1MDvsiufn3eY0OHyArhfwUU4TOFjnakT6DRqSrxGuLzNp2ZEo5vNWHEo8RDF/igykuCdvl91SkV5Yl1qEvwcSgPehFTFfqpQJRueE6TFae7oc8FJUYKXxw;
 24:S66LrB7ngAyextFt/FhW7gEZCs3x0MNInKDA3Br9qLOKZz4kIuPdIAlAELCx/6Kx1++gGKwGKW96IJ8trbkIzRnvdJUgfMGrGxkq6PJNuvw=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2477;
 7:J5zHvffKYRDjJit6kiwaTiTts1bUFuBa4fzK3B4CkifBSXs8lQ6G+SAMWYajNUJWCzrtPWx3MRp4rLY378bD2b1Wm8V2voVTJBJih1yBUjlrlsgzxIGCOsy6Kys08DkyFc/BFCu6rS/DYA+a4YV/ub4a0IS1gGvYvQfRIEacSr505maGY9J0AKIBUB06vw2ZNBzLqx5mIqWZQqZufSUpF4C+QGWiZti4N05UZPuEpkqMadQC0J+rvKtGdkWa6hXDaK5laVwf/EtNB74sbLO6AbfKCfCy7RlQOaK/0ozgF9dRBTxGCM3Iecgu/tD5iLHIcwvYG2DzAF4xVXgQ6B6Ubrq9/bgHcRGSssXvoti8GhBnA6AWo2QLrhAniJlYFCthdqMrxPyqFgqK2+DsSanf2MYPYmN17xXMen8AMjjAI9vx94XHPVDVA63E/sDlG1/4m2lUOWa729xL4BX4xEHjRQ==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Dec 2016 12:44:46.7869 (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: MWHPR03MB2477
Subject: [dpdk-dev] [PATCH 28/32] net/dpaa2: add support for physical
	address usages
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Sun, 04 Dec 2016 12:44:50 -0000

DPAA2 HW accelerators with ARM SMMU can be configured
to use virtual or physical address from users space.
Adding support for Physical address (default).

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 config/defconfig_arm64-dpaa2-linuxapp-gcc |  1 +
 drivers/net/dpaa2/Makefile                |  1 +
 drivers/net/dpaa2/base/dpaa2_hw_dpbp.c    |  1 +
 drivers/net/dpaa2/base/dpaa2_hw_pvt.h     | 59 +++++++++++++++++++++++++++++++
 4 files changed, 62 insertions(+)

diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc b/config/defconfig_arm64-dpaa2-linuxapp-gcc
index bcb6e88..7dc6d2d 100644
--- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
+++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
@@ -50,5 +50,6 @@ CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="dpaa2"
 # Compile software PMD backed by NXP DPAA2 files
 #
 CONFIG_RTE_LIBRTE_DPAA2_PMD=y
+CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
 CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
 CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile
index 9e693cd..a8c3c04 100644
--- a/drivers/net/dpaa2/Makefile
+++ b/drivers/net/dpaa2/Makefile
@@ -42,6 +42,7 @@ else
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 endif
+CFLAGS +=-Wno-unused-function
 
 CFLAGS += -I$(RTE_SDK)/drivers/net/dpaa2
 CFLAGS += -I$(RTE_SDK)/drivers/common/dpaa2/mc
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpbp.c b/drivers/net/dpaa2/base/dpaa2_hw_dpbp.c
index 2b30036..5b7d593 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpbp.c
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpbp.c
@@ -322,6 +322,7 @@ int hw_mbuf_alloc_bulk(struct rte_mempool *pool,
 			 * i.e. first buffer is valid,
 			 * remaining 6 buffers may be null
 			 */
+			DPAA2_MODIFY_IOVA_TO_VADDR(bufs[i], uint64_t);
 			obj_table[n] = (struct rte_mbuf *)(bufs[i] - mbuf_size);
 			rte_mbuf_refcnt_set((struct rte_mbuf *)obj_table[n], 0);
 			PMD_TX_LOG(DEBUG, "Acquired %p address %p from BMAN",
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_pvt.h b/drivers/net/dpaa2/base/dpaa2_hw_pvt.h
index d116fcd..a1afa23 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_pvt.h
+++ b/drivers/net/dpaa2/base/dpaa2_hw_pvt.h
@@ -169,8 +169,67 @@ struct qbman_fle {
  */
 #define DPAA2_EQ_RESP_ALWAYS		1
 
+#ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA
+/* 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)
+{
+	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 */
 #endif
-- 
1.9.1