From patchwork Fri Mar 17 12:36:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 21858 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 EF6AFCFFE; Fri, 17 Mar 2017 13:52:34 +0100 (CET) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0069.outbound.protection.outlook.com [104.47.34.69]) by dpdk.org (Postfix) with ESMTP id C0772CF7A for ; Fri, 17 Mar 2017 13:37:57 +0100 (CET) Received: from DM5PR03CA0023.namprd03.prod.outlook.com (10.175.104.33) by SN1PR0301MB1967.namprd03.prod.outlook.com (10.163.224.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.961.17; Fri, 17 Mar 2017 12:37:55 +0000 Received: from BL2FFO11FD051.protection.gbl (2a01:111:f400:7c09::125) by DM5PR03CA0023.outlook.office365.com (2603:10b6:3:118::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.977.11 via Frontend Transport; Fri, 17 Mar 2017 12:37:55 +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 BL2FFO11FD051.mail.protection.outlook.com (10.173.161.213) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.961.10 via Frontend Transport; Fri, 17 Mar 2017 12:37:52 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v2HCalI8023358; Fri, 17 Mar 2017 05:37:49 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Fri, 17 Mar 2017 18:06:39 +0530 Message-ID: <1489754201-1027-21-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1489754201-1027-1-git-send-email-hemant.agrawal@nxp.com> References: <1489754201-1027-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131342278752537491; (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)(39450400003)(39860400002)(39380400002)(39850400002)(39410400002)(39840400002)(39400400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(4326008)(53936002)(110136004)(305945005)(356003)(38730400002)(81166006)(575784001)(36756003)(6916009)(86362001)(50986999)(76176999)(2950100002)(5660300001)(106466001)(105606002)(47776003)(33646002)(48376002)(50226002)(85426001)(6666003)(77096006)(104016004)(50466002)(8656002)(81156014)(54906002)(5003940100001)(8936002)(2351001)(2906002)(189998001)(8676002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0301MB1967; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD051; 1:RpCkqqA7kBmZrKF5ZRieEWG4OpklzL1gRotxBQ5S1Vs/eU5mfoS7ofLeRpxJbpvFY15wigzKKzE3uIOJATcI09iVcJIHaA4wf5O2oEvAPmDU+BhH7E869h2Jt3rc4nNcezFgTZaZsAROPYRcYiUUiu8OLKEi89lMwEV2C03F6gQJlZ91yxXoeXmMxZ5zrfQk5R699W6ZhW6m4EwbjrORkd2UsNngi2MdUj9WzchAOE/bzniMbehVVCN/FSO4M1bEPRAxXGAb5Uur0buhe12JOj8Dl1+7rSpXzKPZtrU91xDZYcCSeMIjmzfdQMaqf50NnZaa1FRpNVTYcmmrpimgjL7gbdAgRW1t3Bu9Nq1oLU3I3doxCJV3M3n/+19EfHScZoyvyJYEIkQcmlesXu7VQsR8NxIEAMG9D822ZPtwhPpU+UWXp81s7OHZo2pNRFqjFaqzjRx2Of/1xtyymhpJBb7Rg1YcAY6M4UYxGlpcgqQiFQf3oHRN9BRnUlxNsVae6rZ9280nQ6NCkiy4VIYN1ejIa8HoyYVUJswq7oMIp4rmwt5lpuWTTt9NyP6wmyFcVZRF9MGlsVdav/L/cr5cXh3+Yl/fv3iWP8RdOYfo2g4zKllEAfQTTMeWSz5xBsG3v7hgWlC3FHYtEOYKLwGHmg== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 808b2220-b673-40fb-aa35-08d46d326f7d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN1PR0301MB1967; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1967; 3:6fDjJtMSOnjFdUodmB+Mg4MExcpII7In976e8qkeJHTumq7OC+wUSFa57dIlFmuNOs+9/BREmBTaN6mWPKo/LoNCWs/KDPD4KtvX5vewP55+wAco1MDgDvs4yPX1KHRJfVdA1s0/BLFyZiXdXdzszKIlaSGUNQvzhln4W04Jm+VNnUH8Rz7ob/zoICFHoF9rZ5cdxbPx8Li5lQ4prJ3gU9uyo3vNuWQLbEVaDnOrzoJsCvk8JrANmPpILr1VkBAHZnIkwzyiQ99rawS6SHimK6yg2nnSBDUQ5KQjGoL0czcwxKt3FLz7R8h2yeWP3stxRF2yAqqYn2/etxwP5Yae00vBN6yD+oG/ing/3fmXdlf6RFRi+z1iBC+k+of06L1M; 25:oHjG1PdWJMq4yeIsAopmEs/FO8QAsh55joxrPBxe8I5wzcZDYGWkNA7csOld7lkHkE5WOClFs4BSH3SaTfHOoPV2fWAFthhx9QyFV5XpqB/NeA11WSNERjGjUdJHWPWBHd4HVLPfvsskjohapp6lQKYH7p2E0d2+IXkgJdLing07shAAxLStW8no4IF6ZskTmkXaEKwCGBMGM6g3nHLncAPh1X3N1mqcb6feiPuF2TnV1H8aroVZ0UukEyhFmHaKOpohwVRWCvZIJ6e0YPrc8wYHmqm0mmm+O/hMFzrcVB6AnV9htKgKCGs5s7M+DBn6A82hocBqTLEuZLSG0a666LaGU+b5bqqahDme4zmhNkOoHSI6iUNuAgT49bJjcXeFAdPqPZUWdeBKF+vwCZANqJWdu+LenvIduac9qFA/Mw0VAWbKrRzdFrnA3B1Q19NzsijfTh53X9X3UHA5U1F0Xg== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1967; 31:kVZ3kfaxTP1HGbSWBLluWZ/BXh9QMRH8gnil6X12h05r6GRYAh4p7M4LaVg8A2cHY/dmKe3emgmqjDKFN6ovgGldZDxIfoQooWtHxENXnB/M7qvKapC75gPA2rKa+VfwYkgPTuNf/N7Mz1nIipVDsEzw7iesYgxg+RZXEwWhtk546QPoheBZNw0ox45mQlBtS9FhENRJA2JuAlr99dw0ghUCyzE6n1r9W8pQQPlt7T65/N7iA4/YsYEylZzKxR4RuBgoex1bS/wx0BsRlP6isgCTDsVjCPyprXwAWUg21+U= 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)(5005006)(13017025)(13023025)(13018025)(13024025)(3002001)(10201501046)(6055026)(6096035)(20161123563025)(20161123559025)(20161123561025)(20161123556025)(20161123565025); SRVR:SN1PR0301MB1967; BCL:0; PCL:0; RULEID:(400006); SRVR:SN1PR0301MB1967; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1967; 4:bSdtvxtfp4LNmhOqxu33SgNRyjm6smaFtw/2si/1ifYApyfLY0mUXt3vU0YChLfUxFOM34/Yjvv9/Age8iOaUbnSe1AmLWye93Jeaxf5dyKnsYOz+nX/Y9EW2aGYuO+0875aw8A7FESC3ayaLyoJEOAaWI9xuTn5lHglWuXo5VvwSNvPcxSfuOReV/V+CbBrbwj0PWGux8PMEaX3A59Jv80tGtaqRV/vlQCNbMlegpfo8f/Jue66y0gzAdED2eGJBljXQrjXaEFPoOEdBkxQChCUwYJK8mSDUQ3c3MDISci2MHNkjTa2gHOe3vlWTneDuK0Ks7LvK7ZUtcQ7IC6h1Crlac06+ddz2xn8XMLzbqruAsui0f7e/WwEuzbEpxLquSWO+f1vpuTJ64NCx/9oYIQJiNVFseraPJQYgGwAAt6hNeUWcQ5HplW5XeK4Wf0TfdEpYTec0w5i8+aeHpYdQ2tl5asvF3G2ZGik6W3KNc0ECZ4iagOw8beaLqw2KBD9YZIwafqIEHMEjkzFFH+8XsxSE7kziLeIkUNOaUHDXe8uh0pa4Gxxok9hcqN5jUGReEq8IAvtuCSLqlQr2Tlf+WNke7ZiHGdJU8ORwtAa2sXw+mONhDNAPrFwdQZ2fwQEPkww1+mslEFWXFH53ulunL7q6flhtbgHYLLwq5UPaC0CrjeZRbmnrzD9o8awLScoFDoLcT4fzqMe31MXXgW2mXMOfza9gT66GrcBYoIrsxc7vJ/iKTy/ym/OYOTCZOHE0rkqh3k2FHFQQ6DYpwPrdQ== X-Forefront-PRVS: 0249EFCB0B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0301MB1967; 23:j1nFvDwjJcylqyt1RnOTKnh4EmGjmGgxfL/kz71?= oHTEZ6oSgfjxerzafsxXLxyfzj133XS+bu8Uqpou/mR41eBQ7HzfIQHabC2LBDgCloNLgm//ESEJo7C5ssrCLiCb4+jBcTIDm6XfVYaJeue/8P+wANXb9Ozqg5WZi1Z1vYj9QCpQ2RzpbZ0FTPOCPSsVbLi1xpuq5LkAP22vXfZljJixkFEXOlRxyu4O3IzzRTHcPC3aGgTEDeCVLAFJ4McDzzxmoLdg9YQb4d83O4B3wBoRml+5XKkQMDbwy5nAeoxtg5yByxHhRV3f/GOLbeAZaIFy1VZyfXvfV7qC9uMk/+l7WnX4E32KuK5vZPwbBmujgVFiCL1I0to2+hhvaXQ493jk+4y/zVOLzmVOWetPfxVTNU1YeOMeg52cazDVTXnUFanBf67eNeu/U7lgNageAPnaJdK/N3dJtD4lBSAgm6EV2FqGeJhBqG16L+GUZyvpoeT+fy0fsgc8kpiAKPeJPdC8EBMLhDPpLd5Tcp/vuAc+8mlON9eg0esV0QkAEl2TEjL5UA6rK4iW9eVqBk5oIOvkt49hB60ytAAIY2SRn/+G88taqmLRCbDov1QzMx233yzfsLDfWDFMA1TN4P9eJOyDP5JO4cNVAg0su8Yl65zkeztmIcapphZG+OPy8GdGqWKz2JTYMJuycune1F8cy+PPT1wrRsZPqprxBFbnmSuk4B82bxDHmm95K4lgS8CTXdZJcl05xdBzNIdvQG+SdMs9xwbnmNim5Nnf5cf1KxR1JwfVH1BGXtLA4AyGtBnM+bPuyoiI+5BJOzudYDf+ao7ZR2TbMvnWhE/lJfdVIlEyXb5apx0fzEUZlZag2NR8RTJk2q4xbaklXG5L5qgWYOQ8CHZU/7hygWVG6CWf/tYqS5TOdFN8btw6Nm0ldYgaQ9prcsF/1104JajwPqPjj6SV0kCm7aYKrgcFc5OleU+PIfunOKnpcs0ntVuf66GFyt93f/7vguo39ZzeKiJnPiLonqHTAayNo1Lqc3/kMuMy1bElI5E8TclpJCmvT1ck6dJu7bfyMXZFo7G/ofCnQeOmyKrKr+jdcndcnpUcYdCcDVHT0kogioLZ8UXgC3H+37MbGu4/Yq/RTZT/fLp1rQLdMgoTgly2wJyldag6fs2bqq2tMV+ldPrkv4nuWDFUTGXRDy17xqSawFqXZgSpp3/NgZOIJJR5ygWXgCh1nb3/G71VYNWO0QUmwgklbG4z76J+bcI0QzQcpxMuoAm9D X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1967; 6:8vKR/pyjgOe8G46SraOkw/aUQ6h0hJHEq4PSCyW84Zh/eyccJ3veC1g/d9rHoknfQDLLrBu6bMOLRuaXSzDCc/FUmOI2W3krQ+vVF17M9/3zcNF/DAwORZMa7eLspEpqDaZ+Vo2CvkuR+Ghn666Ja/iPKZsAVs5PCjSeLuxCRDatyIpVqIBlaFd6+EQ8Qo+idg3T9bgWD3FMypXhUjkrUYrERjLpAggf+DODrn0LM15AWR00Z4U0ZN+JI0nByRzqoGvCZNKPYq0fGslmYP2OPIJ5g0x56ZvvtOCCQAx2L+FtskDZQN8I2oMG0G2MOfVbTL3kBJbBYMXTM+AhcJOiVTGCGBiM1lNw9iAAmxUemiV/dnOz4lg3zjy08P82YIOBAFpTvxJiZzWMyG3OwNf9L59TclT2/nrLl8e0LZbKE1o=; 5:HFv9GZEAUWeb5EJHLxebxjXU2a6SHd5FlTxYW6h77J3Mf+t84HIGKmwA66ZtXfDiJtSGIUWnWlGtQbAPPrcsrjnqj2yyLvRhMMSSSPOA0uJikeoQ/nfDu9JpsKdiHYRvvcPyag8X8ofcbXC26fe584oc9b9hFoUV5yb2edMl2s0tevuyooX3oTrmbcE068u7; 24:gTmFEJHufNndN+ILltWc0GI2NHKpgIVcDGwsZtgGeUlpxuNtSmRYPETvpknf7Qh8S4nKQjc9335cs/7WtzAp1mKBR6WfUjJpYv5TkNKnaPg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1967; 7:Z3exFsypPQJg7vOtVkJdJbz5e5IJpqENYIsGrlbIJRxfSAatZCiFiG5MXGhSv53oXOdmEfSCm48U7iXQdSfclnVCBzWruTfd8VmHmV0KC/kglffxcnQtGxoAjqfZQEXRjcBfQVOfGxbLYopp6Yzn2g3tG6RwqeLRi3mT4rae3EU0PHT0KWwkHLyhUpj5UBgY/44YyVmHlyMXNM09D6VipK2M6SmZGYJiwujoqoVk6tOlvmgx7VknVugtQ8u20sKYQrqgcljMq4fvOmUBuD6I3F+q6rzm7Lu5D1dcuwVTjr2ZADmhs1PGPAVK2BRFBkY94eBmK07+FRjn71gvtVSX9w== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2017 12:37:52.6017 (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: SN1PR0301MB1967 Subject: [dpdk-dev] [PATCH v1 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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);