From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <hemant.agrawal@nxp.com>
Received: from NAM02-BL2-obe.outbound.protection.outlook.com
 (mail-bl2nam02on0074.outbound.protection.outlook.com [104.47.38.74])
 by dpdk.org (Postfix) with ESMTP id A3B20FA3E
 for <dev@dpdk.org>; Mon, 19 Dec 2016 16:22:31 +0100 (CET)
Received: from BN6PR03CA0021.namprd03.prod.outlook.com (10.168.230.159) by
 BN1PR0301MB0737.namprd03.prod.outlook.com (10.160.78.144) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id
 15.1.789.14; Mon, 19 Dec 2016 15:22:30 +0000
Received: from BY2FFO11FD035.protection.gbl (2a01:111:f400:7c0c::192) by
 BN6PR03CA0021.outlook.office365.com (2603:10b6:404:23::31) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14 via
 Frontend Transport; Mon, 19 Dec 2016 15:22:30 +0000
Authentication-Results: spf=fail (sender IP is 192.88.158.2)
 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.158.2 as permitted sender) receiver=protection.outlook.com;
 client-ip=192.88.158.2; helo=az84smr01.freescale.net;
Received: from az84smr01.freescale.net (192.88.158.2) by
 BY2FFO11FD035.mail.protection.outlook.com (10.1.14.220) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.789.10
 via Frontend Transport; Mon, 19 Dec 2016 15:22:26 +0000
Received: from bf-netperf1.idc ([10.232.134.28])
 by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uBJFKMhw029110;
 Mon, 19 Dec 2016 08:22:22 -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>, <john.mcnamara@intel.com>,
 <ferruh.yigit@intel.com>, <jerin.jacob@caviumnetworks.com>, Hemant Agrawal
 <hemant.agrawal@nxp.com>
Date: Tue, 20 Dec 2016 02:24:12 +0530
Message-ID: <1482180853-18823-34-git-send-email-hemant.agrawal@nxp.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1482180853-18823-1-git-send-email-hemant.agrawal@nxp.com>
References: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com>
 <1482180853-18823-1-git-send-email-hemant.agrawal@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131266345494111938;
 (91ab9b29-cfa4-454e-5278-08d120cd25b8); ()
