From patchwork Wed Jan 11 00:56:45 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: 9508983 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 71B0260710 for ; Wed, 11 Jan 2017 00:57:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6100528512 for ; Wed, 11 Jan 2017 00:57:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 54CE8285B8; Wed, 11 Jan 2017 00:57:32 +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 8E03328512 for ; Wed, 11 Jan 2017 00:57:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759872AbdAKA5N (ORCPT ); Tue, 10 Jan 2017 19:57:13 -0500 Received: from mail-sn1nam01on0070.outbound.protection.outlook.com ([104.47.32.70]:55378 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759833AbdAKA5C (ORCPT ); Tue, 10 Jan 2017 19:57:02 -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=vdmSQ6+HvxSfPjBpCJKsjHklgzZ4CtTu8HsjcoUbHcU=; b=cUPYLo8s9YGbX/r/HGU7vuBkhkHzfXMHXhWjMEMpO6EiTzvX0wPBNdTKSHH5tRqOGF2lOe8/lobzdaCRMsRGq4XlV4NGbKfNJHYHziNuPkx7iSImkDd4t7sJls6XzgBa3bSnyyyITSsTuS/6Vui2a2HI8qgHMwj5x/u8MNVlFjI= Received: from CY1PR0201CA0013.namprd02.prod.outlook.com (10.163.30.151) by SN1PR02MB1422.namprd02.prod.outlook.com (10.162.0.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.829.7; Wed, 11 Jan 2017 00:56:56 +0000 Received: from BY2FFO11OLC001.protection.gbl (2a01:111:f400:7c0c::165) by CY1PR0201CA0013.outlook.office365.com (2a01:111:e400:58b9::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.829.7 via Frontend Transport; Wed, 11 Jan 2017 00:56:56 +0000 Authentication-Results: spf=pass (sender IP is 63.163.107.225) smtp.mailfrom=sandisk.com; lst.de; dkim=none (message not signed) header.d=none;lst.de; dmarc=bestguesspass action=none header.from=sandisk.com; 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 BY2FFO11OLC001.mail.protection.outlook.com (10.1.15.185) 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; Wed, 11 Jan 2017 00:56:55 +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 BB.F7.01420.9B085785; Tue, 10 Jan 2017 16:47:56 -0800 (PST) Received: from milsmgip12.sandisk.com (10.177.9.6) by MILHUBIP04.sdcorp.global.sandisk.com (10.177.9.97) with Microsoft SMTP Server id 14.3.319.2; Tue, 10 Jan 2017 16:56:52 -0800 X-AuditID: 0ac94371-46bff7000001058c-8b-587580b97733 Received: from exp-402881.sdcorp.global.sandisk.com ( [10.177.8.100]) by (Symantec Messaging Gateway) with SMTP id A8.14.09762.3D285785; Tue, 10 Jan 2017 16:56:51 -0800 (PST) From: Bart Van Assche To: Doug Ledford CC: , , "Christoph Hellwig" , Andrew Boyer , "Dennis Dalessandro" , Jonathan Toppins , Alex Estrin Subject: [PATCH 6/9] IB: Use dma_virt_ops instead of duplicating it Date: Tue, 10 Jan 2017 16:56:45 -0800 Message-ID: <20170111005648.14988-7-bart.vanassche@sandisk.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170111005648.14988-1-bart.vanassche@sandisk.com> References: <20170111005648.14988-1-bart.vanassche@sandisk.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrILMWRmVeSWpSXmKPExsXCddJ5ke6ehtIIg9fTNSwuPP3OZHGtfR+r xfO9r9ksXp7/wGqxcvVRJoumTS+ZLS7vmsNm8exQL4sDh8ekmTOYPRbvecnksftmA5vH+31X 2Tw+b5ILYI3isklJzcksSy3St0vgyvh/cCVrwbJ7jBWLHt5ibWBcuomxi5GTQ0LARGLz42Os XYxcHEICS5kk9naeZIdwtjFKdDeuYYepOtR2BKpqM6PEgq+LmUESbAJGEt/ez2QBsUUE1CQ2 vVoE1sAs0MMk8eC0FIgtLOAscXLyWbAaFgFVibO/p7CB2LwC9hKb1s+COkNeYlfbRaAFHByc Ag4Sy+fYg4SFgEqeXuoE2yshsIhV4tzxN+wQvYISJ2c+YYHYJSFx8MULZogGdYmTS+YzTWAU moWkbBaSsgWMTKsYxXIzc4pz01MLDE30ihPzUjKLs/WS83M3MUIionAH4+vb3ocYBTgYlXh4 O56VRAixJpYVV+YeYpTgYFYS4Y2uK40Q4k1JrKxKLcqPLyrNSS0+xCjNwaIkznsx+mOYkEB6 YklqdmpqQWoRTJaJg1OqgVFenr0m8eW1NFuWw8paXXVT3q8PeHNrlUg1y4vApJCaB0cOn33h aLbeYcK/fQvtf1Xwr/rz+Gfjoy9GyhdDtNddVTvOl8PVsN9vj8Aujoh/jLv2Rl1cWDT7lGJ/ YlL07dwnjtKnIu6xCLyPrF/EMF2tymEh+8Rp+eyCphybPxhFCrsWqJmLTlJiKc5INNRiLipO BADADXBNhAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGJMWRmVeSWpSXmKPExsXCtZEjRfdyU2mEwfwb5hYXnn5nsrjWvo/V 4vne12wWL89/YLVYufook0XTppfMFpd3zWGzeHaol8WBw2PSzBnMHov3vGTy2H2zgc3j/b6r bB6fN8kFsEZx2aSk5mSWpRbp2yVwZfw/uJK1YNk9xopFD2+xNjAu3cTYxcjJISFgInGo7Qhr FyMXh5DARkaJ1gkX2UASbAJGEt/ez2QBsUUE1CQ2vVrEDlLELNDHJNE27zQ7SEJYwFni5OSz YEUsAqoSZ39PAWrm4OAVsJdY8sQIYoG8xK62i6wgYU4BB4nlc+xBwkJAFU8vdbJOYORewMiw ilEsNzOnODc9s8DQSK84MS8lszhbLzk/dxMjOGQ4o3YwXp9ofoiRiYNTqoGR5YCA8NmPt/9s mZrwhO+V6zKZapfK2lq3Rg+lunCfzPcfl30/cPl90y3vrJ3VhzM2b5Poss2UM908m7fhLXO4 a1XFhN2Pqudy5TW8+2Fnc/PevoVzHF8HtK2aobbzMHvgFp5LR2JVJvXZqB5uSFuU7LYwgV/t wuNzhy7EN3v4sU7wkZO0iwxTYinOSDTUYi4qTgQAdl45W8kBAAA= 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)(39410400002)(39850400002)(39860400002)(39450400003)(39840400002)(2980300002)(438002)(199003)(189002)(305945005)(356003)(5003940100001)(110136003)(106466001)(54906002)(50986999)(76176999)(6916009)(69596002)(2950100002)(6666003)(8936002)(5660300001)(81156014)(81166006)(68736007)(50226002)(8676002)(626004)(47776003)(36756003)(33646002)(1076002)(189998001)(77096006)(86362001)(575784001)(48376002)(38730400001)(2270400002)(50466002)(92566002)(4326007)(8666007)(97736004)(2906002)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR02MB1422; H:milsmgep14.sandisk.com; FPR:; SPF:Pass; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC001; 1:CM0Qgfx8QQRBRZKJIUf49GRH7DpW/RJO2hVzNQkRsbE39phd4y6baBBTh1LLvfGlcOrfdx2jPM5iBIJl20j8Wh8jAO5HjF+6Pb/nvlkv34rhlO1BQ4dexSYBc5fovB1PvIfSxbtANMus4HgzcmKtdriQE/Cu8TdVuMeoLmto8i2KTC+n4AuMANslKjC5Iv8tBjB+AVjdWhEDuZYgq70Tery50zrx6J4pivEl/yQjQe/JSmdiIzEwv5TJm3K8N4C3IARPFrEFu5FmUWUgMuJihQ78Bctznxj9WDnSf3grGMxqJxwnPBOoku0Q+As1BJl+E+ir4Qk93qLYUpbLS/pm5jZc8ES+BPdRRvx9gbKyNboaj4ZVeSrRweL9Eozb1kGEJxh147YQjiX139mcb7NzLo5OrzxCnGvhfLpxb2y/A6P40rLUMb6aXeOhncAVhAnsJwpYdsO24Vy75KtSQslYXhWL8EUAJxoI/+GSemKN9/uXlAShaG7MMGGZqvYWq3tyx2ZdiaBKfbQHLoOaEJO2grlwAsQMVB21Ci7Uj1hSd5w= X-MS-Office365-Filtering-Correlation-Id: d4081441-b3c1-4bc6-e02f-08d439bcbd0a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002); SRVR:SN1PR02MB1422; X-Microsoft-Exchange-Diagnostics: 1; SN1PR02MB1422; 3:4EWN7e2kwJ5ScAyp3+dCGr2BAnDmZiXQENj7360+V5OhHOv2vleuo93rF1itYF/Jj+YabpS7CpOWghABJY43oyP2dAsz73qNMjbp47CxrvcdP7TElKDu2ZKNYA4NZHuVibk0DTTPiZjZrrjiOO70DzfihRROUR6CNvTUg0beL/slWvMxIznOQ1JAOnBRpvRRDvTID6GF4hvCM6qOoMYk7wXNSvmM9hYOwbDT4FfDJDTs1OXaHdBHrTuaa/QwfgwNFKXLoyC3q/ULIpo7PVgeJFXqGO1vaodN06Tabsj5i6F/F+oBKvuK10autqT/uJGf6G+r7EmIdwth/qzf0yu3P8UQPink2//9TvWkyPk1I9ccOpd78gfKZnvqb+lvdejaC7+42iH5KkS8c6cY0HjgpQ== X-Microsoft-Exchange-Diagnostics: 1; SN1PR02MB1422; 25:0wGP3SbJH6ucJYAxcGmklUZpr2WzZk0SeHSZIJBhC2KZR3wwA2hSmqBMqjNJPyddgvRosjYze0Mx1DQ3/nkt2egS+FLS9Gvqp6Amr9j9oEITkxlgam6pxMlHqSNn8lC86sh1YRFhEQS5cmvTzGOcoxHy9qxnyPJdlxEHveFrne2zhRhNiZPTaiODiR6lJ3ukB5zMy02w9KcE8fU9oZlI/U549DUXG7fLZctHO7h78FimIAjGiEkorxK/O9kBwH2UayNJVNMzp7QeLFwSVh5QE6IfViBbtwu59583mvcOAsgyyo9f7OK+Dh+pewUmgIJ7WJJgCg2tdngSWrtLx7Tbj63hPJVxw40zo+/AZlfRZKHIyauztMGZnCRNzb6PVWNGkqZAV3gJ8ycudyV2KJtMJIv1tVlkAV2imA1wHrTR24bvEHJ0u3Wz1nJIbxCTvMADww5nnrzee0OHEUIxi/ld0QDdOPcDO4ZTfiJZ895vGMt6nbZMxjPFUY2CWTIO617ZwwxZAVdTVPTLoNGA8WVVcBeeTiWJTUWgvEmJ+IW2MQF2wpbtb8GeI+NhWYaknd9sJjoz+OyfRrp4P28n0Fu825/twZ0RfZAjS1FKHtz1xhVtFMFWoPiI9sqow4O8ALfgSeelEJWB5Tm9KnssVjG4nZAzvWrWVGKh8Ycik9o4GU5mxCDDAjwKrO0aI73aZLbFf++/jVA4HyTlYB10V7zlzOBWZwgah1IE3L2g7EO/2jjgD92y5tMU5UhhNI/YL0HJC08f2kOCT9MVk+oHhC2w9cssnn79O3614J92Kh9mAvrUZxkiOnue68EuMQf4KTvN3EmCITqAWqiMQDxsMdRmYA== X-Microsoft-Exchange-Diagnostics: 1; SN1PR02MB1422; 31:Gr709OnwVWevR82QOOP9Qyn3DHF0O1HLrFxAlA4AE/e0yGA13w5RHjVLl+vhIxlFPopnlhcPA90+U2+jeSOQeZwThAXpx6VbzFZI0Ot0j3DQhFfOGfWWnC53vjkSshZBMdJcENHRKvXpyK7FakjTQf9x2ce4Z5v+J/peRwIJGq/ojs1q4bjGQ05SnXnKreXK8orUDQYXnTtIP66hhGBDdJ+R7CbB20OTKaH9FSvN1cGOdkztGiu+maIDBvflajJ+QQhiKEt6jsE/kJZ6PIKDzg==; 20:7wC78uogCdmMxJPLyWak/bUVQgK0m3x9dh90bgZMKDPjot7OnxPQ6LUeX/KsgNVpoKlpzK4ADRCa/p27rffgMVHhFVR8cV6pj4Be4smhjRJgc/My2CWCtLjY9G4bHMqn6S7QUinZR6Q/QxApsik3LeMlT2dFeJ1tybXockqEviFi4wwZBZw1QF8tUelq+bWu64gR59QRCjnEjCsli72eYM487m2FeM4S8P6YKkJkpz6BwmahFwsbO1rlfMdcQUkT73ywjezEMaxn/a8FWxzBwsyBzTj15GxmS4K3u+mQ1dbpG9M4P2rf0bcFug5HBbFxuj9WmUML/3NAsMZ+544K15dCVtweq5qcUkzmxK0t+d3VH6EB7zW9LUxbwSNRheHczgOBDuLuh07z4eIY64cw20RbOgpryvofuENLF9Kii/swDKw58sP/BV/vwrEslWVbt96ixDyl6F2j8oj4LOO15k3UXcX72M/C+YV90hFjBwTHFC4AfRfVB9q8uenkdiOj 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)(13016025)(13018025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148); SRVR:SN1PR02MB1422; BCL:0; PCL:0; RULEID:; SRVR:SN1PR02MB1422; X-Microsoft-Exchange-Diagnostics: 1; SN1PR02MB1422; 4:k+oET/7wIML9tCzOUvpH6DgG/aCxml4u3RAWxxxbHiPmZ3O5XxTDvi5cfRlI+j1Y80fgzSUSNPFnwBtcShaCOtUw0QMn9ga28Q3d/tS2w8n6FMEbVgP9TCq3bka91uUZauMumB0e+AdoaiBgJtwPQ3s0mUKgzPW48/bou5T891fd7I2R+S+UYr/HZuOe91neKSkvAqt1zrPNFLEHuw+vP5sko3gJToTaqDCfUtlYtZLyN7IgoW37hlgOL17T5+WSR8EKcxrW0ImacEsmYI7C/Qji5Brgz8VE21aWb0RyWX/Twq2gTaJq1qNjB3rQwVl2jng+QywjtUcGXQDr8ZSDsXg+mhfnrN0CwsRxztD3tODyXwV5PIF4w52EO1kz8wnc+nsRShl+3xUjTS3/L9X4Zhll22Ger+RUA3KGwRWJWZpOo8PxlfrBhH8fTuy+xAPeks/Bz2Su9iehQnap7ucsCpmj4J+vAaMjt4cyI7/BAI2rxPgz2SiLh4pWiFrxds/fLHbcYMOYKN+U0P3zrJH1sjxLJHoxhdvaXzeihB9G1ziEaWIO/E8JAIpzwQ/YLOjsFj+wZuHqZaT1dSuChgHCWBhxtc9ywpJkYPn63i4qv3zRFAgrWDTPYwnNvzFTsO+R1xTpSpK0YG4jug8bR26noq8pvA0ifNuGMYii4aH/ha7yN/72oJ42Q+VePJ6ZSBlU1ef0ibVG0MLPPnTVOU4S+VK7mE7nfH4rvjYJGqfggkk= X-Forefront-PRVS: 01842C458A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR02MB1422; 23:GA5Z8G+IY/pL410KJykgvmvJqrRMQdRKnWRJo0Kub?= =?us-ascii?Q?CZGZpidWHGjygzRL36Hk/+9DXDbelRZkYgrCc5v1M6GdwetmvPOCjJYhLwt5?= =?us-ascii?Q?zncrIuu/pFcZzVw3uzohdi8g7PBRbKZzvejnteI9YFrMuz4DNFFba0RqHSAM?= =?us-ascii?Q?fRmJiDPe8Sc/uawNuzygenkf+O4dL+tIhrDRK1ztkJV6Fy1Es28SyRwGH+M6?= =?us-ascii?Q?ZzS5HwZaHjm/h+aST1EZf2t9iCJaHPC7hu0SXP5ddayh3UIY7qx9mj1c6H8R?= =?us-ascii?Q?1c5JvdIb02Pe5OHm3lsflfV4A2T3vBVFqvLFTLBZs29rk1hD2vpQthrcVTdq?= =?us-ascii?Q?Tvx2blddztd55hVFpsbsNaYyh0NTrT+ygL4p0c97bB/0xpc8dv/PmjsirESI?= =?us-ascii?Q?L1szRzSVqTqsj5WkwhChd3c9DwpuFx3rf3IAkPUEowBmcxZ3cAyGrh+JqnnA?= =?us-ascii?Q?UU2JATekjHxzFG4wpC2/ourGm9c46kesuseK2NHQGqdyW0xwe3jqXjrvCtcA?= =?us-ascii?Q?lo4w9k62jSMuH0iSLP2msF3iGsrDotSgnG2a9wwrvl1OXhBJ0guAUyCrCgAm?= =?us-ascii?Q?S2yhNMem5oZXDX9RIo0WmVFC9L8mZQL5x+hBV1e9OdSAUUELkD2vv4FwEDgN?= =?us-ascii?Q?KC4IMZstVi3yiBVJ56gk2vTlUuPzQ7qjaTVNe0mXIj9pXUaGWMPjSVhLyRYf?= =?us-ascii?Q?B0iGXHoxlYOjH4y8lP9PEx1D2sJhoCxEh6v7z+SVBQFBfAy7y+A6+qpVkK5E?= =?us-ascii?Q?+rRE9KzAQel3PzDGhG4NnHFNlUyA+OQuJ0c4UGTkTvM2lKl0amvKMX9GMc/B?= =?us-ascii?Q?86T17PRF21zkNyYHaifZFsAMFq8QscvDZ73bmjqHHR3yC56kpBZOJsYSi9fC?= =?us-ascii?Q?XZBE4ybMq+kxYR3L6EVHww8/1c8Z3IN7ISz9C8E0U+Nf11/RyjIhaS3MbmVq?= =?us-ascii?Q?OPvhZSlsLu5XDaQdRJ/TLdJ5lhtKG22Y+BNpmiXLQQzutDq08iihuagst9BE?= =?us-ascii?Q?x9LbJxkTVxhG+Nvg2ZhZOa+zUUksUrwSxlFQm3TgUfm05ysDlkeGva/jciYN?= =?us-ascii?Q?9bPQOSQtmaWPH1X3AkPgbDJ++IVFOE5aHICsr/IsYSB9UtRdM7dq8bUaR5wS?= =?us-ascii?Q?Zm0NHRAh6SPp99yGs17VL61AYSr6mFh6pyBE6Z1Pn4JDyisZB/XYKeXCAmGZ?= =?us-ascii?Q?fsYLHWe07vxBQNxOC9lteE+T2ptYrUKiIY5?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR02MB1422; 6:F+pep+MbbrscPmuaPCfd/VQ2jwzXYc000dbTDizmvrADVGaawWRyuvAA7ty+WNsvDcpezorimMuGcVeXVuMvISPgr0JetjCvJud2gNCfDrsVVO3O3ldZnj2VrGOZ9lukcksXyl8dLO049tBObr038dosVBOiJKE7BBlZbjWVQAnJ2M2NjLKr4z9qogCd5UMzIbvZUOs2K786/NtAGHTxYuhFK1LvibweCq4fYPncjJ6/lvGJ0HjMPZPL1IkukS8cQRbGwPPPlvggxLU5wU2NqrYixwN8GZUVjztijm6nizTnLJBesEtZPbIiO0RAAA4fYSpySNZerBQaIbJwjjDXq/4kjqp5Ypn/rSONK9Fd9EsZCEiv/WBYLS1RZ/kMGHIc10RKvhU73HZxaiNMNsuIxYDXSWbfdrYSZWy0Zb86Tu/RiH7rzrFCuqBxFMxNGpHfCX0CIfb5DhOt6m3RriBq/w==; 5:Bus5ptLhd12+yPuvNMCmtzeKN34iQO6cH9FhJSpo0AhNclLdYOhdJa8G4DBMEinO68wcan2Egvj2REagoeORAjRJLg+Zw8Tx+mC48U2NxDOUn1JZApIIPnQZj+BSLCCmwOby7xaCpx2rW0BNvscjnw==; 24:h6nT3o0TAi2d12wQ6av5gYUM3Aa876deP0pJILC9ddsDcP3NS5VJbEwRqcRH+RyMH36w7Jg43OT3CHmLhRIT8NGG17+X559yMQ99n/BvZiw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR02MB1422; 7:mSmmz60H81HCqvk8U6TCCRXCIq2Lu9g5+x4K20xTT/1cMs68+7GkTkvNIyeJweo/Ms1Znyi2KeO3/ykUwC4pO8aiXh13fFup5OGH/mJf97H0KkR2ZSbq9rAGpB7JdgDsVvrZBlQBjEwthpVv+6xLnU3npgrcktv/7a+wO1a+0xrfPNmuvA6lYvSa0U8gR+2uvxOc8+4UWB2ov1jHaYLXqYdwEl4ByOtoitVjekA9a0Nm9I01SKeJscTafklRapgxCBUnkFLlHpotFhMncspCnrcMiTfJApR6Z3SA3oCuX3lqlBK8PXmkRdGQn2f/sp2JHcGXemwRJ3PdkbBWvliipitSq0SJPf5Kgg6rp+dZNi5RIPaM0nKnSYwr4uBiEV3aeBl+SwbMWbKuV2nYl3j033dN5nCc1CGDqbShkF2fYmE90vaaqn1TOMwWAFWW0TIKHkNx2LQmS3vWBPGuHjphBg== X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2017 00:56:55.3544 (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: SN1PR02MB1422 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 Additionally, switch from struct ib_dma_mapping_ops to struct dma_mapping_ops. Update the comments that referred to the source files removed by this patch. This patch eliminates one branch from every ib_dma_map_*() call. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Andrew Boyer Cc: Dennis Dalessandro Cc: Jonathan Toppins Cc: Alex Estrin Reviewed-by: Leon Romanovsky --- 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 | 5 +- drivers/infiniband/sw/rdmavt/vt.h | 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 | 117 +++----------------- 11 files changed, 25 insertions(+), 548 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/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..6a81b179f631 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,8 @@ int rvt_register_device(struct rvt_dev_info *rdi) } /* DMA Operations */ - rdi->ibdev.dma_ops = - rdi->ibdev.dma_ops ? : &rvt_default_dma_mapping_ops; + if (rdi->ibdev.dma_device->dma_ops == NULL) + set_dma_ops(rdi->ibdev.dma_device, &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/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 beb7021ff18a..b75c19bfcb6b 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->dma_device = 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; + set_dma_ops(dev->dma_device, &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 958a24d8fae7..89e80eb77e06 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 { @@ -2091,7 +2044,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; @@ -2966,8 +2918,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->dma_device, dma_addr); } @@ -2982,8 +2932,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->dma_device, cpu_addr, size, direction); } @@ -2998,10 +2946,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->dma_device, addr, size, direction); + dma_unmap_single(dev->dma_device, addr, size, direction); } static inline u64 ib_dma_map_single_attrs(struct ib_device *dev, @@ -3036,8 +2981,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->dma_device, page, offset, size, direction); } @@ -3052,10 +2995,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->dma_device, addr, size, direction); + dma_unmap_page(dev->dma_device, addr, size, direction); } /** @@ -3069,8 +3009,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->dma_device, sg, nents, direction); } @@ -3085,10 +3023,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->dma_device, sg, nents, direction); + dma_unmap_sg(dev->dma_device, sg, nents, direction); } static inline int ib_dma_map_sg_attrs(struct ib_device *dev, @@ -3096,12 +3031,8 @@ 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); - else - return dma_map_sg_attrs(dev->dma_device, sg, nents, direction, - dma_attrs); + return dma_map_sg_attrs(dev->dma_device, sg, nents, direction, + dma_attrs); } static inline void ib_dma_unmap_sg_attrs(struct ib_device *dev, @@ -3109,12 +3040,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->dma_device, sg, nents, direction, - dma_attrs); + dma_unmap_sg_attrs(dev->dma_device, sg, nents, direction, dma_attrs); } /** * ib_sg_dma_address - Return the DMA address from a scatter/gather entry @@ -3156,10 +3082,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->dma_device, addr, size, dir); + dma_sync_single_for_cpu(dev->dma_device, addr, size, dir); } /** @@ -3174,10 +3097,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->dma_device, addr, size, dir); + dma_sync_single_for_device(dev->dma_device, addr, size, dir); } /** @@ -3192,16 +3112,12 @@ static inline void *ib_dma_alloc_coherent(struct ib_device *dev, u64 *dma_handle, gfp_t flag) { - if (dev->dma_ops) - return dev->dma_ops->alloc_coherent(dev, size, dma_handle, flag); - else { - dma_addr_t handle; - void *ret; - - ret = dma_alloc_coherent(dev->dma_device, size, &handle, flag); - *dma_handle = handle; - return ret; - } + dma_addr_t handle; + void *ret; + + ret = dma_alloc_coherent(dev->dma_device, size, &handle, flag); + *dma_handle = handle; + return ret; } /** @@ -3215,10 +3131,7 @@ static inline void ib_dma_free_coherent(struct ib_device *dev, size_t size, void *cpu_addr, u64 dma_handle) { - if (dev->dma_ops) - dev->dma_ops->free_coherent(dev, size, cpu_addr, dma_handle); - else - dma_free_coherent(dev->dma_device, size, cpu_addr, dma_handle); + dma_free_coherent(dev->dma_device, size, cpu_addr, dma_handle); } /**