From patchwork Sun Dec 4 18:17:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 17661 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 5035DFADF; Sun, 4 Dec 2016 13:45:41 +0100 (CET) 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 ; 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 To: CC: , , , Hemant Agrawal 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 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: 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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