X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(6009001)(336005)(7916002)(39410400002)(39860400002)(39380400002)(39840400002)(39850400002)(39400400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(33646002)(36756003)(2906002)(77096006)(104016004)(68736007)(4326007)(85426001)(38730400001)(47776003)(356003)(8666005)(189998001)(81166006)(50466002)(8676002)(97736004)(6666003)(2950100002)(81156014)(76176999)(50986999)(305945005)(110136003)(48376002)(50226002)(5003940100001)(86362001)(5660300001)(2351001)(626004)(6916009)(92566002)(69596002)(105606002)(8936002)(106466001)(7059030);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0301MB0737; H:az84smr01.freescale.net;
 FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD035;
 1:G70reMqe36BO0ICybLpj1w6llKtaWwEgQFVlTeFJs/1Yl5kf0zBdwgV+Mw73T/r0EYT4ISW35e910DESBlzwkq9SkUc26GKcpOE6bl3kYoVeecINNbtjPZu4POLrqoKMDL2SmhtYC5vdQDRVeuC/xffjgJG+H4W2oZ5lKq2z96gm4vPMxIcIFWOjEA0aK/Io0Rl1yWKVbIZeBg4Ry0Gm3aMMLrBAY3ZKQmTe/VALWVQNPaLvBBpeGOC6PK/EnC6E3xMjkwJVP3GZhMAYwyP6zqLIW4w0sKzow/KHxyx4y+w2Q/SE30qHqwcKLV58K+BFFvnW4w3/8SBwp/BZsj6lPCJt0w2JdhkN1WXXjxAbd2NbD0bryww9311yfEdw+TMmiXuV020DyLPTn88NucukpVa+7fZCIoSOX5SVFcDD8hOvvNz2sdFc0BZ6e3Oo6omEMQAGaQ0GpR1k5SPALDLa1I1XBWujborUxnETjavcrMnSEmkhWLgfDrS+8DmihYaoGoOhM1mrhHel5TPTMQGRi+AlBdxa1o5K+a1iN8ft+LX4pNwEbPhg1ttgjVABjO6HSltDasL0aDCs199cloLVTeLsu7A8u9hhuPgtRrcpqZOaAUJPuPu4kUVGT485WKx1k9PSaMAabs3sbbe4aXmc4a0+ZGeilgIkTTBsH5knq2ZNoPlupiF7wcx1f30YRhfIsAteLOw4uoaXxc7clpGbm/0/7Y8o9HEwoQTFGtICIVkbO6YRznYxfC4igPRBMX1+tTX3brJyvseqUBEEb0kxAw==
MIME-Version: 1.0
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 1969ec50-cf76-4d9f-8561-08d42822d898
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001);
 SRVR:BN1PR0301MB0737; 
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 3:AH4yXrsyKvNCh0bN2Cp9Gw5qkPBgB6x2BuHZUYcEGBEhoG0EvIglCJ/gtHS38IxfCljEiJ8hsboj20uJaBJmfRYwPdfc4TW3u3cDRLCahbZjj+GNuUsUdKVGqpT07YtbFCFyi724UljDPnB0+XzAh1al8IZvt+y2ewAvP3mrhw9QBQZ99kbpwzAGJJjbEsvFAXE2McWj2ibA9iaxXQQ1u++iEyjlo65tj+H95FsZ42T2cOYYbqTHGRj0KdRzW+2iogH8F/bkXnUGWEPmM3tRAomba2s1lPCsxrz34rF1jar5e5Dkr2V/hJNVeE6V7hZC5TR4A/TH+1SKDEnG9Hf4t1Yzz25BqeoWA+r9De/JAPsOtuSFXcpLl+Sjop/bE13F
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 25:xrj5lRDm4dJ5I7pv6BZOyf6xXFB5TtRJpkYBKccf7C8E+4pjGNVNhpwZG6MbxyNIBHLLZ7JBB8R0jz3unVPhLDX+bOrYduGwtkM+DgqghWb9ZsLrvNtUIqwPZEWcOSJsy497mfXGzSm/3nMv+gXhs+arosLglq6GX71Ks+m+ReYkHLIbEJwCyfaych2835OQz9nmYMicG5eCUOREOAjnJ6GbF9wGb4PZNwNFSv8eHnclXqO6cjXAUYjNh2ZntK9AaADnREj/yANgMIX7Xmp4ia0JU3eyTCeFxXAGjtW77LzL/HKxwroli4VQkRe4Z/Hatrf3eeiKoEHZFf+gRTRoiIQH1+vN6ItdeGMUF3z8Hq80lJw8AUud+oh9Rhm6NcncngmcAqmlI3jZjZCtFiOF/WR9+LbtvIQnJzpqY3n0TbTTPc0qgyphXihnFo8i7FEq1CiZVwbeknbj8t829Knd+V7hgXK9WWAXNFcI8b0dU595Me9Xafi/Z+vS/8TayVOyjzxCobdg3qG3ZuIVhehYoDHRzBxuEKYb3iYqexnzDy8yduqnY9xo7o0o8pkRJu4r7G3Wi8POIrYzcMsndtshh5Tzo24cw1hPELATq/GVdBSa8QsOJ441x2qmHbEFSIJzWZP0fPh/tJSwgPPcbrmGQ5OifD2UkoOrRPQhZHjxd1txH6k94o4okBESHJfUd0S/H8y6Qa1azQfiNzNXL1AkTysw+PTW+7+fexuOETGhACmC4NfZVyqvVUTdLz0BoEA2+kgLcpSUzSjSEQFqKDkNVA==
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 31:IGjMSY2ZKDhXYXpcsibcxnuXd0Eo8z+0hs0FjfpK55qnFc8pzINkwmP1saprxzn5SWPQerFZ+U26ClTdNlc2UB9aCAcyo/WQOGZYobuWYN/MFsI9TVUkFm79SwalLePdNNI5dgyHq+WZG5ZG7pURQeuLOTj55oCGuCgVXVTKM2kN+d/CS7Q3QnE27L4yhyEtuQnZhJqTaKgEmHUYaMv3ip0XE4mbm7/55Nar0SyQ1v+6nsLVBkz/JXMFlSqu7hbd/4cb2ax1r6iL+Dl6rGJYxA==
X-Microsoft-Antispam-PRVS: <BN1PR0301MB07375E7F6DBCED01AD3CED9589910@BN1PR0301MB0737.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)(8121501046)(13018025)(13015025)(5005006)(13024025)(13023025)(13017025)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123559025)(20161123565025)(20161123556025)(20161123563025);
 SRVR:BN1PR0301MB0737; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR0301MB0737; 
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 4:lJcdd77D5jBiLKAWfixQWQxw1RX1cZG8iIL3L3o6OSYw8vSiNYIvRDSonrGA4E94uou0BLah+gHUMyaAK5tpKRZMHIGNOK/9De8zvayT0pHJZu57DSKWX/qsbSmBbldrGk4rnC/GgPvO6B5IdhGeZX1pJuuZEky1mFjcYyT86Xx3DCZPWUUBU0d73+QcJo/3vakKZZU+3X2r4eMtwLa9T2zHKXd5ePM/2gA3LWSnLkJon3I9VHK4kuADgEgFEzb2HfjWBLSME3f2udpeaKdzKmYBH/zc1UrLO9UlFnEbdVeLHJGRRW6QO20G7XzW/KL79kIvFV8GWvWvSgUR1FsIvWKqEj5wEB9vjzGHrtbRXZ7HB7BNwZ05dsZDQLo6SBHGtqh45lDlqy4E86WfhD0J2jygfO2FMxk6E+h4c6jn+JzcsnTPzV4o1KqjuEz43tEECWEaFnnpqap42awVt1WtMoY+kglWWGTt8oCh/F9rM8+4CX84uPIF5Gk+q38C0El/pUkE7cLx9GjAaWCwKTCBtkxaG7lp2v/w+0EyptobPh1F4b/43qmlFimtkkvpSejZ8gIUf5D1ARF42R37FiTaRBUDRt+4EOMQcovPVYho33DxFunsjqCcN1U1lieN0O4J09YTQLGW5ry8d5AhaDMkSOvPZxZqG6sPec3gQhWaYvNekuQQVceYdnhb7kPUgeakgNY2DpSGdfWMMguvomeCuCjlNNj0TPahlRJ/BCWS6k7kfpqa1EybEgHvV7eV4TwW
X-Forefront-PRVS: 01613DFDC8
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0737;
 23:qcNDXTllQ5IgMxQjkjAOgq9tkQckRsFdqX1MtGf?=
 =?us-ascii?Q?+nN0WiawFOp511B315w1812MIO17D+gwkl1Iz/p23LaY/O1M9LdJXcyzP/9+?=
 =?us-ascii?Q?qgli44dKVk3FmZHLmGyNhTyk1ttJafOtYMczzvRN90pIrpY2Tgfc93t55024?=
 =?us-ascii?Q?q38x1dOafHVA4/pMGr3zWSvIEAngSYshtSp1yNOS7hmEM4jDqFp0/Liwyn/j?=
 =?us-ascii?Q?70WTBE4nU/JV6D0MFCpfyD8OfgYe8kMRAOo/iLjP5trG3nRJTEnQat/l8POb?=
 =?us-ascii?Q?gluk3+jvQhVbIK+NH5aaGWkay6upWOyeANIiSLqnCLdxBFpy6Zl/UxXLoyJ0?=
 =?us-ascii?Q?LhZE0gjAwcG89NOSrKJZl7gErVqd1I3Twe6oAy15EXCZGEecxQ1yvWodQIJH?=
 =?us-ascii?Q?zUQK0BMirDgSAFiD49pqN2ioRtYr4cuSp3G0XJdyp+v1e0XpK4oDxFNSKC5M?=
 =?us-ascii?Q?YHw4YCJZRLfo5INlsZxKePYBfZx0yv9VnGtiYU8XYX/f5ssDSVIDI9VR/cdl?=
 =?us-ascii?Q?SFJBiWLx+lpa46j4ZJcSfZ/upvxHDf7lIbW6ltcPXVXHMr/16rFP0eoeZL69?=
 =?us-ascii?Q?+W8c0i2Qo9YiX33Rbvtqzif6QPrJ7hg+oHjdD+A2ndrXrHSYjtRuonUfhCB0?=
 =?us-ascii?Q?doz2sVvg7eCC8W7v2rv9KuufTpv9PdTl0AsTIR8+2Hnj6+2HyqGjwtYOBQnE?=
 =?us-ascii?Q?Ij9C269P93t5K6Om8pKkxC1Sk0mFYwM1gTZpVpL7m1/e22C3Hxng97YXWP78?=
 =?us-ascii?Q?BYAjqXRNMJ1ClavLNzQwNdtCKD+SesmFspbvDRrOHYRHH4q4rWZhXktPtOM5?=
 =?us-ascii?Q?VmlP0Q3bVI617eMBFGqklTrWax9+S+1l0wiNCwPint3F4oka6PEqU/x2Qq92?=
 =?us-ascii?Q?degCR9S6Q+H30r3KhnlryZyDMmeXxS5EIc2FmUXpEA4cTPYp8Mczcr8hxKER?=
 =?us-ascii?Q?inbYhasel3VM/y+kG86kEphJa0Y9jmN6k5ock3/fk0gNG13WrMz4csq0BPLu?=
 =?us-ascii?Q?RZhj6c6KVv2hF7ii4slhqOcPwjhDr0it1Cu9RSjGcH2NjXfKFnnqko/vwIei?=
 =?us-ascii?Q?1fHlCnv9arH4IKPfetlRkjss2SEOpnUH8BoAQKu7xRxsmwO9VFu+JFUNeQ7Q?=
 =?us-ascii?Q?+yKb+HKncisdfDOG2I6ZfVRj/cg6oG3rFR9WkEIC0nvIqxW3gRTDeef7FdU/?=
 =?us-ascii?Q?lJ6vTmWNdX2bAQw0XE7qYf70DtVY4yg4dR05sHsUng7NKLMe7JaItoxnPrkZ?=
 =?us-ascii?Q?Z2WdYlqYjymElvEKiR/ItJsDVW4/ZJ3SXqGZKHOmJrROw5FnuE8kKfPpEd20?=
 =?us-ascii?Q?kC/mvR2q9KhtOc+C+72Ma5GQ=3D?=
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 6:KKc0quaJoD9A0PvpEwHQHP4BhpwvfnPD4uPLPmdbsHM5Rios6daoCdGlA/u+j215nsMwHc96ToVhVtuNU/EcPrWDAnBLKQ5Wmiin9E/Ox/4SiBX8HK6hR0oOy7OVKWc18bYZUVqryjSWxSQfNcnjcB665vbWbmu+0nGEkzJDqrjdN7t+mV+9+csHO7rruxJL8qbHFv536kWxIuyW1F70cu4YY256eFr/gqxf4aXtLU3CRXIsJwQ7UNEF+00xkMVjw7r1oj24F0iVee1zhGB25IynVgqxRLnn7bNMkeq2N7UBC6rlKD6DMowJr7McNKQvg+qsZxIL8zuBhjVDWvKeAHhRWjcs15n5eO+aJ4U3V2XQ85MEMckdzOEhnUs+qlcZR5H/ou3KvrJ1V7VTn06C+rx7IARjIH/BxEyoj/H1uL/C0OfzTtxxbFPPACRtntxO;
 5:Ac0Wz0Sq/5ZXzX6zmoJXKaKgRjDuXhmi5GhP1kxrWM5V5PvsOHIk/YCzhxqsXF2QhnYnVrlWW5MnpibfHjZRME9A6esmx3Gmbu5L8TI6yGId/ibgw9KzuKD5qpr3HjBBzwW6Y96KpYmmpyFxXHqCffc8xE81bOKYvYtt2Ai6yDTyc4LmNrs02pVUAzDG5NOF;
 24:QDYUD0LtWS+D1+p4ogLC5Q/zt/vd0GNBHWBgOXONV7t/vOKO0KA7AzpAbX3Ef9KD0zHnc7ycodsgxsHytUDVCVGHUZsbr1uMNfjtlTePX3g=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 7:FMwnJBeNTDi+DIfx5tlkVdnbehjookZ5yQQbNJx2DkN5vnS4WTq4CTTLuoza+7x4oWUnVXkxMI/7Y7tLqjKkcpax63uP/IWwtGyBo24pPVKwVieU7YQt4Q3qqwVDu+wWPHiYD39e0DqA2q36zVMgh5OOCQxdUGLnRW1TlAx4Tj42nHq0wFrTV8nz87VLm94kUMJqJycIJEDP7nUANGH5A6xAjX7nMNv+mQx0jhuqQp32PG3gK+Ags0rI+o0yCqrkS9kAYH/QPwewgTuG5BSEUTtH0sRDl+QLovOHbLOWb2wRDtRJlcOC2WdFzzx1fDA9hrkksoOnfBFZiBEKRfxK3WE3fgagUp/g08tizTuGjimBTzWGQXyTftRScq6+gxPj7I7UtnMnCZCXL3P6cLi3M76jjk2r4nJiqtgxBb8eTphPwwrRx9vh6T6XxKMSGYJG2Vl2ghGIoyEL2pzN1XHqPg==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2016 15:22:26.4471 (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.158.2];
 Helo=[az84smr01.freescale.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR0301MB0737
Subject: [dpdk-dev] [PATCHv2 33/34] bus/fslmc: add support for dmamap to ARM
	SMMU
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: Mon, 19 Dec 2016 15:22:32 -0000

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/bus/fslmc/fslmc_vfio.c   | 97 ++++++++++++++++++++++++++++++++++++++++
 drivers/bus/fslmc/fslmc_vfio.h   |  1 +
 drivers/net/dpaa2/dpaa2_ethdev.c |  2 +
 3 files changed, 100 insertions(+)

diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c
index 8d6a3eb..44cf3d1 100644
--- a/drivers/bus/fslmc/fslmc_vfio.c
+++ b/drivers/bus/fslmc/fslmc_vfio.c
@@ -77,8 +77,10 @@
 static struct fslmc_vfio_group vfio_groups[VFIO_MAX_GRP];
 static struct fslmc_vfio_container vfio_containers[VFIO_MAX_CONTAINERS];
 static int container_device_fd;
+static uint32_t *msi_intr_vaddr;
 void *(*mcp_ptr_list);
 static uint32_t mcp_id;
+static int is_dma_done;
 
 static int vfio_connect_container(struct fslmc_vfio_group *vfio_group)
 {
@@ -148,6 +150,35 @@ static int vfio_connect_container(struct fslmc_vfio_group *vfio_group)
 	return 0;
 }
 
+static int vfio_map_irq_region(struct fslmc_vfio_group *group)
+{
+	int ret;
+	unsigned long *vaddr = NULL;
+	struct vfio_iommu_type1_dma_map map = {
+		.argsz = sizeof(map),
+		.flags = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE,
+		.vaddr = 0x6030000,
+		.iova = 0x6030000,
+		.size = 0x1000,
+	};
+
+	vaddr = (unsigned long *)mmap(NULL, 0x1000, PROT_WRITE |
+		PROT_READ, MAP_SHARED, container_device_fd, 0x6030000);
+	if (vaddr == MAP_FAILED) {
+		FSLMC_VFIO_LOG(ERR, "Unable to map region (errno = %d)", errno);
+		return -errno;
+	}
+
+	msi_intr_vaddr = (uint32_t *)((char *)(vaddr) + 64);
+	map.vaddr = (unsigned long)vaddr;
+	ret = ioctl(group->container->fd, VFIO_IOMMU_MAP_DMA, &map);
+	if (ret == 0)
+		return 0;
+
+	FSLMC_VFIO_LOG(ERR, "VFIO_IOMMU_MAP_DMA fails (errno = %d)", errno);
+	return -errno;
+}
+
 int vfio_dmamap_mem_region(uint64_t vaddr,
 			   uint64_t iova,
 			   uint64_t size)
@@ -170,6 +201,72 @@ int vfio_dmamap_mem_region(uint64_t vaddr,
 	}
 	return 0;
 }
