From patchwork Fri Jan 20 21:04:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 9529453 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B0BBE6020B for ; Fri, 20 Jan 2017 21:20:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9D5E4286D3 for ; Fri, 20 Jan 2017 21:20:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 920C4286D5; Fri, 20 Jan 2017 21:20:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CF8D6286D3 for ; Fri, 20 Jan 2017 21:20:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751284AbdATVUT (ORCPT ); Fri, 20 Jan 2017 16:20:19 -0500 Received: from mail-bl2nam02on0085.outbound.protection.outlook.com ([104.47.38.85]:59108 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751267AbdATVUF (ORCPT ); Fri, 20 Jan 2017 16:20:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sandiskcorp.onmicrosoft.com; s=selector1-sandisk-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=lQrjRsa2WbQlZ8HfHu/pH/NdNuNGZgtkneQGSWkEShU=; b=SDfDjJJ4zbp88FqetO9tVk4BBnkdGR3kiby0TKZO5h6Rom4QxZR3EVc/6X9JgSrn1uJA05OreFc1sG9DaUhIHxN3ufi+IPEwllDnsew4A8uKcb82Z7wPf6GN3SBnm1cQqdO0L4iBR4fDVNtCygwjJTyAKCiqgmsacFrijSrNcks= Received: from MWHPR02CA0009.namprd02.prod.outlook.com (10.168.209.147) by BY2PR02MB1412.namprd02.prod.outlook.com (10.162.80.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Fri, 20 Jan 2017 21:04:51 +0000 Received: from BY2FFO11FD019.protection.gbl (2a01:111:f400:7c0c::188) by MWHPR02CA0009.outlook.office365.com (2603:10b6:300:4b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13 via Frontend Transport; Fri, 20 Jan 2017 21:04:50 +0000 Authentication-Results: spf=pass (sender IP is 63.163.107.225) smtp.mailfrom=sandisk.com; mellanox.com; dkim=none (message not signed) header.d=none;mellanox.com; dmarc=bestguesspass action=none header.from=sandisk.com; mellanox.com; dkim=none (message not signed) header.d=none; Received-SPF: Pass (protection.outlook.com: domain of sandisk.com designates 63.163.107.225 as permitted sender) receiver=protection.outlook.com; client-ip=63.163.107.225; helo=milsmgep14.sandisk.com; Received: from milsmgep14.sandisk.com (63.163.107.225) by BY2FFO11FD019.mail.protection.outlook.com (10.1.14.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.8 via Frontend Transport; Fri, 20 Jan 2017 21:04:50 +0000 Received: from MILHUBIP04.sdcorp.global.sandisk.com (Unknown_Domain [10.201.67.162]) (using TLS with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id D1.D8.01420.44972885; Fri, 20 Jan 2017 12:55:32 -0800 (PST) Received: from milsmgip11.sandisk.com (10.177.8.100) by MILHUBIP04.sdcorp.global.sandisk.com (10.177.9.97) with Microsoft SMTP Server id 14.3.319.2; Fri, 20 Jan 2017 13:04:41 -0800 X-AuditID: 0ac94371-7ee9b9800001058c-62-58827944c353 Received: from exp-402881.sdcorp.global.sandisk.com ( [10.177.8.100]) by (Symantec Messaging Gateway) with SMTP id 73.43.16817.96B72885; Fri, 20 Jan 2017 13:04:41 -0800 (PST) From: Bart Van Assche To: Doug Ledford CC: , Bart Van Assche , Andrew Boyer , "Dennis Dalessandro" , Jonathan Toppins , Alex Estrin , Leon Romanovsky Subject: [PATCH v3 37/37] IB/rxe, IB/rdmavt: Use dma_virt_ops instead of duplicating it Date: Fri, 20 Jan 2017 13:04:37 -0800 Message-ID: <20170120210437.26389-38-bart.vanassche@sandisk.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170120210437.26389-1-bart.vanassche@sandisk.com> References: <20170120210437.26389-1-bart.vanassche@sandisk.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrDLMWRmVeSWpSXmKPExsXCddJ5ka5LZVOEwalTchYXnn5nsrjWvo/V 4vne12wWL89/YLVo2vSS2eJk3z9mi2eHelkc2D0mzZzB7LF4z0smj2fTDzN5vN93lc3j8ya5 ANYoLpuU1JzMstQifbsEroyuK42sBS8eMlY8mbmVuYFxzlbGLkZODgkBE4nlxycB2VwcQgJL mSTub7zDBuHsYJRYdes2XNXE6Q+ZIBKbGSU2LTrMDpJgEzCS+PZ+JguILSKgJrHp1SKwOLPA YiaJnhdpILawQLjE7nlnwGpYBFQlfrd8Barh4OAVcJBo3BgAMV9eYlfbRVYQmxMo/OlyH9he IQF7ieOXn7KD7JUQWMYq8fZwPxtIgldAUOLkzCcsELskJA6+eMEM0aAucXLJfKYJjEKzkJTN QlK2gJFpFaNYbmZOcW56aoGhiV5xYl5KZnG2XnJ+7iZGSBwU7mB8fdv7EKMAB6MSD69CQFOE EGtiWXFl7iFGCQ5mJRHe18AoEuJNSaysSi3Kjy8qzUktPsQozcGiJM57MfpjmJBAemJJanZq akFqEUyWiYNTqoGRO2f1Mcuce11yV7ZmLJr6Ns7tt7vsNY/Ko3l97nn37s7e/miL7cLQE/eb D2+IvDmj6+S2z6ySF/UWyEr/PjrLvS9JfVas5PGmioevVk9Kcv8jc7bCs+TI83ZlWeZFsSxT n8r8D3l74ubundwhnm6SdkkB5gIeM9mnrBR6EOOYuYrJvvTfjQW/lFiKMxINtZiLihMB/pQL OH8CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrLJMWRmVeSWpSXmKPExsXCtZEjRTezuinC4PURRYsLT78zWVxr38dq cfBnG6PF872v2Sxenv/AatG06SWzxcm+f8wWzw71sjhweEyaOYPZY/Gel0wez6YfZvJ4v+8q m8e0NeeZPD5vkgtgi+KySUnNySxLLdK3S+DK6LrSyFrw4iFjxZOZW5kbGOdsZexi5OSQEDCR mDj9IVMXIxeHkMBGRol9k6cxgyTYBIwkvr2fyQJiiwioSWx6tYgdpIhZYCmTRMu2z2BFwgLh ErvnnQErYhFQlfjd8pUdxOYVcJBY27+dGWKDvMSutousIDYnUPzT5T6wzUIC9hLHLz9ln8DI vYCRYRWjWG5mTnFuemaBoaFecWJeSmZxtl5yfu4mRnAAcUbuYHw60fwQIxMHp1QDY2dcWZqM hrSG8Yaf+pn/hMpXuPgvEa6J7Lgfsk+p8SvPLvtVp+69dSkxPTL5m65qR8/tKY+t9l6fp/3H /pPkmkD2iv03dGQZDl5JTchsd2X9sylScu73tYcrKw34dWrnOPK5Majc5tnpElEnwFAcvDLT qTcroEbRSP1Gl0JJKgePuJb89YtKLMUZiYZazEXFiQA7VwwV0AEAAA== MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:63.163.107.225; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39860400002)(39410400002)(39840400002)(39450400003)(39850400002)(2980300002)(438002)(199003)(189002)(36756003)(6666003)(48376002)(50986999)(106466001)(86362001)(575784001)(5003940100001)(38730400001)(2950100002)(189998001)(33646002)(97736004)(626004)(76176999)(6916009)(50226002)(47776003)(305945005)(8936002)(69596002)(8666007)(110136003)(81156014)(8676002)(356003)(2270400002)(81166006)(53936002)(92566002)(1076002)(5660300001)(68736007)(50466002)(4326007)(2906002)(54906002)(77096006)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR02MB1412; H:milsmgep14.sandisk.com; FPR:; SPF:Pass; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD019; 1:Cv8W10msYGnSzKLsxsmW2EZnqUUwZBEdUXYDl4G2nn6qB7/gc8Grlqoeu503exOnZ0uTY/OMZIt5CpR2aCGTXNDvxdjb4PUwjERh3RuJMhrT8ntRD7ljk25kKOzDzKffUt1NQZE+2ks8x9I8CPpa4oSXTElpf4HJ+9nnVJBfJ9i8iBtiRLVJdTeyzSJf8nZU5iCzRrhN89R/TvoDb5Ra//Q34rCplELIV2BN4SozCxPwflnN4mqoScYOLG8UI6B09frwxZ5/+v3q2IFM9+KrvoTEyERQa6L6SeP+0p4iqyI1bnJkW2tZoZSPTBBc3vIvzYIWCnBISmuvycdG7S224oGr+QS8h6wOxjdj+06qbNUOvVrqIckk7HP5Ku1jSNfS6ZHKsyQAP56MkdGy6WJi7ydi2BOS4XZGtEi5fdmCaSaUJvTUHJZgwFa+X6eFgUBXM0VaMKPqLxDOk+QagP8QN3SXi8pNL+StOw3oN8v+9vIt9A/Yb59103llUhMllqy2gX3BwNKBmcOoFEOCaIQR6xU6XOEet61DQdjXJzmY7Ac= X-MS-Office365-Filtering-Correlation-Id: f8e1feac-b093-4f50-93cf-08d44177f979 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002); SRVR:BY2PR02MB1412; X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1412; 3:3sa6bThcYPnHbe0CW5/ZLgsxVjzU/hBqm8akyTsfHOWvQCXjeCm1CtD7fFo45taOJe2lSRK0B2axpMO86umiNys6MrJb5EICqf8gdC5kVDy3gx/Zyy/e3W/syd3FL47OR+fAFs6RvDGw7iZQZpEZUiW4WU3qri8MS878sPYhRdK/DQ7i6GSa29lQ4XuQXqpm4pEHZbNOlTgxfdXrGBhHEhXmhwvwSCRvwlc4gStQxduESYMIqx5QX6Se+xqWR3NTUvG1n0iBNTMmC7SHWztCupDgskukP7tZUF37f7KPLPt7CmJWq6gmhN4k0eMkiOKl680gX0RQWS7H69KmvAB/WKcYx0nXMsbyEg8tYB+2lvXVaxztl/68/5s7ZWBSUliu+XEjkf+C8O4f41fgx/3ARA==; 25:mMvSmrgRpB95vEqr41TZoocjG3XVBhGPFZklbRLVq/Y7o5AgeBkmBJWgizwcM6yX6jtCvZryDs/VS+vzW+MJ8ZVMGW+8KDmzSPlrPio7v72CmkgMwz9QV8NPbe7BBtjgu4fRYlMqyUjIGB1N+z4psE+6bj3qofcxb8OwuZZkonNIltRfjo4xycXjP3EII0/9fz3j/k91N7TzUCt8qMFPCjknZ0hz9ktqRFnzuxSo/2ociYkGyvqn706W1foxgpXVwH+1lAXz8GWSFuWHDV/LIl1s52Sbr5rFn9Br4yA7OEk0UQnLi81GAI2+WY9cQ+JpsTfFbSqTxkjN26wW6rk2iDvYWycUWAjYB4coFN81VXu6KpZavHVze8S1YyfkxHLHmuMokshrozEslYKKuKIixkuekREZ0BEjRdNtybTTen76G4nuRPFjZGFBLN0ZKem4D4d6v24NpJRNI4mE+Ydhow== X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1412; 31:oDHBEJq1LYLLHpUAJB+xWD6SpGdN44kGFH3ZMdZZa2PiqsweQr4IXeve+K27EWQJerei2jCkHJLLrmZ0Jabht6mlF0wsVVETfQltNglmhOP75a7fWS68y8yFo8beRSSTmxp3ec5vL8yfdMYp1r8UfBhymjh3iU7j6FmIzK9iyPf6SY8ebeaKjdIUkpjrjETnVzaEslizyR+YP9IZ9gXqoMbKQUwicIV+hVZhYujunvCsPmAZBAZ+uU4td+SQMy0oklLRkAGfnYEFGcrf5UbYueVKNVXtAL08fjApOp2BbwM=; 20:KCQ3Gza8rV7qltgtOwU8ASjvU1MQd28LSW2LfIYBzzZRwmN3Z8Tqy5vQEyT101dcCKnCKxyQEO/Iw9CphQG7AZR86UVfBVumwK/E9AK0YkeFT3DyvtXLMIWa7hDsSIasalMuOC0uMTc2JHdh+QwonXgggbPfPwRB9/e5esSoF4HR4iXnsd30bdF2eDWvEYPSVj75KjBF5x9TtwD+pFdfwmkEQe2zbXL7R6p9BY1AFehulitOZqGPKT6buXPw/Wpgepe6lLAYJbfxVupcMTdyNZoNODJW75xOmxkls9ze5I1RyrTPY4Jp5kkNwV1QZmBPaKmp6f13uTrdVn9JJ6i/AZefxU0fqsof6WBtDdHdTeUBS2XMiTnRg6RQVDr2A1Z2Pu9o68xmCZg1Ngas4fIZBFBqwqsRhzg95hrHHvhRNTy533hSEvZwPGB8v5SHH9LlRFkg9BwQntKe8s4QnQUD8VeHNQsHYQLQj3focgjH7MoM9//ufT6E6TlueVK0WCUR X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(56004941905204)(42932892334569)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(13016025)(13018025)(10201501046)(3002001)(6055026)(6041248)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(6072148); SRVR:BY2PR02MB1412; BCL:0; PCL:0; RULEID:; SRVR:BY2PR02MB1412; X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1412; 4:EacYUn6l2/EI/n6AgUn2+xKXHzvpzztCSZL5t661bh/rdNa13s7LiZWZTowE9/R46Kr3EiaVvOugOjhJaSPQ/QO5iQ5nTZgSncdsyFP8qwdlf6HNQUErRNSORGg5kUU257qFWgM3/EfBDRRTT2kvEMZA5m+Oj+Hmyhn09tVjpYlUJngROmFa8zPU1Su9P29/t5tdenHaWi4c5y5xsMAEk390QdEXdZpuNvHc5Ogpwm+w5B/dEkTohQRua+5k4oLWXiDF7JTk+7cFBiYCgI3/06VsZpZtZPv+ym3XwQVUJ96mUIEz7dTqL9BVaUW4L4cFwcP0/q/m3QjcPxixtmPjNS7WQu6CnJzDBFYfNV0botYjH2xcZudEfLADkN4aEC83w0Gm5o11gkX/IW9oe7iwtUxT1Smv/cmKsuitAnlF6vZQoIeFkijFHkFTKOjhOLhBgZsE1AbiQo30Ixj+WQUTCmAePQpeO4RqP1qf9inJDVK14J0Yr58c1/OizZgpmeS7dXKQKf8ywR1l88pcNhz3m1XPMruLXAuRKdCb/921JfC4QzRu3gV1fZ6o8w78ulGokHPgK6iQVV1Yg54e2FC/gVHVU2mYtcs2rWhT2kEwVnQF4ZUbijNh835SdhP3HdAJ8SfJrubdotJw9C9A1fOAXDEtqyVj2tFzsu5AIAo/5A8GEMhO96iinrzwdWBY98cl9J9tSHMEv/fAFwsQ4YhFzuyN7VgIzM1BFslp/2Ms3YA= X-Forefront-PRVS: 01930B2BA8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR02MB1412; 23:W6o+Pmsh+07j1N31oRMamgeLy1tB6g0OmNkrWUGOM?= =?us-ascii?Q?rhlrHpI3lf4yryIpBeEahO5pxDQpZaegvb52KQvq2gkJMD/F7BpGaU1EsaKg?= =?us-ascii?Q?UMD6BmMF+gLhx93sMLX7+HjS0CXHhVZsjrfL4AMLkmgEL3Myd9EjIzZHVaxA?= =?us-ascii?Q?wDLhmTj74BtITOknFOmbu4uFDBT+ct1K2WSZ+3gvfyiWjvG/zfF+QwRNsHv7?= =?us-ascii?Q?X5HZ4XsIB+PkRymagcO53cQLVFiF2CzH5KAOFZ9hW+TxOZ2XFKpZndjaHUz1?= =?us-ascii?Q?e3lhcUk2TE47twtvDHNWi4PxVVNvByww9UHmUUC+qDsG4VbTntE1v37bl8LL?= =?us-ascii?Q?ImFN5cJsudsZ/9AzAIBmwhfndcbOZWzXiV/H5UtFQ4xZK8hhNmPJLEqsF5jG?= =?us-ascii?Q?LeMm+XjH1WIAk2xY603OpAmJXYceOBHgcOBBd+mp3PGAdqtejLMdYmqpL+GL?= =?us-ascii?Q?Qku6+BEBt4zwAVgR1Upuzt+9skhINi8r6W61sPvVm33JMbn1ShaEH7ld9ykU?= =?us-ascii?Q?q+qGqTGaIb7YZoprsUmLcB1UkdpfDweLzc8L0SAcW3UcOHfRce59BlrPhI4/?= =?us-ascii?Q?fp5fT/fnoeAV3SW31tkLF4R/3ZIkMzp/ZrI+cZQcq/8kpqnFOLiIFp0zO+xW?= =?us-ascii?Q?G4SKh7sz3Ot0knhb5qV+CRUGHb5iBvLv6KmGkBLE+DvSSnNySt21VgSI0i1Y?= =?us-ascii?Q?+CV+SwhI4MsFoPicul06UHibsQVQTMUCp0lq2TWHh971Sld2HTuj/J8fTfSb?= =?us-ascii?Q?J4BHkZRfaLkADXzgwXDW0dc3+HEst/vVCLqrvvPTFyYc3f6ciOdN6q5xsqwA?= =?us-ascii?Q?Wc6JfDG6n8GQ9OXyk4Xn6hZ+oj8arm4fEXcv6BNjZYOTdeHV+nzwiIzfSDDu?= =?us-ascii?Q?O8BVZmviGlJ6UM1NqzmOAdUvW0VFOnl5tzyemvhLZJDuvW00evOn73rwxI1v?= =?us-ascii?Q?kUK09LVft6QnZcjRsMdVrCCSKgZFJ6jbLYBfAHnQfoIhPwP+Gd8kKRuskLPd?= =?us-ascii?Q?om2TCj8S+aAakGYI6Fgozm5Is2B40t673pq5cNm1awV9tmqXHvYoTdOfF6m/?= =?us-ascii?Q?HlprpjHT7Prc2J0cBEDh0lM7LPWPLzC7frZnZA2SUuBdcQ2uYsEDPTaTGZbS?= =?us-ascii?Q?g4KPi+h0OV1VyGHK9h1h37sQc9DyFvCymsgJFbemWE8+wSf1DP4q61HKZs9h?= =?us-ascii?Q?i+rO9OR9ssqW0bc87ttBVuUWvS/cf6VF9K89Stym1Z7nhIYW0g0EPZXOg=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1412; 6:Son0EHsrlcttc2UfHzJJ5gSLq0anctNB6iJETuI538CeNBLFG6/x8oOmN9KsYY+H8kptmRUASNr9N2qn4fBa0w8ynbDGsXLQ9BVpYk0FiQvjuHA/zwXX9K8GwUr45TdPo/S/zhPs3/vJxCq0rm7Yh1Z6OHkuaqFdO+meIdQVmjfI94BORiplZ/CdpS8agURE1mwC8223+O1mKGMldaeRGzo9Y49EhrTCuponDH5DJymTzqe/ccvxha9Sn0Loo9DbNROEzQb1Zqt6K3ioITGEa+kKWRJ1XkbdyRzKjg7avBKXV6ybxf+AcYQ7ZysnGTf+WPxIcK6FJaSnGI35X2VucRdX1bW3jAlzMvHGkFVtHuz+OUMAJ8gqeXrqupGd6hTULZtEG8v0iHKaAM1BV/ht5nLAcls8STrkbYO44Kr/ghF8l5Y2it7+VnkzdUTMyUFaSZrBon3M1TAfJOwVYtk81g==; 5:beEsxyL1jpt7ILOsNVcdIFiOmVjipK0NRH2wlFsC3x3MFwHssnbSzJTNa3urqimJcOUmxlRRfhbpHzDaNhljpYLPyejQl4Y20CF9hoPy2dkhMRKKqJiv8OAAxmEeMBTHHi28IY3URw4LLTM9aCb69Q==; 24:iljXWWLWapkiJThommQlCtN93ScsfxUSQk9yj4FjQfziWYF3DB9QPYNiYruWbXiuYSqC8HrJj9JI6l9kQnqQFfRurq8EnymBB50SJybydvw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1412; 7:tlyF3U6d/BWrwZklIMiHv9nDk3Cf0z2GkRzzM2zV0My1dwAdTNEYHohHGs3e2ZmIycwY87uWtC/GYlkVKZbFCIkXiBZuwhmx/ZGZbrl4bknQWR+mTqaiPc/miRoGG64C8PT9rV3cNAO8i8Pi80F34/wrC56uiUTAAYIIMrywSKHflt2QfxJNSZddA9q1hDca8VWGbkaOc3Eahm1EnhPrUHhz0n1g9odReu0Jjdk7Q7YiJt15l/rUjEExHgZ2c1gEih3sbHxPFj1MKFaZm8LaMIXQjRAcI3xeEMdlmGphKe4Nz9B2qCTzy7DtV8QtbD/dL3BUiQ/6I/8qHCjMQr7+Nvre3RnV84OZVM3PgUKfe4eGkQ6HsfETQOFaRb2zRwWWH0o/JinOoaUCc5/cW7Q9SYQNAhOD1Dwa03i+ilCyjFJxBcKvA+FqnuuKJjC6OpOHwq6VN3M4wObRuy2MuuneFQ== X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2017 21:04:50.7554 (UTC) X-MS-Exchange-CrossTenant-Id: fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d; Ip=[63.163.107.225]; Helo=[milsmgep14.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR02MB1412 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Make the rxe and rdmavt drivers use dma_virt_ops. Update the comments that refer to the source files removed by this patch. Remove struct ib_dma_mapping_ops. Remove ib_device.dma_ops. Signed-off-by: Bart Van Assche Cc: Andrew Boyer Cc: Dennis Dalessandro Cc: Jonathan Toppins Cc: Alex Estrin Cc: Leon Romanovsky Reviewed-by: Leon Romanovsky Reviewed-By: Andrew Boyer --- drivers/infiniband/sw/rdmavt/Kconfig | 1 + drivers/infiniband/sw/rdmavt/Makefile | 2 +- drivers/infiniband/sw/rdmavt/dma.c | 198 ---------------------------------- drivers/infiniband/sw/rdmavt/dma.h | 53 --------- drivers/infiniband/sw/rdmavt/mr.c | 8 +- drivers/infiniband/sw/rdmavt/vt.c | 4 +- drivers/infiniband/sw/rdmavt/vt.h | 1 - drivers/infiniband/sw/rxe/Kconfig | 1 + drivers/infiniband/sw/rxe/Makefile | 1 - drivers/infiniband/sw/rxe/rxe_dma.c | 183 ------------------------------- drivers/infiniband/sw/rxe/rxe_loc.h | 2 - drivers/infiniband/sw/rxe/rxe_verbs.c | 3 +- include/rdma/ib_verbs.h | 103 ++---------------- 13 files changed, 18 insertions(+), 542 deletions(-) delete mode 100644 drivers/infiniband/sw/rdmavt/dma.c delete mode 100644 drivers/infiniband/sw/rdmavt/dma.h delete mode 100644 drivers/infiniband/sw/rxe/rxe_dma.c diff --git a/drivers/infiniband/sw/rdmavt/Kconfig b/drivers/infiniband/sw/rdmavt/Kconfig index 1da8d01a6855..fdd001ce13d8 100644 --- a/drivers/infiniband/sw/rdmavt/Kconfig +++ b/drivers/infiniband/sw/rdmavt/Kconfig @@ -1,5 +1,6 @@ config INFINIBAND_RDMAVT tristate "RDMA verbs transport library" depends on 64BIT + select DMA_VIRT_OPS ---help--- This is a common software verbs provider for RDMA networks. diff --git a/drivers/infiniband/sw/rdmavt/Makefile b/drivers/infiniband/sw/rdmavt/Makefile index ccaa7992ac97..2a821d2fb569 100644 --- a/drivers/infiniband/sw/rdmavt/Makefile +++ b/drivers/infiniband/sw/rdmavt/Makefile @@ -7,7 +7,7 @@ # obj-$(CONFIG_INFINIBAND_RDMAVT) += rdmavt.o -rdmavt-y := vt.o ah.o cq.o dma.o mad.o mcast.o mmap.o mr.o pd.o qp.o srq.o \ +rdmavt-y := vt.o ah.o cq.o mad.o mcast.o mmap.o mr.o pd.o qp.o srq.o \ trace.o CFLAGS_trace.o = -I$(src) diff --git a/drivers/infiniband/sw/rdmavt/dma.c b/drivers/infiniband/sw/rdmavt/dma.c deleted file mode 100644 index f2cefb0d9180..000000000000 --- a/drivers/infiniband/sw/rdmavt/dma.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright(c) 2016 Intel Corporation. - * - * This file is provided under a dual BSD/GPLv2 license. When using or - * redistributing this file, you may do so under either license. - * - * GPL LICENSE SUMMARY - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * BSD LICENSE - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ -#include -#include -#include - -#include "dma.h" - -#define BAD_DMA_ADDRESS ((u64)0) - -/* - * The following functions implement driver specific replacements - * for the ib_dma_*() functions. - * - * These functions return kernel virtual addresses instead of - * device bus addresses since the driver uses the CPU to copy - * data instead of using hardware DMA. - */ - -static int rvt_mapping_error(struct ib_device *dev, u64 dma_addr) -{ - return dma_addr == BAD_DMA_ADDRESS; -} - -static u64 rvt_dma_map_single(struct ib_device *dev, void *cpu_addr, - size_t size, enum dma_data_direction direction) -{ - if (WARN_ON(!valid_dma_direction(direction))) - return BAD_DMA_ADDRESS; - - return (u64)cpu_addr; -} - -static void rvt_dma_unmap_single(struct ib_device *dev, u64 addr, size_t size, - enum dma_data_direction direction) -{ - /* This is a stub, nothing to be done here */ -} - -static u64 rvt_dma_map_page(struct ib_device *dev, struct page *page, - unsigned long offset, size_t size, - enum dma_data_direction direction) -{ - u64 addr; - - if (WARN_ON(!valid_dma_direction(direction))) - return BAD_DMA_ADDRESS; - - addr = (u64)page_address(page); - if (addr) - addr += offset; - - return addr; -} - -static void rvt_dma_unmap_page(struct ib_device *dev, u64 addr, size_t size, - enum dma_data_direction direction) -{ - /* This is a stub, nothing to be done here */ -} - -static int rvt_map_sg(struct ib_device *dev, struct scatterlist *sgl, - int nents, enum dma_data_direction direction) -{ - struct scatterlist *sg; - u64 addr; - int i; - int ret = nents; - - if (WARN_ON(!valid_dma_direction(direction))) - return 0; - - for_each_sg(sgl, sg, nents, i) { - addr = (u64)page_address(sg_page(sg)); - if (!addr) { - ret = 0; - break; - } - sg->dma_address = addr + sg->offset; -#ifdef CONFIG_NEED_SG_DMA_LENGTH - sg->dma_length = sg->length; -#endif - } - return ret; -} - -static void rvt_unmap_sg(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction) -{ - /* This is a stub, nothing to be done here */ -} - -static int rvt_map_sg_attrs(struct ib_device *dev, struct scatterlist *sgl, - int nents, enum dma_data_direction direction, - unsigned long attrs) -{ - return rvt_map_sg(dev, sgl, nents, direction); -} - -static void rvt_unmap_sg_attrs(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction, - unsigned long attrs) -{ - return rvt_unmap_sg(dev, sg, nents, direction); -} - -static void rvt_sync_single_for_cpu(struct ib_device *dev, u64 addr, - size_t size, enum dma_data_direction dir) -{ -} - -static void rvt_sync_single_for_device(struct ib_device *dev, u64 addr, - size_t size, - enum dma_data_direction dir) -{ -} - -static void *rvt_dma_alloc_coherent(struct ib_device *dev, size_t size, - u64 *dma_handle, gfp_t flag) -{ - struct page *p; - void *addr = NULL; - - p = alloc_pages(flag, get_order(size)); - if (p) - addr = page_address(p); - if (dma_handle) - *dma_handle = (u64)addr; - return addr; -} - -static void rvt_dma_free_coherent(struct ib_device *dev, size_t size, - void *cpu_addr, u64 dma_handle) -{ - free_pages((unsigned long)cpu_addr, get_order(size)); -} - -struct ib_dma_mapping_ops rvt_default_dma_mapping_ops = { - .mapping_error = rvt_mapping_error, - .map_single = rvt_dma_map_single, - .unmap_single = rvt_dma_unmap_single, - .map_page = rvt_dma_map_page, - .unmap_page = rvt_dma_unmap_page, - .map_sg = rvt_map_sg, - .unmap_sg = rvt_unmap_sg, - .map_sg_attrs = rvt_map_sg_attrs, - .unmap_sg_attrs = rvt_unmap_sg_attrs, - .sync_single_for_cpu = rvt_sync_single_for_cpu, - .sync_single_for_device = rvt_sync_single_for_device, - .alloc_coherent = rvt_dma_alloc_coherent, - .free_coherent = rvt_dma_free_coherent -}; diff --git a/drivers/infiniband/sw/rdmavt/dma.h b/drivers/infiniband/sw/rdmavt/dma.h deleted file mode 100644 index 979f07e09195..000000000000 --- a/drivers/infiniband/sw/rdmavt/dma.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef DEF_RDMAVTDMA_H -#define DEF_RDMAVTDMA_H - -/* - * Copyright(c) 2016 Intel Corporation. - * - * This file is provided under a dual BSD/GPLv2 license. When using or - * redistributing this file, you may do so under either license. - * - * GPL LICENSE SUMMARY - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * BSD LICENSE - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -extern struct ib_dma_mapping_ops rvt_default_dma_mapping_ops; - -#endif /* DEF_RDMAVTDMA_H */ diff --git a/drivers/infiniband/sw/rdmavt/mr.c b/drivers/infiniband/sw/rdmavt/mr.c index 52fd15276ee6..14d0ac6efd08 100644 --- a/drivers/infiniband/sw/rdmavt/mr.c +++ b/drivers/infiniband/sw/rdmavt/mr.c @@ -305,8 +305,8 @@ static void __rvt_free_mr(struct rvt_mr *mr) * @acc: access flags * * Return: the memory region on success, otherwise returns an errno. - * Note that all DMA addresses should be created via the - * struct ib_dma_mapping_ops functions (see dma.c). + * Note that all DMA addresses should be created via the functions in + * struct dma_virt_ops. */ struct ib_mr *rvt_get_dma_mr(struct ib_pd *pd, int acc) { @@ -782,7 +782,7 @@ int rvt_lkey_ok(struct rvt_lkey_table *rkt, struct rvt_pd *pd, /* * We use LKEY == zero for kernel virtual addresses - * (see rvt_get_dma_mr and dma.c). + * (see rvt_get_dma_mr() and dma_virt_ops). */ rcu_read_lock(); if (sge->lkey == 0) { @@ -880,7 +880,7 @@ int rvt_rkey_ok(struct rvt_qp *qp, struct rvt_sge *sge, /* * We use RKEY == zero for kernel virtual addresses - * (see rvt_get_dma_mr and dma.c). + * (see rvt_get_dma_mr() and dma_virt_ops). */ rcu_read_lock(); if (rkey == 0) { diff --git a/drivers/infiniband/sw/rdmavt/vt.c b/drivers/infiniband/sw/rdmavt/vt.c index d430c2f7cec4..19666e52b3b1 100644 --- a/drivers/infiniband/sw/rdmavt/vt.c +++ b/drivers/infiniband/sw/rdmavt/vt.c @@ -47,6 +47,7 @@ #include #include +#include #include "vt.h" #include "trace.h" @@ -777,8 +778,7 @@ int rvt_register_device(struct rvt_dev_info *rdi) } /* DMA Operations */ - rdi->ibdev.dma_ops = - rdi->ibdev.dma_ops ? : &rvt_default_dma_mapping_ops; + rdi->ibdev.dev.dma_ops = rdi->ibdev.dev.dma_ops ? : &dma_virt_ops; /* Protection Domain */ spin_lock_init(&rdi->n_pds_lock); diff --git a/drivers/infiniband/sw/rdmavt/vt.h b/drivers/infiniband/sw/rdmavt/vt.h index 6b01eaa4461b..f363505312be 100644 --- a/drivers/infiniband/sw/rdmavt/vt.h +++ b/drivers/infiniband/sw/rdmavt/vt.h @@ -50,7 +50,6 @@ #include #include -#include "dma.h" #include "pd.h" #include "qp.h" #include "ah.h" diff --git a/drivers/infiniband/sw/rxe/Kconfig b/drivers/infiniband/sw/rxe/Kconfig index 1e4e628fe7b0..7d1ac27ed251 100644 --- a/drivers/infiniband/sw/rxe/Kconfig +++ b/drivers/infiniband/sw/rxe/Kconfig @@ -2,6 +2,7 @@ config RDMA_RXE tristate "Software RDMA over Ethernet (RoCE) driver" depends on INET && PCI && INFINIBAND depends on NET_UDP_TUNNEL + select DMA_VIRT_OPS ---help--- This driver implements the InfiniBand RDMA transport over the Linux network stack. It enables a system with a diff --git a/drivers/infiniband/sw/rxe/Makefile b/drivers/infiniband/sw/rxe/Makefile index 3b3fb9d1c470..ec35ff022a42 100644 --- a/drivers/infiniband/sw/rxe/Makefile +++ b/drivers/infiniband/sw/rxe/Makefile @@ -14,7 +14,6 @@ rdma_rxe-y := \ rxe_qp.o \ rxe_cq.o \ rxe_mr.o \ - rxe_dma.o \ rxe_opcode.o \ rxe_mmap.o \ rxe_icrc.o \ diff --git a/drivers/infiniband/sw/rxe/rxe_dma.c b/drivers/infiniband/sw/rxe/rxe_dma.c deleted file mode 100644 index a0f8af5851ae..000000000000 --- a/drivers/infiniband/sw/rxe/rxe_dma.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved. - * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "rxe.h" -#include "rxe_loc.h" - -#define DMA_BAD_ADDER ((u64)0) - -static int rxe_mapping_error(struct ib_device *dev, u64 dma_addr) -{ - return dma_addr == DMA_BAD_ADDER; -} - -static u64 rxe_dma_map_single(struct ib_device *dev, - void *cpu_addr, size_t size, - enum dma_data_direction direction) -{ - WARN_ON(!valid_dma_direction(direction)); - return (uintptr_t)cpu_addr; -} - -static void rxe_dma_unmap_single(struct ib_device *dev, - u64 addr, size_t size, - enum dma_data_direction direction) -{ - WARN_ON(!valid_dma_direction(direction)); -} - -static u64 rxe_dma_map_page(struct ib_device *dev, - struct page *page, - unsigned long offset, - size_t size, enum dma_data_direction direction) -{ - u64 addr; - - WARN_ON(!valid_dma_direction(direction)); - - if (offset + size > PAGE_SIZE) { - addr = DMA_BAD_ADDER; - goto done; - } - - addr = (uintptr_t)page_address(page); - if (addr) - addr += offset; - -done: - return addr; -} - -static void rxe_dma_unmap_page(struct ib_device *dev, - u64 addr, size_t size, - enum dma_data_direction direction) -{ - WARN_ON(!valid_dma_direction(direction)); -} - -static int rxe_map_sg(struct ib_device *dev, struct scatterlist *sgl, - int nents, enum dma_data_direction direction) -{ - struct scatterlist *sg; - u64 addr; - int i; - int ret = nents; - - WARN_ON(!valid_dma_direction(direction)); - - for_each_sg(sgl, sg, nents, i) { - addr = (uintptr_t)page_address(sg_page(sg)); - if (!addr) { - ret = 0; - break; - } - sg->dma_address = addr + sg->offset; -#ifdef CONFIG_NEED_SG_DMA_LENGTH - sg->dma_length = sg->length; -#endif - } - - return ret; -} - -static void rxe_unmap_sg(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction) -{ - WARN_ON(!valid_dma_direction(direction)); -} - -static int rxe_map_sg_attrs(struct ib_device *dev, struct scatterlist *sgl, - int nents, enum dma_data_direction direction, - unsigned long attrs) -{ - return rxe_map_sg(dev, sgl, nents, direction); -} - -static void rxe_unmap_sg_attrs(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction, - unsigned long attrs) -{ - rxe_unmap_sg(dev, sg, nents, direction); -} - -static void rxe_sync_single_for_cpu(struct ib_device *dev, - u64 addr, - size_t size, enum dma_data_direction dir) -{ -} - -static void rxe_sync_single_for_device(struct ib_device *dev, - u64 addr, - size_t size, enum dma_data_direction dir) -{ -} - -static void *rxe_dma_alloc_coherent(struct ib_device *dev, size_t size, - u64 *dma_handle, gfp_t flag) -{ - struct page *p; - void *addr = NULL; - - p = alloc_pages(flag, get_order(size)); - if (p) - addr = page_address(p); - - if (dma_handle) - *dma_handle = (uintptr_t)addr; - - return addr; -} - -static void rxe_dma_free_coherent(struct ib_device *dev, size_t size, - void *cpu_addr, u64 dma_handle) -{ - free_pages((unsigned long)cpu_addr, get_order(size)); -} - -struct ib_dma_mapping_ops rxe_dma_mapping_ops = { - .mapping_error = rxe_mapping_error, - .map_single = rxe_dma_map_single, - .unmap_single = rxe_dma_unmap_single, - .map_page = rxe_dma_map_page, - .unmap_page = rxe_dma_unmap_page, - .map_sg = rxe_map_sg, - .unmap_sg = rxe_unmap_sg, - .map_sg_attrs = rxe_map_sg_attrs, - .unmap_sg_attrs = rxe_unmap_sg_attrs, - .sync_single_for_cpu = rxe_sync_single_for_cpu, - .sync_single_for_device = rxe_sync_single_for_device, - .alloc_coherent = rxe_dma_alloc_coherent, - .free_coherent = rxe_dma_free_coherent -}; diff --git a/drivers/infiniband/sw/rxe/rxe_loc.h b/drivers/infiniband/sw/rxe/rxe_loc.h index efe4c6a35442..267f89d91da7 100644 --- a/drivers/infiniband/sw/rxe/rxe_loc.h +++ b/drivers/infiniband/sw/rxe/rxe_loc.h @@ -221,8 +221,6 @@ int rxe_srq_from_attr(struct rxe_dev *rxe, struct rxe_srq *srq, struct ib_srq_attr *attr, enum ib_srq_attr_mask mask, struct ib_udata *udata); -extern struct ib_dma_mapping_ops rxe_dma_mapping_ops; - void rxe_release(struct kref *kref); int rxe_completer(void *arg); diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c index b707fc3bca2a..fd27d2b7fdc1 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.c +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c @@ -31,6 +31,7 @@ * SOFTWARE. */ +#include #include "rxe.h" #include "rxe_loc.h" #include "rxe_queue.h" @@ -1237,7 +1238,7 @@ int rxe_register_device(struct rxe_dev *rxe) dev->dev.parent = rxe->ifc_ops->dma_device(rxe); dev->local_dma_lkey = 0; dev->node_guid = rxe->ifc_ops->node_guid(rxe); - dev->dma_ops = &rxe_dma_mapping_ops; + dev->dev.dma_ops = &dma_virt_ops; dev->uverbs_abi_ver = RXE_UVERBS_ABI_VERSION; dev->uverbs_cmd_mask = BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT) diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index f09ed2f81c91..24b49b747e90 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -1783,53 +1783,6 @@ struct ib_cache { u8 *lmc_cache; }; -struct ib_dma_mapping_ops { - int (*mapping_error)(struct ib_device *dev, - u64 dma_addr); - u64 (*map_single)(struct ib_device *dev, - void *ptr, size_t size, - enum dma_data_direction direction); - void (*unmap_single)(struct ib_device *dev, - u64 addr, size_t size, - enum dma_data_direction direction); - u64 (*map_page)(struct ib_device *dev, - struct page *page, unsigned long offset, - size_t size, - enum dma_data_direction direction); - void (*unmap_page)(struct ib_device *dev, - u64 addr, size_t size, - enum dma_data_direction direction); - int (*map_sg)(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction); - void (*unmap_sg)(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction); - int (*map_sg_attrs)(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction, - unsigned long attrs); - void (*unmap_sg_attrs)(struct ib_device *dev, - struct scatterlist *sg, int nents, - enum dma_data_direction direction, - unsigned long attrs); - void (*sync_single_for_cpu)(struct ib_device *dev, - u64 dma_handle, - size_t size, - enum dma_data_direction dir); - void (*sync_single_for_device)(struct ib_device *dev, - u64 dma_handle, - size_t size, - enum dma_data_direction dir); - void *(*alloc_coherent)(struct ib_device *dev, - size_t size, - u64 *dma_handle, - gfp_t flag); - void (*free_coherent)(struct ib_device *dev, - size_t size, void *cpu_addr, - u64 dma_handle); -}; - struct iw_cm_verbs; struct ib_port_immutable { @@ -2089,7 +2042,6 @@ struct ib_device { struct ib_rwq_ind_table_init_attr *init_attr, struct ib_udata *udata); int (*destroy_rwq_ind_table)(struct ib_rwq_ind_table *wq_ind_table); - struct ib_dma_mapping_ops *dma_ops; struct module *owner; struct device dev; @@ -2964,8 +2916,6 @@ static inline int ib_req_ncomp_notif(struct ib_cq *cq, int wc_cnt) */ static inline int ib_dma_mapping_error(struct ib_device *dev, u64 dma_addr) { - if (dev->dma_ops) - return dev->dma_ops->mapping_error(dev, dma_addr); return dma_mapping_error(&dev->dev, dma_addr); } @@ -2980,8 +2930,6 @@ static inline u64 ib_dma_map_single(struct ib_device *dev, void *cpu_addr, size_t size, enum dma_data_direction direction) { - if (dev->dma_ops) - return dev->dma_ops->map_single(dev, cpu_addr, size, direction); return dma_map_single(&dev->dev, cpu_addr, size, direction); } @@ -2996,10 +2944,7 @@ static inline void ib_dma_unmap_single(struct ib_device *dev, u64 addr, size_t size, enum dma_data_direction direction) { - if (dev->dma_ops) - dev->dma_ops->unmap_single(dev, addr, size, direction); - else - dma_unmap_single(&dev->dev, addr, size, direction); + dma_unmap_single(&dev->dev, addr, size, direction); } /** @@ -3016,8 +2961,6 @@ static inline u64 ib_dma_map_page(struct ib_device *dev, size_t size, enum dma_data_direction direction) { - if (dev->dma_ops) - return dev->dma_ops->map_page(dev, page, offset, size, direction); return dma_map_page(&dev->dev, page, offset, size, direction); } @@ -3032,10 +2975,7 @@ static inline void ib_dma_unmap_page(struct ib_device *dev, u64 addr, size_t size, enum dma_data_direction direction) { - if (dev->dma_ops) - dev->dma_ops->unmap_page(dev, addr, size, direction); - else - dma_unmap_page(&dev->dev, addr, size, direction); + dma_unmap_page(&dev->dev, addr, size, direction); } /** @@ -3049,8 +2989,6 @@ static inline int ib_dma_map_sg(struct ib_device *dev, struct scatterlist *sg, int nents, enum dma_data_direction direction) { - if (dev->dma_ops) - return dev->dma_ops->map_sg(dev, sg, nents, direction); return dma_map_sg(&dev->dev, sg, nents, direction); } @@ -3065,10 +3003,7 @@ static inline void ib_dma_unmap_sg(struct ib_device *dev, struct scatterlist *sg, int nents, enum dma_data_direction direction) { - if (dev->dma_ops) - dev->dma_ops->unmap_sg(dev, sg, nents, direction); - else - dma_unmap_sg(&dev->dev, sg, nents, direction); + dma_unmap_sg(&dev->dev, sg, nents, direction); } static inline int ib_dma_map_sg_attrs(struct ib_device *dev, @@ -3076,9 +3011,6 @@ static inline int ib_dma_map_sg_attrs(struct ib_device *dev, enum dma_data_direction direction, unsigned long dma_attrs) { - if (dev->dma_ops) - return dev->dma_ops->map_sg_attrs(dev, sg, nents, direction, - dma_attrs); return dma_map_sg_attrs(&dev->dev, sg, nents, direction, dma_attrs); } @@ -3087,11 +3019,7 @@ static inline void ib_dma_unmap_sg_attrs(struct ib_device *dev, enum dma_data_direction direction, unsigned long dma_attrs) { - if (dev->dma_ops) - return dev->dma_ops->unmap_sg_attrs(dev, sg, nents, direction, - dma_attrs); - else - dma_unmap_sg_attrs(&dev->dev, sg, nents, direction, dma_attrs); + dma_unmap_sg_attrs(&dev->dev, sg, nents, direction, dma_attrs); } /** * ib_sg_dma_address - Return the DMA address from a scatter/gather entry @@ -3133,10 +3061,7 @@ static inline void ib_dma_sync_single_for_cpu(struct ib_device *dev, size_t size, enum dma_data_direction dir) { - if (dev->dma_ops) - dev->dma_ops->sync_single_for_cpu(dev, addr, size, dir); - else - dma_sync_single_for_cpu(&dev->dev, addr, size, dir); + dma_sync_single_for_cpu(&dev->dev, addr, size, dir); } /** @@ -3151,10 +3076,7 @@ static inline void ib_dma_sync_single_for_device(struct ib_device *dev, size_t size, enum dma_data_direction dir) { - if (dev->dma_ops) - dev->dma_ops->sync_single_for_device(dev, addr, size, dir); - else - dma_sync_single_for_device(&dev->dev, addr, size, dir); + dma_sync_single_for_device(&dev->dev, addr, size, dir); } /** @@ -3169,14 +3091,6 @@ static inline void *ib_dma_alloc_coherent(struct ib_device *dev, dma_addr_t *dma_handle, gfp_t flag) { - if (dev->dma_ops) { - u64 handle; - void *ret; - - ret = dev->dma_ops->alloc_coherent(dev, size, &handle, flag); - *dma_handle = handle; - return ret; - } return dma_alloc_coherent(&dev->dev, size, dma_handle, flag); } @@ -3191,10 +3105,7 @@ static inline void ib_dma_free_coherent(struct ib_device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle) { - if (dev->dma_ops) - dev->dma_ops->free_coherent(dev, size, cpu_addr, dma_handle); - else - dma_free_coherent(&dev->dev, size, cpu_addr, dma_handle); + dma_free_coherent(&dev->dev, size, cpu_addr, dma_handle); } /**