+
+int fslmc_vfio_dmamap(void)
+{
+	int ret;
+	struct fslmc_vfio_group *group;
+	struct vfio_iommu_type1_dma_map dma_map = {
+		.argsz = sizeof(struct vfio_iommu_type1_dma_map),
+		.flags = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE,
+	};
+
+	int i;
+	const struct rte_memseg *memseg;
+
+	if (is_dma_done)
+		return 0;
+	is_dma_done = 1;
+
+	for (i = 0; i < RTE_MAX_MEMSEG; i++) {
+		memseg = rte_eal_get_physmem_layout();
+		if (memseg == NULL) {
+			FSLMC_VFIO_LOG(ERR, "Cannot get physical layout.");
+			return -ENODEV;
+		}
+
+		if (memseg[i].addr == NULL && memseg[i].len == 0)
+			break;
+
+		dma_map.size = memseg[i].len;
+		dma_map.vaddr = memseg[i].addr_64;
+#ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA
+		dma_map.iova = memseg[i].phys_addr;
+#else
+		dma_map.iova = dma_map.vaddr;
+#endif
+
+		/* SET DMA MAP for IOMMU */
+		group = &vfio_groups[0];
+
+		if (!group->container) {
+			FSLMC_VFIO_LOG(ERR, "Container is not connected ");
+			return -1;
+		}
+
+		FSLMC_VFIO_LOG(DEBUG, "-->Initial SHM Virtual ADDR %llX",
+			     dma_map.vaddr);
+		FSLMC_VFIO_LOG(DEBUG, "-----> DMA size 0x%llX\n", dma_map.size);
+		ret = ioctl(group->container->fd, VFIO_IOMMU_MAP_DMA,
+			    &dma_map);
+		if (ret) {
+			FSLMC_VFIO_LOG(ERR, "VFIO_IOMMU_MAP_DMA API"
+				       "(errno = %d)", errno);
+			return ret;
+		}
+		FSLMC_VFIO_LOG(DEBUG, "-----> dma_map.vaddr = 0x%llX",
+			     dma_map.vaddr);
+	}
+
+	/* TODO - This is a W.A. as VFIO currently does not add the mapping of
+	 * the interrupt region to SMMU. This should be removed once the
+	 * support is added in the Kernel.
+	 */
+	vfio_map_irq_region(group);
+
+	return 0;
+}
+
 static int64_t vfio_map_mcp_obj(struct fslmc_vfio_group *group, char *mcp_obj)
 {
 	int64_t v_addr = (int64_t)MAP_FAILED;
diff --git a/drivers/bus/fslmc/fslmc_vfio.h b/drivers/bus/fslmc/fslmc_vfio.h
index c5a42fe..83a7c68 100644
--- a/drivers/bus/fslmc/fslmc_vfio.h
+++ b/drivers/bus/fslmc/fslmc_vfio.h
@@ -70,5 +70,6 @@ int vfio_dmamap_mem_region(
 
 int fslmc_vfio_setup_group(void);
 int fslmc_vfio_process_group(struct rte_bus *bus);
+int fslmc_vfio_dmamap(void);
 
 #endif /* _FSLMC_VFIO_H_ */
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index d1456d5..3a90e7c 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -911,6 +911,8 @@ void dpaa2_dev_stats_reset(struct rte_eth_dev *dev)
 
 	eth_dev->rx_pkt_burst = dpaa2_dev_rx;
 	eth_dev->tx_pkt_burst = dpaa2_dev_tx;
+	fslmc_vfio_dmamap();
+
 	return 0;
 }
 
-- 
1.9.1