From patchwork Mon Dec 10 09:12:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Sheng X-Patchwork-Id: 10720515 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1C85018A7 for ; Mon, 10 Dec 2018 02:44:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0B84729C9C for ; Mon, 10 Dec 2018 02:44:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F35DA29FB3; Mon, 10 Dec 2018 02:44:55 +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.0 required=2.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 9BF6629FB1 for ; Mon, 10 Dec 2018 02:44:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726355AbeLJCoc (ORCPT ); Sun, 9 Dec 2018 21:44:32 -0500 Received: from mail-eopbgr680071.outbound.protection.outlook.com ([40.107.68.71]:47084 "EHLO NAM04-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726284AbeLJCob (ORCPT ); Sun, 9 Dec 2018 21:44:31 -0500 Received: from BN6PR19CA0054.namprd19.prod.outlook.com (2603:10b6:404:e3::16) by SN6PR1901MB2016.namprd19.prod.outlook.com (2603:10b6:805:11::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Mon, 10 Dec 2018 02:44:28 +0000 Received: from BY2FFO11FD020.protection.gbl (2a01:111:f400:7c0c::103) by BN6PR19CA0054.outlook.office365.com (2603:10b6:404:e3::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1404.17 via Frontend Transport; Mon, 10 Dec 2018 02:44:28 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.99.221) smtp.mailfrom=microchip.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.221 as permitted sender) Received: from AUSMBX1.microsemi.net (208.19.99.221) by BY2FFO11FD020.mail.protection.outlook.com (10.1.14.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1404.13 via Frontend Transport; Mon, 10 Dec 2018 02:44:28 +0000 Received: from AUSMBX3.microsemi.net (10.201.34.33) by AUSMBX1.microsemi.net (10.201.34.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Sun, 9 Dec 2018 20:14:21 -0600 Received: from server1.microsemi.net (10.188.116.209) by ausmbx3.microsemi.net (10.201.34.33) with Microsoft SMTP Server id 15.1.1531.3 via Frontend Transport; Sun, 9 Dec 2018 20:14:19 -0600 From: Wesley Sheng To: , , , , CC: , Subject: [PATCH 1/5] switchtec: Remove immediate status check after submit a MRPC command Date: Mon, 10 Dec 2018 17:12:20 +0800 Message-ID: <1544433144-7563-2-git-send-email-wesley.sheng@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> References: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131888834682309863;(5a93feec-e11d-4f7b-166a-08d09f1f276b);() X-Forefront-Antispam-Report: CIP:208.19.99.221;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(136003)(346002)(376002)(39850400004)(396003)(2980300002)(189003)(199004)(69596002)(76176011)(305945005)(5660300001)(51416003)(107886003)(50226002)(2906002)(336012)(68736007)(81156014)(8936002)(81166006)(8676002)(486006)(2201001)(26005)(77096007)(86362001)(44832011)(110136005)(316002)(11346002)(54906003)(2616005)(36756003)(450100002)(356004)(476003)(6666004)(498600001)(48376002)(16586007)(446003)(126002)(53936002)(105596002)(47776003)(4326008)(50466002)(97736004)(53416004)(106466001)(14773001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR1901MB2016;H:AUSMBX1.microsemi.net;FPR:;SPF:SoftFail;LANG:en;PTR:InfoDomainNonexistent;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD020;1:ZD16LKa+hp7ZgcQSJv9b9huaM1mBNwcvydvRuPJYo0io7m6uMbamUCkUKHT6ONtN379jR5+M/lNC/gbrj92JnvJq4Ii50GOa937G2/sHtBb3VVZtsCEQHZzi5apBvr+9 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 925d99e5-3882-4f30-c381-08d65e496781 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(5600074)(711020)(2017052603328);SRVR:SN6PR1901MB2016; X-Microsoft-Exchange-Diagnostics: 1;SN6PR1901MB2016;3:+Td5rZbThtixw4BFUo9MxR9sRVj0ewuCG6sQ4yxCg7DCosLaQ2JsPLaAYHIkOR2jK5ooVT1H62qYexxaS9g1QtpXOOuTpiRy5NuLqkv8C2sR9mnHX2UlS78v5li/nTkMKudK6UWEzJA2B794GVnytfDyWVEmHGHZkqLpwCEFyzCON8ZmtJlLY/4DYj+JWsmFyqwegAaUzkEmwK6EAHUMHAGrD4wRhy4fsM8qfbsrHT+PzTq9xCv+IjvA7yfzT4qAH+b9Eng605Dtass0pky0eVOjjscwN2JoDiCUZvavgg4dRt1AwpcauHdEJ0wqVJRBiYgMxNEplWxJaKKMbbwWs/P0bmHFb6ZZ+nV7qXO5BYQ=;25:AkofHADtJ4sFLJIQSluemNI3ybCvzVn+Hi5tGvSsg7Y4497VpzbCx5uHZCzqR1bPaVFubd/aig4B9gJAXdx/Uzm8iHoqfXvoRgvk0/FG8FZjeVOCcoIgMOlVUkjsFLCUQ7/fcfS2aX5e/HMyvlPL1wdBHlAH9eUJRN8MmbQ7UEaPDbkPPjt+eQE6cJxF+AJp4vCPyzZDjZRACCjKCwU27Jbol2/Hspv2bjgTSAbbvCcnmCID5SFUvBKDOfNdhW4MBxpLIxW+08TpEhBpxakstgY6nGZzz4bEws/byeyu/N/hL8QmFTyEnxm9axFYsIFw83lCsA199YbNTSuij7uRzA== X-MS-TrafficTypeDiagnostic: SN6PR1901MB2016: X-Microsoft-Exchange-Diagnostics: 1;SN6PR1901MB2016;31:wDRdI2FDv3AmpBlMLV43hAu22ZdN6Xr3gbsE0e9Pz8oddFOJJLDKHF+RHaNW5oXwXQdp62Ndzd2uQFZvQ9Pf+EBi12zcJooTIZBDtCrEblbXR6+roiT88q0rtqAZu/Xlp3R60xzLz7W+gkV0sZDAZy/OYy12YrsUcR2v5tBSggsQLN3Xr27U/gP9nkcSPkXRg2YpQUWLuE/BbMXVJBULK65jYVbYuyN1nmmORearD6Y=;4:amoPtgEyQvt+0U5uFCzssn6pvZ/ajRN82qRQ6X9GhquAdcsP5O+D82KNKkzgHzEQniwx5MhC9ujw9kqRtdElAOlVwgPO7tlxdC+dwn/pfoIbA7mc4zxf0K76zyGALyKClmHBI4WsuN25Ym96ERtRP3KSrQVqOzdox7l9zXHyT6Be5kxGJ4pZPMBGUFj+uQOszVjzgG5GgRdX2yLYloXxHlMTS5ap8Kua0lld7yg4sRKeCJrcim/V6ieSmNQveA9FNz49OwLq+tIa+tNLXK+NNw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095135)(2401047)(8121501046)(5005006)(3231455)(999002)(944501520)(52105112)(3002001)(93006095)(93001095)(10201501046)(6055026)(148016)(6096035)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123556025)(20161123563025)(20161123559100)(20161123565025)(20161123561025)(201708071742011)(7699051)(76991095);SRVR:SN6PR1901MB2016;BCL:0;PCL:0;RULEID:(400006);SRVR:SN6PR1901MB2016; X-Forefront-PRVS: 08828D20BC X-Microsoft-Exchange-Diagnostics: 1;SN6PR1901MB2016;23:uTKnJ+gkVekRN83YBzIAQYj/MlJ33VFGEE6nxPr2l6mzvkVKXwpWpdEXXk5Y58SrBAS7conPmMEyCCcINaj4vWMybq72gXLZ0XWxBUBYsKSLn4zsdVbNaz31wWcCBTl3AdpgrngYaul+bF5fdYJJU/pg2c/hqGnO/nn/2cmvy7kbSOmzAwNAFtCP/KwH2jD/PRLHXl4Vd6nj+n277oIA8+1ZOp3RG7Ghsxn1Qd+U2+A6eRUwo4vj5toG18RmT7dziV3r0liN8MHTF2IkPo2G4uc1N9nu4ZK/osTdieaPAvC2rX64TTDqQJbuBW5S3NdG+23lFIyS27tQr7UPxkQuolZ/seHd/0wvRHhzo1GSyh7rHgPA119WyYzFhtoFXxwnWFHmfE0dRgTuz+wiP+DIOc/T48sGsY0ugQfYW3IVrCczaE5mIqaoKWKHvsefhEkyfl7wO/bpynF9tkeR9WjgrpKvWUSzZvDjRUddWKOoUT1BsVs2nFp5XECL4jr18LalVVaNWFcX3GMP0Z9vhqbuCm10PNTMlbWPrpinz8W632o1qTTq2+fSXaHtR2IeNJU8TKqvk4P7/adh6BTwTH9trlSOxfbnv1Oj4yTISXq7cESOCafPxHBeKIpIiOSNnXAXSronO3gvPopTGpb2h8YsCI+8SHxfWO5qupnA1dtYrDLu91gY/Viw/26BllTub9qic3HCwba4nJIvsX1YFwJPHEbmIjWpLscQhZe8KE4bJXwKJGQcbaQQuYatSOV15pdjZMKjghVf4i56iRauHP8bRXE2RplikadJ+lAoYw8v0o5BGgZ/wysoACKSA2zOBOOs8NmLL/HdvR/sODNWMeXHKT7XhdrVMPp+IfbzHHCli4rcFkKKL1SUmAKw26db0RzEoheMKqTbpnU9BFrn/PRSshZquxol8FBiGqcvZehXEHZJLU3FkXMfo7lmCKjk+q8HJjOWyyWJP413rUSslgnpVPpQjXxrj3lvfb75cxSLzGGfbU9XOBzNicsRASbxx2coju+vyOR2Z6vWhULeVPaKImU2ATlMP07akwQGqxP0F5+EpdmpK2WxkFt9FYEgyo8s0S8CaOAfdT2WT68S3rfryqQHBluSODx55eKQ5+XHlaG3PqBsEEq8O+Ny/cKQqaRcMMWb7xdUapTDz5soIcU3xQ== X-Microsoft-Antispam-Message-Info: zN/5K1ROPiaGmtFDj17ye4hOvmQJ0bgczljafSa66fw4gTxzgYlmB//BI2YBfyX3gp5EIW8yE565pUmTQ6D0QQu9vKmRJ4CUtukzRCPbMK/zsHX4LSmt8MqePMaIrlDnxT4FdzfsngjGR83YGmHc1SWHAAbxS3lL/TB1cbbiEsdkhsa/z0EmNdUbiwZyp3d4+Oig2Ndh/nGg7Khb8nWwe5jkPfVM9ErHdF/8IxgOvcAsB0qRrZvyXH/rA6cWBu90SWY5K1xS93fygZMquxEHhF40/5TkLf919IIIZRYtzfHrnZXYt8AF8vocybc2/8HZ X-Microsoft-Exchange-Diagnostics: 1;SN6PR1901MB2016;6:57ksR1DsKACfCRrYv6w3d7GwTRhph0zmt0ul2Dcgv+ajJqj4c/G2X+XPXwUZqz9LLSLPFv6101oaomfBtaZCBwTLv3nyC+eicFouzC+7VHSb0ghyHwmSuoZ08sA6HuHeFE/fvSOmQ1N2FpQ50xapwiRA2ExSrkdB96IUes8litPUng0q76wakW1fMOzhgnpNo3rAv9vc+rE1ZnC+Y+3Pieh3CmovzGOojnKcLzZy4FjUBECuiju50Weg9NkCvDFkzn/ZbFTPZZfZ9IWU27Ssc3aouI7vHSjBsCCRi7k2PxPMgSyBfGMNuI3+TGbxi6lGUVk0bSxE0Pc5LIfZe+0R70okdL3sli39fpkiaytLElQFwoG+mUKgTtuXV9O6a7H27Pjc4yITh1mGMcmUKlckIvoY0GUhl8n84MlB4+7yGszcb+xo8Oo40lmbWlLGw1+M/hLP44C5GIcaA8cSsTOnYQ==;5:Zs8nMyND4EOy96imMUk9DoIjbvfcA+/H+yC6a3sLYTI2BZ9EOgIOVvTN1hEOBtU1gMCZ1QHovTTOCt4M281uUcQfq3HDz6Wy2haDYJBZXAqX7eFWvMduPLD+CkVKb2+gnkoR6yJASYrTeDIUIrYxN5qe8tLpmeeIZqk91Kkw/Ag=;7:0DXZd1VJSelmkRlGVtBb56nijSUsj592OkYbmfnSL1APWHo2RaJhPTN00OJIj8xmXAEdZea7/s33/y5q8wgqDUXO2A/VjDYwdkxvw7EccCLhhIk+sFoSj7RIFr795x1S1RZAnVwc9FKrggVlgW9XNg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2018 02:44:28.0278 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 925d99e5-3882-4f30-c381-08d65e496781 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[208.19.99.221];Helo=[AUSMBX1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR1901MB2016 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Kelvin Cao After submitting a Firmware Download MRPC command, Switchtec firmware will delay Management EP BAR MemRd TLP responses by more than 10ms. This is a firmware limitation. Delayed MemRd completions are problem for systems with a low Completion Timeout (CTO). The current driver checks the MRPC status immediately after submitting an MRPC command, which results in the MemRd TLP that's affected by the above limitation. Remove the immediate status check and rely on the check after receiving an interrupt or timing out. This is only a software workaround to the READ issue and a proper fix of this should be done in firmware. Fixes: 080b47def5e5 ("MicroSemi Switchtec management interface driver") Signed-off-by: Kelvin Cao Signed-off-by: Wesley Sheng Reviewed-by: Logan Gunthorpe --- drivers/pci/switch/switchtec.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 54a8b30..d2bca2d 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -134,10 +134,6 @@ static void mrpc_cmd_submit(struct switchtec_dev *stdev) stuser->data, stuser->data_len); iowrite32(stuser->cmd, &stdev->mmio_mrpc->cmd); - stuser->status = ioread32(&stdev->mmio_mrpc->status); - if (stuser->status != SWITCHTEC_MRPC_STATUS_INPROGRESS) - mrpc_complete_cmd(stdev); - schedule_delayed_work(&stdev->mrpc_timeout, msecs_to_jiffies(500)); } From patchwork Mon Dec 10 09:12:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Sheng X-Patchwork-Id: 10720509 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7058C14E2 for ; Mon, 10 Dec 2018 02:44:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 608AD29FB3 for ; Mon, 10 Dec 2018 02:44:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5491429FF3; Mon, 10 Dec 2018 02:44:55 +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.0 required=2.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 C6E0D29FB3 for ; Mon, 10 Dec 2018 02:44:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726447AbeLJCod (ORCPT ); Sun, 9 Dec 2018 21:44:33 -0500 Received: from mail-eopbgr820081.outbound.protection.outlook.com ([40.107.82.81]:2273 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726395AbeLJCod (ORCPT ); Sun, 9 Dec 2018 21:44:33 -0500 Received: from DM5PR19CA0008.namprd19.prod.outlook.com (2603:10b6:3:151::18) by DM5PR1901MB2007.namprd19.prod.outlook.com (2603:10b6:4:a6::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Mon, 10 Dec 2018 02:44:31 +0000 Received: from BY2FFO11FD028.protection.gbl (2a01:111:f400:7c0c::140) by DM5PR19CA0008.outlook.office365.com (2603:10b6:3:151::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1404.17 via Frontend Transport; Mon, 10 Dec 2018 02:44:31 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.99.221) smtp.mailfrom=microchip.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.221 as permitted sender) Received: from AUSMBX1.microsemi.net (208.19.99.221) by BY2FFO11FD028.mail.protection.outlook.com (10.1.15.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1404.13 via Frontend Transport; Mon, 10 Dec 2018 02:44:31 +0000 Received: from AUSMBX3.microsemi.net (10.201.34.33) by AUSMBX1.microsemi.net (10.201.34.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Sun, 9 Dec 2018 20:14:24 -0600 Received: from server1.microsemi.net (10.188.116.209) by ausmbx3.microsemi.net (10.201.34.33) with Microsoft SMTP Server id 15.1.1531.3 via Frontend Transport; Sun, 9 Dec 2018 20:14:22 -0600 From: Wesley Sheng To: , , , , CC: , Subject: [PATCH 2/5] switchtec: Set DMA coherent mask in Switchtec driver Date: Mon, 10 Dec 2018 17:12:21 +0800 Message-ID: <1544433144-7563-3-git-send-email-wesley.sheng@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> References: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131888834712196847;(5a93feec-e11d-4f7b-166a-08d09f1f276b);() X-Forefront-Antispam-Report: CIP:208.19.99.221;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(136003)(376002)(396003)(346002)(2980300002)(189003)(199004)(69596002)(26005)(476003)(486006)(450100002)(126002)(305945005)(81156014)(81166006)(8676002)(50466002)(44832011)(50226002)(11346002)(86362001)(5660300001)(8936002)(36756003)(77096007)(48376002)(2616005)(2201001)(446003)(16586007)(51416003)(316002)(54906003)(110136005)(356004)(105596002)(106466001)(53936002)(68736007)(76176011)(2906002)(107886003)(47776003)(97736004)(336012)(4326008)(53416004)(498600001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR1901MB2007;H:AUSMBX1.microsemi.net;FPR:;SPF:SoftFail;LANG:en;PTR:InfoDomainNonexistent;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD028;1:zt5ehEm8pidLd07fXSEKgpvvZwRAShG84aNNoI+ts3hztwdcqCPw+ZOJ5aqe74qr6Qe8WWiJONY0s8WFXtcukz4txaVkDg6XOAE6BQmXhNMAUUhu0uA20eoQG/XDYNV/ X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1d63412-8838-47ab-56ef-08d65e496953 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(5600074)(711020)(2017052603328);SRVR:DM5PR1901MB2007; X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;3:Nk1t1U3DRnhb0uKxkjX7Pvw1rCbrUcb9OPl5SINseU4ifPE3LlUfdRrF09LxkBpOhfyFZUfEO82GWNpIceZnUMDQ8vcP47VMI9NODG3NFPsDZIVGsZFmAXWAOcQE/wXCWZqNtkyW8WTUkNvx/bYNxaeCnucwVKIFWsEsUUYpp8yW71F191J2mA9BtpiTvdfXXk2tbmpgJRxoGfItm3KeAYgxVbtfmml03kevEiuS8QTzl6exbiGPyA2ticCo1bUzjk9Qengr3CZP1E3lUuqCHIiVuUhxz5y1Mkd+EKG/tTiCrB3/aYhtVVWqUo9dvfmfB7Z/igO0ut5Ks3Ve62GgEDQ/OG7piyRpdrT7QBujrxY=;25:O3wW+1Q+BTb8GUyuVUaPa/X4x5vI8fThieKjckJNQZHVJLugLTyHKH3HLmJfOcIkwYRYd70cNZVNAYNpQklwpDqv8EXguC09OlYFWb4lXfC+ryrohC67UBtQ9bkXLKb3yHJyBth3j4F5X1EugK8Le94FGt7HBbU00HfdKORyyHOM7wtKDcJEat5zMaN0sCYguOCjIY1zTaxNtWBzgfoGINg5Sw4CmCadezhtO8gwJaq4jSzSLwVN6bqolcwZ2CfNoxsjXDGxiSdUEXTC7Z+NzkG8XoVWk3Rs+gLCLkhZ/q11bUrNV+ALfwbH5VZaC9cF8Lq6LGzsq6W/utqqQy/kqw== X-MS-TrafficTypeDiagnostic: DM5PR1901MB2007: X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;31:ujgk1ycgrzgLaFRUbxokaDAQBUFyT/jrRQvbDZAHTRh+EVlvQrJNlZhcLE0y4AcT33LhT0NV3bkTPvo44SmzW2cpJiULlnorT91vF1onYr5lHnOs7guU9my+loht4R0qG1I6vgwWt+7lMITQo//oXSVn0E5gzehHStdZZcpaqGFIXrX668/2+pzfLduSDEY/0wz4yvcTlu78cYEmFoUd3PsjCZhX3kUAtLu3mOkiNdQ=;4:OVZ0LME4BVU33tKGfm3riX7p0w5IKmTMy4UMO3/z1voDXWgjUGoDgDKfwJVOwgANPt2saO9FSmS5Vm2hhV6BBDiIIJU36gg+xtTsHgQV3GB+TBPEedRUyT1i3uV9jJorXVZnRpsMykl0ghDSEeT66mLt2TCwcYvP8GcqXs1zxMftGxiFXAgyKqoPq9RoTVmJk8Z3nMfpzVLJ0iDHvcS58uPuAuiW40xx8YitxMz4xUHYugpsmKWimTOCFCG/dTzwKzYCTend90s/4RtqRu9cdQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(3230017)(999002)(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231472)(944501520)(52105112)(6055026)(148016)(6096035)(20161123556025)(20161123565025)(20161123563025)(20161123559100)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123561025)(201708071742011)(7699051)(76991095);SRVR:DM5PR1901MB2007;BCL:0;PCL:0;RULEID:(400006);SRVR:DM5PR1901MB2007; X-Forefront-PRVS: 08828D20BC X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;23:56vz6k6zCdO2f3+z/vTDVGUcuVukGHI/ZCnH8BK2df0WuSIga2rVIb1u1xyhsiqGq1cJvMo104ZbBovBV8udRRq7bfDf7k+jgpPLtrk+oDgVukt6VYExv2776+W3ujbrx2gMQ5DOMhLfqU9eWtSastx762YdUJSMqhx/KmM2s4bUCHqjUHVOt80trfT5ClMlXz8qgYGYy1/wd6qQp663muOK73SLWXN7oKMDX4JnPkv6DFGbTNSgxQvPzujmNvoca2664ZEkxMTYnUnG2tPxtOTLKsZZ77RXvDqNEPuVF/ZYPhKnesc2ufFHBfcplKqiJ6mVi8HYIhqNcWA9znjTD/bOPD17amK0htTl5Ot4emj9+TvMVeJyyCWhIeN9W4o847YXW9q8X5AoBSKIuUC85uZLRHDuhlToomUpWDrUWb2OkSMaLTuIpOeejUeuhrv+ZrvFjfgNtUW5QacmKkduViuontAdpOwhbK7SsZOetE0zRXfuVFv64uZtfua2P8q7Ev/Q6N7MBugLBd/AD3thVUbhfOJZZ8/op+7+SsRWK1xaUmLd5Sl0WUwolCrqnRnaPvaTptAXpy+RCyKd2X64U8orbOq0M84RduS8LyInnwpaVA6tyqMdGTXcK+I1r8ZNL4lsuL9CPG4RY70/NyuoM9AKT17dHJgxCpeS1nhKZFdZFBx7NsbfOE49UFyZlqESDYZ5F1/EP3Jm83Wyy+TWSdRxGYiTZoqHo1i8yZxgOrMFHXT7kdyOZC73OVHwULUca6Aq67h++QepPgAvHWgckGO5fV1mBGHiafutBxieKhd3MBwQ4RlstuGCOokdIAkrf5h5QgGJrCPUN9V/QOVoD04glCzKzJ37pOYNkbowGqNon5tDh6xl+JsfsQSI1wSfZnTthJlttbh/O4ntVmiWTZ3Em598l2YuZtta14wUBgtz6soEdwGAI1CmyA4frFaruxkVPAikE9fNCFORy3a55bbGcti76iK5bVjgWEmd7BtBmgAQ0wezIFCBZE04hg/E2D+GFbH9mHN6Dfv0Ka5DwA70h+hXXfp37r6VSIaiMe0cakTwEqiGAp25bjjLkx87scqr5L5t5Tb4mwghHt/mDuZlJnSkNBV6oHMDUQFVO3LxXakc1az3ZnUYc6TVFXC5 X-Microsoft-Antispam-Message-Info: OI2DrL49Td0rmDXKH/xXbWiJu4/T+fsJxMRRmfANQnk292w/JeXvcOF6skAWc7qnMm6WF0pxOzWUjZBz7heDWoxfL1eKKLlUX/hW6EAdW3iX0T+n3VJ9BgUibJtUJoj5bxsygDfz/2a1oDDzyNdG5y01UPOxNz+0t4Pny6+zQ+ajXSe6td3HnyLIyBNpXP9eBrUn3zQscCkJgtdtmd1lYSD6ZMabdb5dmRuDtIa7iZ7R/3SmTYu70AHuar76Xj0V9GGHRx7ffq+N0F9OgwmSUIxVyHisnlDCv707iQEQCXaOTaftWx6dQ50Q1lAKoxCK X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;6:ji/4NQJJzAPHz9Ym+H+575VpPgguaknOfULPc0/yBqc1Xg3InJnFlsNH3tBi+kZhnz7AULhAjpHnd5pJ4S0tWqs2TM4evlz7r/tQmFBKUjiqGBgGLHcorUpGWIIoVodr7aQ82w7UDH9akEaokr8QyA06PpvbZHgjsJIev0fX9EDFXbrglnGVoD8NWZSaGJK+1Ac/li5Pi70W81C19K/wBY98YnFNpuOZz9rPhuw9ZDVPPZleYXd4pMvu+FxNwdzVYqUlCEAC9YkY5ChpQSkkOlcovS97NHtl+WX8YneshD4sz65yAG5xSXAlVo9c+UCicuFto3Y9LIEs7K6t9wj5jOUfaQoU5jI1IuWxJm/Qe/T3IV1qdqiditg4NQ0WuRmLRONiGnryyayLaGdIJFz5dCuzFNvQuQc2wn+QEi1Gz3y9NfwVJZNWV6EAeDG4edKK8eLqAdWjk8Iw6EHrClhQZw==;5:iuS1rsGpyG2ULrfmntwyhNSR+0j+01seA2zx6KLQJmIZ4IdNN+vZZ/NQZ9fSQL8WYGvfPyofGkpMcxoZa6FMHnJsVLTZ/Mz/B5KAfYSyz3CpWrBBO5y1NHqwHmOgd+7M7IJyK7G6M6RlyB+WNxJ4aoiVgtRPCjUqb6BMD8nYc2A=;7:/ANtPG7cPaxro8WMV1AbGB50ZWl/ssTjdsxyp8hZ/yblrLYUlFquz4R2EyKasRspv7h9uRUl1jG/ds+QkrWbfXDphE6Uplze8SgZrCBRAbgyy03w9WZVajJ/uYI6vJ4vFAXIou+4AIWFVnrb4qsHiQ== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2018 02:44:31.0790 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f1d63412-8838-47ab-56ef-08d65e496953 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[208.19.99.221];Helo=[AUSMBX1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1901MB2007 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Boris Glimcher Switchtec hardware supports 64-bit DMA, set the correct DMA mask. This allows the CMA to allocate larger buffers for memory windows. Signed-off-by: Boris Glimcher Signed-off-by: Wesley Sheng Reviewed-by: Logan Gunthorpe --- drivers/pci/switch/switchtec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index d2bca2d..480107e 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -1237,6 +1237,10 @@ static int switchtec_init_pci(struct switchtec_dev *stdev, if (rc) return rc; + rc = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); + if (rc) + return rc; + pci_set_master(pdev); stdev->mmio = pcim_iomap_table(pdev)[0]; From patchwork Mon Dec 10 09:12:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Sheng X-Patchwork-Id: 10720511 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B730D15A6 for ; Mon, 10 Dec 2018 02:44:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A3B3F29FC8 for ; Mon, 10 Dec 2018 02:44:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9727029FF2; Mon, 10 Dec 2018 02:44:55 +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.0 required=2.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 E71BD29FC8 for ; Mon, 10 Dec 2018 02:44:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726395AbeLJCoh (ORCPT ); Sun, 9 Dec 2018 21:44:37 -0500 Received: from mail-eopbgr820048.outbound.protection.outlook.com ([40.107.82.48]:17536 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726461AbeLJCoh (ORCPT ); Sun, 9 Dec 2018 21:44:37 -0500 Received: from CY4PR19CA0031.namprd19.prod.outlook.com (2603:10b6:903:103::17) by DM5PR1901MB2007.namprd19.prod.outlook.com (2603:10b6:4:a6::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Mon, 10 Dec 2018 02:44:35 +0000 Received: from BY2FFO11FD024.protection.gbl (2a01:111:f400:7c0c::150) by CY4PR19CA0031.outlook.office365.com (2603:10b6:903:103::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1404.17 via Frontend Transport; Mon, 10 Dec 2018 02:44:35 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.99.221) smtp.mailfrom=microchip.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.221 as permitted sender) Received: from AUSMBX1.microsemi.net (208.19.99.221) by BY2FFO11FD024.mail.protection.outlook.com (10.1.15.213) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1404.13 via Frontend Transport; Mon, 10 Dec 2018 02:44:35 +0000 Received: from AUSMBX3.microsemi.net (10.201.34.33) by AUSMBX1.microsemi.net (10.201.34.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Sun, 9 Dec 2018 20:14:28 -0600 Received: from server1.microsemi.net (10.188.116.209) by ausmbx3.microsemi.net (10.201.34.33) with Microsoft SMTP Server id 15.1.1531.3 via Frontend Transport; Sun, 9 Dec 2018 20:14:26 -0600 From: Wesley Sheng To: , , , , CC: , Subject: [PATCH 3/5] switchtec: A temporary variable should be used for the flags of switchtec_ioctl_event_ctl Date: Mon, 10 Dec 2018 17:12:22 +0800 Message-ID: <1544433144-7563-4-git-send-email-wesley.sheng@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> References: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131888834751526049;(5a93feec-e11d-4f7b-166a-08d09f1f276b);() X-Forefront-Antispam-Report: CIP:208.19.99.221;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(136003)(376002)(396003)(346002)(2980300002)(189003)(199004)(69596002)(26005)(476003)(486006)(450100002)(126002)(305945005)(81156014)(81166006)(14444005)(8676002)(50466002)(44832011)(50226002)(11346002)(86362001)(5660300001)(8936002)(36756003)(77096007)(48376002)(2616005)(2201001)(446003)(16586007)(51416003)(316002)(54906003)(110136005)(356004)(105596002)(106466001)(53936002)(68736007)(76176011)(2906002)(107886003)(47776003)(6666004)(97736004)(336012)(4326008)(53416004)(498600001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR1901MB2007;H:AUSMBX1.microsemi.net;FPR:;SPF:SoftFail;LANG:en;PTR:InfoDomainNonexistent;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD024;1:mP5+Kc4ulRgyM7vvowmvtxVUTFwl01AgSsh42CU5wC0o4YzQpO8z4amj6T0L0j4qlYUERoSrGC/NKSluYwauSm25o5LUcSs0xcGqM3pBjU4i1NYMHUsmoBopYS6s4YD8 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a6b81e1a-15b2-48ee-11db-08d65e496ba9 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(5600074)(711020)(2017052603328);SRVR:DM5PR1901MB2007; X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;3:CXa+9AQpJCHvSkaCnKd7tMwQ46vUzfx9XMn4+l7cWLsxEr2Qd01xR1NnCfQauuaKdcBP2c+cVcW0XUAJZUOBkrXYckNzeYsmBlKtsOFCHNpXK4LyQo76QL4NVCBNbDzGhC9K992417mzNjWYlc5CUyzCvshbjWYNjPuRRn6PQ7SPf5IeDCFl8LEewcVz3Gk8YZntyQi0+UnGhVbAtfuypFUdhrUaXFnLAl5VXPFIZtjFbXLMcQ699glcmG+ea2U6g+Wn1fGClC5U11cFmD70jqPX7T9OXMIyDkqS1fWiZz07QwaOmo7PmcwtfLlXy4jZeyrDKdvEYH/sbRyCNV+du1Kz+1WfJ9kGC+WZpgjX8sY=;25:Cj2dUT4OyGjWL1mHZ3cnZeOB/XS9P7anq8JpbcPWeafUg2STTLByQxq6zyheMaSSD2ljgVFyHNbysMVojKIS7UQfo5oON5p4+t6kEA2VnsTFPnYvr0qLngBhvMZzEuWPV5jRGFT0jk1lugk4nV4IM9QVBqCyzUY6ZvAby6YxpBEdCbcnlGOKF0OyFJtDUCM+3BPa4rPTyUqbB89LQgxy9C8ZevsJ/GCAEQwy8Hzt7chtriBWcBoPG1bVuE3dG9A/n7jjYmrnBIzkWC8KNkIwaWk/kF+tt7L/ouDSnvLVs9Wi+Ce6eb90O3/JMfCQVHBKvze43tKt29BjkacBAo/kMg== X-MS-TrafficTypeDiagnostic: DM5PR1901MB2007: X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;31:71WCnLKn7DakJsqpSxl/r/kvW10UW+BUX0zXljENYEdDt4WhTrMHjsarioceC1tpKoM3nj5GyUUr/kDXPUeIPihALmAVLtrKwwED5DNm0PcezVN6aHb//vm3yHQi7T573buCsjJqwR9Mim/03feXCkfZlWlhXvgYVgADIf/G1VvUrQAYO50BKsmRcw9GjDru5QFLzrTUMLlnkun3s2iCIDZmW5oYpq6w7OjQDmlPnAI=;4:3gZwIqs1ThaVawlUi7XJeU7aMRJx4R+Fep9OqUWbFZp6GMR1lJx5ieagcEb+K35Dz6D74OIxDZngvleifbU54dbce2OaqeOQBeAAE2NErz/wlzv6pA630lzq8tjzNxQNBhqXlTVAVmb7WFwFTqItrMbixrRHw0zcBnYntfnHHPnHca3APTdzK9RtJVHyMzlrKekgAR73uZsIpX7D/adFT7jEkrwoAfIabda32qTexGyHvYosyb1+80L3ViWDRY9OE44PjzJf4A4DgkkvPtxo7g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(3230017)(999002)(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231472)(944501520)(52105112)(6055026)(148016)(6096035)(20161123556025)(20161123565025)(20161123563025)(20161123559100)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123561025)(201708071742011)(7699051)(76991095);SRVR:DM5PR1901MB2007;BCL:0;PCL:0;RULEID:(400006);SRVR:DM5PR1901MB2007; X-Forefront-PRVS: 08828D20BC X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;23:bzsHsQNKTA5hqXPQNehR5E+gmsUfNlSQIQB6EE/N2LK/gvsjPfotv87ARnNnPrq++rA580p9CGphrd+/Uj6f143dOiZqQO6vCyLOJ1d/DO9HQ+o1UMg9NlTX6uVNQWK6IjM8eNwei9FB9Xwsm3M8aTCgsWrjRDY/KsEuxIp6voQfocx6am9djLAxH6hY/o2ObH0tkEGVmDEnbBzQ+ztFBbglYz44cMzHrIDh5wXrRM1vmYvIeK0+bjNhfKeHqCCKQj2r2VJHZCbXsvNSYugoqp5TgjAkl0wyp8hWDPuPFWo3Jm/cepvsmjzBb2EGkZu0ftZ4NOHmXR7AxoAORrC7ELhPdTd53OpmFnQye76Tj1ibtfkHfRBcUkoRY6HUKCtHG30/LEg+R7f0uqcqXoq2Z4P/nWoUR9YX6w/9pnOnV550CHYUxSNbutOcZJL9QWjLP+RW/XtaZFsTORmws8nMLR9xKLHJoJRPaXKtbRZUSbjjdxJGCDtPd0EmdgtytKM16G8NsZ7f5YZoqrs/7OYVj1chsLkll19xGTk0RBdXRQDagrcDB7e/MrWiOQLEHX32ZdriDU9xsA7dNZGF/h9vnNvjRi9kvj408c5cwR1FIx068mUjQ8u9a/AVdqlC5a47af4ai/rie8OUbUYAwcKxxdTt8L5BVq2jydiWAWzxGeNJPyvAXDvvGaREiDl3lZPkX1seNzr4Pl7bh8BkfHsfKFSm7z2oqu60MrE0G7VRCLh5sgcrAxgZkDz5hPeDyOVvFGJZlX2ieGl/rtCmF2jbh0j6HrhpFT+R7kM8PxoJ09l1RgMjBMrR0MNOCvPck4zkg5/JTXMZcSbEcoylL64QmZBIkILdRD+F7YYtcfrY2ujPVxk974mRi0EOXePb/dYN6Qxdrfpz5RTWgOHq3Rz3rM4kc3DCP2sI/2B8hU9CwK6TRhAZkAUM30i670M2Zd3SAVCLcDquAdzkLepVa30WmVW7dVbEEWCWPqOOtEfDE4BxHAXxfV6ytGZh0wUst3EPH8xz08TwoKlWk+BJ95swLSfMHqfrtmPANHvu68sNlS8mE623wZmD+Rm/VA4v6DNIa6emvaXgWcajGFGnKNr1In6VdIvXDDIChp+32ggoXuKiUiiF6yYUpIxmkzb1v0GtUz6bWcCupM3xIR2ERh556A== X-Microsoft-Antispam-Message-Info: 8DRQStJqWtP290ChEERjWmPaJxWXYC52I51Ym32ZjnDG5sDD2A/Ry2AAciIQH7RP+YFA+M21nA2kZy93jt9RBUdq1cgCFdqrJ9WajP4I2fvpVul/0SnjQq+/F6390UOEIKUN3RReIUxH3bs8Seto+nLVzV+/HlKxNfA47PhjgIAtjDJq2dErc0i3XliV2/wV+5+R8gvIrKXgZ2yIGRnCb6Kv8AlOUNpoALHaLUxfzSgG0Rebb0TMlfRgWgz3mpnBYtCrbwlN6B0RtyXRxSRKzt/C8C8QEY3TMGbZLakuCNRUSht5Rv8l4tta7QvxVsxk X-Microsoft-Exchange-Diagnostics: 1;DM5PR1901MB2007;6:ITMIVW3WlTb9hNvcPX85hPlVxT0lN+wqSHMTG9F/MZg0iepj1N4TtOEWnJQXQFEfDxQuhKRlgGygrd1FJadE/3Eyr6j5W4UGm8XhzE2oAvcG6rUBoVUiyQki6iLmhRDJRKeDntTt1+thiA8e4WHaE89s0LdE+Hw2KnPS/dRJo3AZ8rZ/QjFwedfMjhc8q+3oYrHvCo/iD6n+TsT6+jDPXE6eQbrPKcY7Eb/P+lM8dzbfd3JFtjl+ClTnQvDt9rodjpTkwjrf5eaD/lSXZPvqr7USYuBfOmKfb8CUzhcZ5D5d1w9TYGAUpLm+78nrjl0/w1+ocMLYDSjycTxD1Bpfb4PPAMmHBiAgSL9HDjG5qaapU51vWqZU/Fql9lVf6KOcgKbtBnihxeQzVCsWHgV/6ai25UcH9ZzAUPDaj/iQQQHl+o31OYFhOn7KW3g+wgEcqOeAF+5liV25h1zBznL0UQ==;5:VOymrfHEmwJNNkq4LlhUcr2W1xpZR06DBjqQ86UBN4L4VSZbU0mjubKrthpkDCwmifzSGAZ1bjvEoYsyPQfx27MTJ1dexpkbLKUhgGCX4JTRsdEWffbykZqQXKTnAm/QJWtkKeD6AYYf/CIalocJaUlITf+kTyNhWlpJCQI7oJg=;7:rSoHgDMnDxZdRy0nfDJlq85xRL+/gDwnYatG6gXPQ0eEZcBbs86jnpBc6yJJnFX8TevZeY+hIpCx2fLj5X0SMRZQYcQuzOc9vcfqVWikqgd5QHrH4aV3R9lOgdMRjZIuToBmoMrymTDWZbNLH6WUQA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2018 02:44:35.0275 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6b81e1a-15b2-48ee-11db-08d65e496ba9 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[208.19.99.221];Helo=[AUSMBX1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1901MB2007 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Joey Zhang For nr_idxs is larger than 1 switchtec_ioctl_event_ctl event flags will be used by each event indexes. In current implementation the event flags are overwritten by first call of the function event_ctl(). Preserve the event flag value with a temporary variable. Fixes: 52eabba5bcdb ("switchtec: Add IOCTLs to the Switchtec driver") Signed-off-by: Joey Zhang Signed-off-by: Wesley Sheng Reviewed-by: Logan Gunthorpe --- drivers/pci/switch/switchtec.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 480107e..a908670 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -796,6 +796,7 @@ static int ioctl_event_ctl(struct switchtec_dev *stdev, { int ret; int nr_idxs; + unsigned int event_flags; struct switchtec_ioctl_event_ctl ctl; if (copy_from_user(&ctl, uctl, sizeof(ctl))) @@ -817,7 +818,9 @@ static int ioctl_event_ctl(struct switchtec_dev *stdev, else return -EINVAL; + event_flags = ctl.flags; for (ctl.index = 0; ctl.index < nr_idxs; ctl.index++) { + ctl.flags = event_flags; ret = event_ctl(stdev, &ctl); if (ret < 0) return ret; From patchwork Mon Dec 10 09:12:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Sheng X-Patchwork-Id: 10720513 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DC82A3E9D for ; Mon, 10 Dec 2018 02:44:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C6FBF29FB3 for ; Mon, 10 Dec 2018 02:44:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BB4B029FC8; Mon, 10 Dec 2018 02:44:55 +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.0 required=2.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 1464129FBA for ; Mon, 10 Dec 2018 02:44:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726488AbeLJCon (ORCPT ); Sun, 9 Dec 2018 21:44:43 -0500 Received: from mail-eopbgr750079.outbound.protection.outlook.com ([40.107.75.79]:23180 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726461AbeLJCom (ORCPT ); Sun, 9 Dec 2018 21:44:42 -0500 Received: from BN6PR19CA0089.namprd19.prod.outlook.com (2603:10b6:404:133::27) by DM5PR19MB1322.namprd19.prod.outlook.com (2603:10b6:3:bf::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Mon, 10 Dec 2018 02:44:40 +0000 Received: from BY2FFO11FD009.protection.gbl (2a01:111:f400:7c0c::158) by BN6PR19CA0089.outlook.office365.com (2603:10b6:404:133::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19 via Frontend Transport; Mon, 10 Dec 2018 02:44:40 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.99.221) smtp.mailfrom=microchip.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.221 as permitted sender) Received: from AUSMBX1.microsemi.net (208.19.99.221) by BY2FFO11FD009.mail.protection.outlook.com (10.1.14.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.1404.13 via Frontend Transport; Mon, 10 Dec 2018 02:44:40 +0000 Received: from AUSMBX3.microsemi.net (10.201.34.33) by AUSMBX1.microsemi.net (10.201.34.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Sun, 9 Dec 2018 20:14:31 -0600 Received: from server1.microsemi.net (10.188.116.209) by ausmbx3.microsemi.net (10.201.34.33) with Microsoft SMTP Server id 15.1.1531.3 via Frontend Transport; Sun, 9 Dec 2018 20:14:29 -0600 From: Wesley Sheng To: , , , , CC: , Subject: [PATCH 4/5] switchtec: Improve MRPC efficiency by leveraging write combining Date: Mon, 10 Dec 2018 17:12:23 +0800 Message-ID: <1544433144-7563-5-git-send-email-wesley.sheng@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> References: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131888834803174920;(5a93feec-e11d-4f7b-166a-08d09f1f276b);() X-Forefront-Antispam-Report: CIP:208.19.99.221;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(396003)(376002)(39850400004)(136003)(346002)(2980300002)(189003)(199004)(316002)(16586007)(97736004)(110136005)(54906003)(105596002)(50226002)(50466002)(486006)(68736007)(2906002)(106466001)(44832011)(5660300001)(8936002)(36756003)(48376002)(4326008)(53936002)(51416003)(107886003)(69596002)(446003)(126002)(2616005)(476003)(14444005)(11346002)(356004)(6666004)(47776003)(336012)(2201001)(498600001)(305945005)(81156014)(81166006)(76176011)(86362001)(26005)(77096007)(8676002)(450100002)(53416004);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR19MB1322;H:AUSMBX1.microsemi.net;FPR:;SPF:SoftFail;LANG:en;PTR:InfoDomainNonexistent;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD009;1:gpe02ZTZRhFAqJsZ4NJZTl5kqe9d5ipuD81Hd5/ag0Z79iEm3yPh2r+o14VHHFNXPWIhFuPgR7AyhigW94D2IfFJetJU/j8aT10oYUe/0bCaKMRpQRUqDaDEKqUOX067 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 550812f8-a0a9-4678-a44e-08d65e496eb3 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(5600074)(711020)(2017052603328);SRVR:DM5PR19MB1322; X-Microsoft-Exchange-Diagnostics: 1;DM5PR19MB1322;3:DwJWBzQxt0bXtctoSMI32I/6FzWNMWYckeKPfZo/F5Zl1winhFyyjQditziuMkqp/+o5PAjLY0uhMzvrs9kwTXSajwqAHWbS0lkFvZVuXkM38dup2J+iKPOezc5fIAavUsxsXrphxMw2L2RtDlo54Y3XcQOQIx0OKE9FZ8pXHG2ZjZ31lMxGxDb09jucTtIQnQB1imInsHyzZdKd4OWAJ/i0Tra1Ka0zGA7BOVd1NZOTQVAHEW2aQF2IVVfdVLOKLrKJsuc9xefrwnqD9mMetCo6oVdBaF5nK28RrM9N4LDVQwqoepf6T8J9iIBvW2IjEShLaICH5Ee4JcOHWLUPh9Fs64VSnSYZgCKiBM7Cqt4=;25:pOoFl9jvoJ/ghRoqhJ7gku2UrrGIPUSa7c8NTdobaSFUF6+5a7E0zka0+QFVDTQb2mf+ecuFjp7VErCpfOYZUcsdBtwiZK8PV5nNbi3NyGVNTUXz7eEXUg1nSZHoGTsWkU/IGGB6jt7z8Pjh4uCKznR9Kwrk0kkiWqcfCFwjuPmgrUtSCaCRqzu0dNEut5Jx/LoLtqDbSd5LES/1qKr13wU4gIdsgyuF7G9OfPTMq/HjEHUL83boGt4H53sjyJ35hgUrcN/psgnYj0BEzNh0wWcS5FqG0/B4SG1yC62cZGDeZ58ZkYpv9sJ+p6TY+aenrX3IRJ/D4EUQ0RMIIImmQw== X-MS-TrafficTypeDiagnostic: DM5PR19MB1322: X-Microsoft-Exchange-Diagnostics: 1;DM5PR19MB1322;31:nXjb+E/NoMClyN3D/PpxDJgYlCXULUvGdxEr0DBaZuceH3gX1TYlkVp7l/DgLJbhq638JJpFVvZ1+8LsSmyH7n01qt5E7rPCS+Ls4+eV4W74zHxdVS4OoXtjqSSTr1MiKZz0gzK4b7P41PNvP/sMggfcnNZ/ZgVguZ4jHBkG7i3BfSDT/lvWBdpE54/wySnlTfgHCM9r7NnqacyWfqvZb+Pb20EA6613JU3wKeGxMYc=;4:+BDyp7B9GeY4z/cPcCPx3+DOqJTllhRzpLIHzoSs0NItuhbPWFqYaJkO6cEHoL39s+VGP52GSYLJZktRW9SiYgc0gUslVahbiWdL0WVIuPtVDng6cTEAk3nsHy8Ci6ao87q4ExpslYqmlcdBemAzeILhXRGSj59JiwU8qEAQb6RtsX7PNYmqqDhNbP0Fohts3l/0NWSOan7DFsQXJs6N8timsQw12ZiyYrwXDW2KvfoSv/FImlQ6Oz/KYFxdZ6XHYoBxPOzfPj6nZAbqMROfwQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(6096035)(20161123556025)(20161123561025)(20161123563025)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123559100)(20161123565025)(201708071742011)(7699051)(76991095);SRVR:DM5PR19MB1322;BCL:0;PCL:0;RULEID:(400006);SRVR:DM5PR19MB1322; X-Forefront-PRVS: 08828D20BC X-Microsoft-Exchange-Diagnostics: 1;DM5PR19MB1322;23:QHKFO5sygocHyqRVrdGeY7dApZQTLdOXQ1qHGhM4CssMeAO3oxDM808kbW8SZujspp/CVbvl3uUbXhUx69xEdZOHWkmbhfBPDuDuIxaCviIYP1U6rI+G8T5X5VaueEb7jZ8sDPZt7URwk1gb5J0uaID3hFfvj+uSz9iVjPtt47FKqoQk9yNyOm55PAD+NoXWtd7SZsDs825hi5yv7SANX1lqv38xyXmI3paRtrRz+d5tQ7L6qiauIWztJkMLPnjxGwDIAaPD/+R3RA0fo7HBX9146mZAoXFYTWMU09nHuYRRrd+GDhQ6+YR3AaG2Grr08KhJFhQ5FE1Wa45smgbdb/cPW5SH9xh12WHkdOol5IJFzW7pegT0CZubfZKicslBGsw5RcWCHMBs9M1w9kbU9+HwQxEVjHDhIezUKsZPa3y/N8eEH+its7pDOQx42mtVh3thmyuOZEV8IeXuWfG/IXDgXfoLhB3664dBZfRGcZYNBVpfYgtMiae40U3FCOLnTjxMgr013GY7oq0y4HVEYj0bvGVgZWndnCLigimuFjy/TaQRBKSWbPs4ErEpcF0X6xWnFYEkiW3iieE3JjVsWnHulbF/WGf3S9lV+Mbwi5IVzF7h+YH3SAF7UR46Tin5OCR4KHCOZu+JOlmVKs9czl2IyeybmUoO3bpQ2BJO/UwccPpExvRRIu12NtbKBDO4o4r2tfa/ksoIK8cc7sCYH0VtWwYzOPdO7WekexlHh2CerawtHyVpTLgbOPgGxuU0s0/WqzSvnRDGy58Eet/kW04+uFHhAZvVWaA4e9KUGc/ZV57A1mDYse8RP6DZbBDum/CXvAqwwMXsnua5vi7a9+PmIlyRyt8sWsSmiqJuxm+yq4XxFCMwg9mXLdvDtbGDJL1nn3CGh9Q6H6zvkiWTNZ+POjHh6Ltr+FWRKjYWeqGrWNAkj/5I4FqI1QzK14BrK6YaRVfiK1BmhB8QV9G/xpRF+uJPw8qW5qPo+Zpox70QSmPpiVAgNirhignRteMvKJ0mr4VoUVSwZCDQT1KuUyC7nwbrtmra4HDbdPbY3TISyUQKsaKP8fJZXbvR8ipJvCsgYkRaev0TQN5vQv9baB2oHUP+LihRKqImJq4rzZyc1IJr1/+RK35X7kQQDi7xljsV39W6GJA4abm25pFL/Q== X-Microsoft-Antispam-Message-Info: hnthwzDNFUmoW8ePGrWxtTpm4jjotZWEaLyvYBvRdopF8HocQ8TpIXbC35lty3kg2YY25QZ+EAmpi6gESypRCfE52zZ34UcG7xFOFyx4muXKPMn1Q5Lmu9RgNH1TX2Y5bVrHR9x54XAU9Lvf0ERCW5lo/n4CFvEgt8GeYWwrkaouQ/CpVn4y17JE9KeFb6c0QfB2oC7/bPVIEJxO+/8kEo6jS65st7fCZCedtBBFFUQE1FpEJOGgvqcMe0h8MD+WSheWKTfbdiQIltizT35yOG/UJx0602uKwDZ/aTq9T8S7Y8pqEm5NzRiAb0q+9cYL22FG8iygmGtP1f3VWED8EDXf9sw7mFYOIKAOGiaRj3A= X-Microsoft-Exchange-Diagnostics: 1;DM5PR19MB1322;6:RPtq0FsZ321Og9WZPwqzjNsTNBP2uXvxc1Ec8wFW0+dHyWe7sdc3P9dGbevE3uxtf5AY1n4M9c6gS6MgR++PFzAI/8xcmSb9XeDdXLElHH+6WQ25N32YELNTRKmiiSATT1z3DDqB3js9bC2bRpk9+pCE/1Ub7A5gaOHR5b59k+5SUUJEYjZRWQLhGt2gpwtj/pWRzOg/zH8MvLw1YthLGM377CG5qk0Nxo+OX1I93tLJXqzCGsLgg4gVRueM7Cw4RL1+2P7iIkgNufrQ9Ho3i1tWgexa93AX5j65rhbXZrBthPtle0ILBMB5sOFX45J0VEAGXRrO3KQSVKgrbcGxiciKJn/OqNvb3RqA2TOeS9MHUKlEcGrr/gKXpUbVVz9osczyRQ3QSflSMOfQBpXTeeVNOSboLr+tkJJIitdvNUMvGIWVuji2OCJXZ/yhcG9g9VeJEAjcz1A8A8IB2sl7oQ==;5:8AiiSwtbaSw3UaWgouOOL/cGxQlCQJ/fTj4WJQ6WiLKKi29LYHIPLk8pr1VxbjyykjlihyPg+jCcL0Y1ZCF6SreUUSMy9Ca3FcH9hw8ZwhQmtZEPQ7soDV8vYsUsEbPcqf2THHagaEiT0naJf1MXa4vvZbhTUCs7kltbgorRNkg=;7:xWCjbWYGQx/yH7ZDdaNLNhr3nyrhHylsyi1a2OZa3eg9BbRNJ0vT3RJDeGbn3cR4guUK8uw7xSUQvxrXQRl7UWG97cA1Hm1of522fV1Tl4ue39UlE12abuthT8Sz1OhZ4/V3mR7rg3boO+hwFqbO2g== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2018 02:44:40.1144 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 550812f8-a0a9-4678-a44e-08d65e496eb3 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[208.19.99.221];Helo=[AUSMBX1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR19MB1322 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Kelvin Cao MRPC Input buffer is mostly memory without any side effects, thus we can improve the access time by enabling write combining on only this region of the BAR. In a few places, we still need to flush the WC buffer. To do this, we simply read from the Outbound Doorbell register seeing reads to this register are processed by low latency hardware. Signed-off-by: Kelvin Cao Signed-off-by: Wesley Sheng Reviewed-by: Logan Gunthorpe --- drivers/pci/switch/switchtec.c | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index a908670..0b8862b 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -113,6 +113,19 @@ static void stuser_set_state(struct switchtec_user *stuser, static void mrpc_complete_cmd(struct switchtec_dev *stdev); +static void flush_wc_buf(struct switchtec_dev *stdev) +{ + struct ntb_dbmsg_regs __iomem *mmio_dbmsg; + + /* + * odb (outbound doorbell) register is processed by low latency + * hardware and w/o side effect + */ + mmio_dbmsg = (void __iomem *)stdev->mmio_ntb + + SWITCHTEC_NTB_REG_DBMSG_OFFSET; + ioread32(&mmio_dbmsg->odb); +} + static void mrpc_cmd_submit(struct switchtec_dev *stdev) { /* requires the mrpc_mutex to already be held when called */ @@ -132,6 +145,7 @@ static void mrpc_cmd_submit(struct switchtec_dev *stdev) stdev->mrpc_busy = 1; memcpy_toio(&stdev->mmio_mrpc->input_data, stuser->data, stuser->data_len); + flush_wc_buf(stdev); iowrite32(stuser->cmd, &stdev->mmio_mrpc->cmd); schedule_delayed_work(&stdev->mrpc_timeout, @@ -1231,23 +1245,38 @@ static int switchtec_init_pci(struct switchtec_dev *stdev, struct pci_dev *pdev) { int rc; + void __iomem *map; + unsigned long res_start, res_len; rc = pcim_enable_device(pdev); if (rc) return rc; - rc = pcim_iomap_regions(pdev, 0x1, KBUILD_MODNAME); - if (rc) - return rc; - rc = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); if (rc) return rc; pci_set_master(pdev); - stdev->mmio = pcim_iomap_table(pdev)[0]; - stdev->mmio_mrpc = stdev->mmio + SWITCHTEC_GAS_MRPC_OFFSET; + res_start = pci_resource_start(pdev, 0); + res_len = pci_resource_len(pdev, 0); + + if (!devm_request_mem_region(&pdev->dev, res_start, + res_len, KBUILD_MODNAME)) + return -EBUSY; + + stdev->mmio_mrpc = devm_ioremap_wc(&pdev->dev, res_start, + SWITCHTEC_GAS_TOP_CFG_OFFSET); + if (!stdev->mmio_mrpc) + return -ENOMEM; + + map = devm_ioremap(&pdev->dev, + res_start + SWITCHTEC_GAS_TOP_CFG_OFFSET, + res_len - SWITCHTEC_GAS_TOP_CFG_OFFSET); + if (!map) + return -ENOMEM; + + stdev->mmio = map - SWITCHTEC_GAS_TOP_CFG_OFFSET; stdev->mmio_sw_event = stdev->mmio + SWITCHTEC_GAS_SW_EVENT_OFFSET; stdev->mmio_sys_info = stdev->mmio + SWITCHTEC_GAS_SYS_INFO_OFFSET; stdev->mmio_flash_info = stdev->mmio + SWITCHTEC_GAS_FLASH_INFO_OFFSET; From patchwork Mon Dec 10 09:12:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Sheng X-Patchwork-Id: 10720525 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7EF72112E for ; Mon, 10 Dec 2018 02:45:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6DA2E29C9C for ; Mon, 10 Dec 2018 02:45:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 60D0629FB3; Mon, 10 Dec 2018 02:45:19 +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.0 required=2.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 9248229C9C for ; Mon, 10 Dec 2018 02:45:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726363AbeLJCos (ORCPT ); Sun, 9 Dec 2018 21:44:48 -0500 Received: from mail-eopbgr750055.outbound.protection.outlook.com ([40.107.75.55]:28457 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726487AbeLJCos (ORCPT ); Sun, 9 Dec 2018 21:44:48 -0500 Received: from BN6PR19CA0089.namprd19.prod.outlook.com (2603:10b6:404:133::27) by BN6PR19MB1316.namprd19.prod.outlook.com (2603:10b6:404:f3::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.22; Mon, 10 Dec 2018 02:44:41 +0000 Received: from BY2FFO11FD009.protection.gbl (2a01:111:f400:7c0c::158) by BN6PR19CA0089.outlook.office365.com (2603:10b6:404:133::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19 via Frontend Transport; Mon, 10 Dec 2018 02:44:41 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.221 as permitted sender) Received: from AUSMBX1.microsemi.net (208.19.99.221) by BY2FFO11FD009.mail.protection.outlook.com (10.1.14.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.1404.13 via Frontend Transport; Mon, 10 Dec 2018 02:44:41 +0000 Received: from AUSMBX3.microsemi.net (10.201.34.33) by AUSMBX1.microsemi.net (10.201.34.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Sun, 9 Dec 2018 20:14:34 -0600 Received: from server1.microsemi.net (10.188.116.209) by ausmbx3.microsemi.net (10.201.34.33) with Microsoft SMTP Server id 15.1.1531.3 via Frontend Transport; Sun, 9 Dec 2018 20:14:32 -0600 From: Wesley Sheng To: , , , , CC: , Subject: [PATCH 5/5] switchtec: MRPC DMA mode implementation Date: Mon, 10 Dec 2018 17:12:24 +0800 Message-ID: <1544433144-7563-6-git-send-email-wesley.sheng@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> References: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131888834812552082;(5a93feec-e11d-4f7b-166a-08d09f1f276b);() X-Forefront-Antispam-Report: CIP:208.19.99.221;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(396003)(39860400002)(376002)(136003)(346002)(2980300002)(189003)(199004)(486006)(44832011)(86362001)(53936002)(106466001)(8936002)(8676002)(126002)(4326008)(316002)(336012)(81166006)(476003)(217873002)(81156014)(2201001)(2906002)(97736004)(68736007)(5660300001)(16586007)(105596002)(2616005)(36756003)(53416004)(69596002)(446003)(11346002)(50226002)(6666004)(356004)(14444005)(110136005)(107886003)(6346003)(305945005)(50466002)(450100002)(498600001)(48376002)(54906003)(77096007)(26005)(47776003)(76176011)(51416003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR19MB1316;H:AUSMBX1.microsemi.net;FPR:;SPF:SoftFail;LANG:en;PTR:InfoDomainNonexistent;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD009;1:szXjAF3SaoX4tvLQ92tZim4FHo3jM9qS5LWoSJUvRnCuy1cXiVS04jovf3mLi2ITe+PBR/3ptBF1Xb4BFnjWGldaORauvkSTCMxGHjSrRT7vFaDbM45JG2V009kD+O1Y X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a593a939-f8e5-4c1a-a392-08d65e496f4e X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(5600074)(711020)(2017052603328);SRVR:BN6PR19MB1316; X-Microsoft-Exchange-Diagnostics: 1;BN6PR19MB1316;3:C4CnjEB7+taLaxFnvd3addS8tQC1shpKvczkdZ/lDHx1iezw1oyBQYaO3/E6hQSryoTOkB5rTOeX66HYvd1ISo01Yf2tO1/9BTV22D7GCkqxaTRWZhOcjgs0bYGZUzhk7ZjDcgzMIp7i5ri5YEVZtWQGc/uYlbtasxVAB358iLCWIxiWfv75vReViNz4yDFB9H0OXZBpsafv8uzlMAor/UpDWSL8isiMPvbGhCp45PAwt21w0a2mKd2Epg8P9Q1SEdFGui7EhA9nvT5uS0RCu4ojIhwT0PVNy8vAUnaqyFdOw2zXKvHyU0l6lZGffcKb7onDrFURK/WxZjAj5hMImU5fBHhW5mHKYU81citmAfk=;25:822uvfy29n2AlqKsevwIqc5Yj4Xn0s7AfCUGaXu9DBx/7Kp9YRs95l09H3V40Kna5m+MA+dqY5sIH+FMdEErU7s7/vUqytkmtPcMSSY4CfcO2/cVDlf2Q6922HWUibsWv+Uk5p6HuNrNtmvnPi7nOO7XbX/xUKslqkk497GhB3ojUP3jUd9lTJDsD+ueru4/mnIzoFuHYlP45QSslYHMwfU3FfhymXYCNPnM9YnJsXsw4iAuY5RqueuX7xyEtLSXKW3HnLps58tOWqcPU1RoWAf/dirYnT9AkmtoVJW9ouIGgn9oSuuUT81wKzB5vl5Zd+QZOPLGzMGuy7rEvHU/NQ== X-MS-TrafficTypeDiagnostic: BN6PR19MB1316: X-Microsoft-Exchange-Diagnostics: 1;BN6PR19MB1316;31:ytQr/eLSFN71rwulq6CbAz319Qx46l4txAzJS+YeNWuLr6xrgajN7ek7utQ6pMDbboc5lSKOXWHs+z10qdbJFJkQoYPLVd0GwegXibw7j3RRDGISeDlvSHoOcG1V49vrUDS2UakIxH2yOSbT9RsFw5hsdjqDvLXMS2WZMQ28Xb5fJzAZ3QwggszaXxCdMeYfvwsnL3+QeFPeEYsizJsTMZLmBCCvzNutZUaI25Pd3s8=;4:V7kqgB2O/OLMcA5O3a7U8ABumQMM2REWbTY4mDPFT87TJ+l2se5GKoATWNX8JRMhSvssE7iNJAmhopCJHtet+5D9qlFcx+PYWAWhLs4jDdCRjXtvaQ1++Y7WTWQbdf+xaG3Z3RjrQ9Z/9svO/8+ivV/kO5q1fdGSGfY8SQaZlXHcS3H+kmFHim+PaJ4IOE/RG2JlFqHSMVZm6/kixokWN2sahmoYenhrRW6f/umF4+v+vWJ/yRhxuYaS3521Wy3K8zWK46qTf/HYxpzFIkXdBA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(3230017)(999002)(6095135)(2401047)(8121501046)(5005006)(3231472)(944501520)(52105112)(93006095)(93001095)(3002001)(10201501046)(6055026)(148016)(6096035)(20161123556025)(20161123559100)(20161123561025)(20161123565025)(20161123563025)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(201708071742011)(7699051)(76991095);SRVR:BN6PR19MB1316;BCL:0;PCL:0;RULEID:(400006);SRVR:BN6PR19MB1316; X-Forefront-PRVS: 08828D20BC X-Microsoft-Exchange-Diagnostics: 1;BN6PR19MB1316;23:HvY04jOZcGeDv/iCoBN81gENs2XjnHWF6n4byZnRHyUETa2h5YR/+E6N64yOvoPPbXIS/p/0W+I3GKkmx6iJyLz0+UWJAVQmLFu0raOfUZ+HqlpeoVtGyuXqR64SmWNXHIRSKn6m/Fmmi7f2Ab+mxDeJcQbrHW7Fqm3GVFtksyBk+3Rn6QDfvLwMV4COcBXC/HLHbX/nrYdaK8FK4OHG/NnS0q7wMkr76ACLz2atj+ue6ykZUcjUxp8WHmEyZ/PX+3cQyVNeRAByR2SVMnwtKu+EqZl3v9u6WxTnbs9RsW347/D8kbmEweNgrhZ31eBqNV69SZxdkaiFNJAKUL1CCELhehn4eiuvwN2a/JeYPmisurr5BB1e9fqVqH7YE3fy6W9+L0hzqlz4iaBx0fZ57OGL3likdhFJ+yXCVltmgrjPFeRM+R71Jet/j6aqRAvuDLlfQ46L8OrDavpoN6Yz/FTubMH1KHTo/gBqb4/dLnYVspe8zJrK3h0BtTwjYHz9E0EMgmqrX5Y/o+fBpYxxGn6oBMD1hO6JIx9jwM7FiPnYpvO4TqnObupKEdFiSEBDNjRTCRm4Ffvu28kMG2z9gKRswwYi9Etg/NC84RPHSdJCiEdsQLDuHbEsMQ7UoIMibeixqGSv6PpTg39KydYEW+xe0DDfm2igD4rkE+tXG9snPynIpKVzfMRZt+e4++BecBUzx0h+AJY3EVFYG27gr+V5hjx/Jn3BYiv2R7b/ro1558NRihpWc++OgCrfOoP+uhJzMPJLN6gwmUupaZvsrIweu/8ap1sA+0ooj8L7yZDaPgctG7/AZamVA/lELZhBY3o3Yul6XEmzJiaQ9rAcmwZXdFu3G1odx0+mZAXPN7G19UnSsriO604ouJIgTYJkgFeBRELomaxrEIFQMjDjv7G45m6IrgBPljUkKHFX8c6DTgW6ZSJGg59PqVHVG+r1iuQ5Vvnq/8RwFbhuiAVx0jtQEKku99VMXEsZOwcO/Y2KZCZ8LuF0ukRZvyz7jzqTVQS4EmOimO0VFQbhGHkCAgvbUjd2PrJe7zJcyPvCxOF37V9h45YF6a+xp7IIB+IRFt8U9YS28Jgi8ZqskvnBfaZIVu7U7ZoP6vQ42cUgjkh87QpoPm2DxFm3L6jtYe7N28KRoFS8wEcM6n7YvrCnVkQ0otAMicG09gwfPM3QL6lgSKcuPfUX04hzYET9okBN X-Microsoft-Antispam-Message-Info: x6c5gO/Ll4t/lnlmztRACiXcZsf18D47RfLeB3ekMyrwEUg4SuGRFWdPsT92nFY9/7zU+1FzVSoyJxqyRYT2zPZHd6QKVsZfqPq3kwvYCi+9+F/fyTI4bIaLEuxi+KbZd3dvkFzFxFzSQ2kxpkpcs9ANE30Q3DeQVswrpw9ZeTxhMa30SubpmisGUjr88kdbaU0q3ZMp2gEYbjJsGkGmUa3C5UW7SSvZhM+Rb8ih+8RlZe6luwvT0swgdYffcA6sBv1IzLGWTU0AIkBn61JWP2n+ZwOUCQScvJiBOwgiqo5wAucHOmh5KzN3uw6WE81J X-Microsoft-Exchange-Diagnostics: 1;BN6PR19MB1316;6:DvL4Wq6aEP1AGA1DTh4skJHqMrstOp6emz4KN7FKDQUcz1Ak60J//CvsksA3DJBrJAK7p37/ydNNI2Vj2Yf26xOT3hqOBCmWqSFKzXu/+kB+MAy/SX5Qfu/Oie7i7KwDW1L3rQ7uZ0SKJ7t9ZRMD/WT7cAIrvavwAO62a5h5V3VC/mRtMl/f3YnNkUrZ9A14uCctmRhmbmlSPXiqmqPawJPabVyKADZPVYJuFCH3AKgCQ87CCpbQ7nh0zKxw+jk3kfRreAY0sZ6qAF28rAbJ334Y2/LJmo64z9HTFYDZOAQp031I8D/+hUxNrmAlljmKuqTGXOMla1DKW7/84PU7s0Ws0MBtuNli5wmKWYsWmMTCYU1rjfPjzTxxscSFcbqdISgP+5tDc5sEW7Ekd3Z624xSldyvKl3w2slS+U+Xv91jdlSAf15wrCttiSKwD6LC5gLah5L1ynobYvKTN/l8pg==;5:8qU+J33lQCibVRp/tavwhKnho5I5RxVw8CNKbcWBssNtsmAz4LgHbNiOMno0TvjRmHTVSVdqInnYnAxH5pZ1YnxMeoUJZCr4ALBgCD6YOe5jy8n52ZdZGuitas+8mU1gUCknIjS2VfbLAQpV/8lV9S5xYlSpl//ZjVGOxIHRMs8=;7:XAuJCHSYXLdKdJEuJkZW6kgb4mf8thTSyjDp6g8udXxC3fQgKJInDqE9pOHTbHJZWLqZEmvX41R1YJ9Be/5rtCP0X5uQ8N/hDlJzkEnV42xuO8wawYYtZF8+CLTCGyrEyreADWc9leH6I1KqkruQ2A== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2018 02:44:41.1145 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a593a939-f8e5-4c1a-a392-08d65e496f4e X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[208.19.99.221];Helo=[AUSMBX1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR19MB1316 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP MRPC normal mode requires the host to read the MRPC command status and output data from BAR. This results in high latency responses from the Memory Read TLP and potential Completion Timeout (CTO). MRPC DMA mode implementation includes: Macro definitions for registers and data structures corresponding to MRPC DMA mode. Add module parameter use_dma_mrpc to select between MRPC DMA mode and MRPC normal mode. Add MRPC mode functionality to: * Retrieve MRPC DMA mode version * Allocate DMA buffer, ISR registration, and enable DMA function during initialization * Check MRPC execution status and collect execution results from DMA buffer * Release DMA buffer and disable DMA function when unloading module MRPC DMA mode is a new feature of firmware and the driver will fall back to MRPC normal mode if there is no support in the legacy firmware. Include so that readq/writeq is replaced by two readl/writel on systems that do not support it. Signed-off-by: Wesley Sheng Reviewed-by: Logan Gunthorpe --- drivers/pci/switch/switchtec.c | 108 +++++++++++++++++++++++++++++++++++++---- include/linux/switchtec.h | 16 ++++++ 2 files changed, 114 insertions(+), 10 deletions(-) diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 0b8862b..6b726cb 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -13,7 +13,7 @@ #include #include #include - +#include #include MODULE_DESCRIPTION("Microsemi Switchtec(tm) PCIe Management Driver"); @@ -25,6 +25,11 @@ static int max_devices = 16; module_param(max_devices, int, 0644); MODULE_PARM_DESC(max_devices, "max number of switchtec device instances"); +static bool use_dma_mrpc = 1; +module_param(use_dma_mrpc, bool, 0644); +MODULE_PARM_DESC(use_dma_mrpc, + "Enable the use of the DMA MRPC feature"); + static dev_t switchtec_devt; static DEFINE_IDA(switchtec_minor_ida); @@ -141,6 +146,11 @@ static void mrpc_cmd_submit(struct switchtec_dev *stdev) stuser = list_entry(stdev->mrpc_queue.next, struct switchtec_user, list); + if (stdev->dma_mrpc) { + stdev->dma_mrpc->status = SWITCHTEC_MRPC_STATUS_INPROGRESS; + memset(stdev->dma_mrpc->data, 0xFF, SWITCHTEC_MRPC_PAYLOAD_SIZE); + } + stuser_set_state(stuser, MRPC_RUNNING); stdev->mrpc_busy = 1; memcpy_toio(&stdev->mmio_mrpc->input_data, @@ -180,7 +190,11 @@ static void mrpc_complete_cmd(struct switchtec_dev *stdev) stuser = list_entry(stdev->mrpc_queue.next, struct switchtec_user, list); - stuser->status = ioread32(&stdev->mmio_mrpc->status); + if (stdev->dma_mrpc) + stuser->status = stdev->dma_mrpc->status; + else + stuser->status = ioread32(&stdev->mmio_mrpc->status); + if (stuser->status == SWITCHTEC_MRPC_STATUS_INPROGRESS) return; @@ -190,13 +204,19 @@ static void mrpc_complete_cmd(struct switchtec_dev *stdev) if (stuser->status != SWITCHTEC_MRPC_STATUS_DONE) goto out; - stuser->return_code = ioread32(&stdev->mmio_mrpc->ret_value); + if (stdev->dma_mrpc) + stuser->return_code = stdev->dma_mrpc->rtn_code; + else + stuser->return_code = ioread32(&stdev->mmio_mrpc->ret_value); if (stuser->return_code != 0) goto out; - memcpy_fromio(stuser->data, &stdev->mmio_mrpc->output_data, - stuser->read_len); - + if (stdev->dma_mrpc) + memcpy(stuser->data, &stdev->dma_mrpc->data, + stuser->read_len); + else + memcpy_fromio(stuser->data, &stdev->mmio_mrpc->output_data, + stuser->read_len); out: complete_all(&stuser->comp); list_del_init(&stuser->list); @@ -231,7 +251,10 @@ static void mrpc_timeout_work(struct work_struct *work) mutex_lock(&stdev->mrpc_mutex); - status = ioread32(&stdev->mmio_mrpc->status); + if (stdev->dma_mrpc) + status = stdev->dma_mrpc->status; + else + status = ioread32(&stdev->mmio_mrpc->status); if (status == SWITCHTEC_MRPC_STATUS_INPROGRESS) { schedule_delayed_work(&stdev->mrpc_timeout, msecs_to_jiffies(500)); @@ -239,7 +262,6 @@ static void mrpc_timeout_work(struct work_struct *work) } mrpc_complete_cmd(stdev); - out: mutex_unlock(&stdev->mrpc_mutex); } @@ -1030,10 +1052,24 @@ static void enable_link_state_events(struct switchtec_dev *stdev) } } +static void enable_dma_mrpc(struct switchtec_dev *stdev) +{ + writeq(stdev->dma_mrpc_dma_addr, &stdev->mmio_mrpc->dma_addr); + flush_wc_buf(stdev); + iowrite32(SWITCHTEC_DMA_MRPC_EN, &stdev->mmio_mrpc->dma_en); +} + static void stdev_release(struct device *dev) { struct switchtec_dev *stdev = to_stdev(dev); + if (stdev->dma_mrpc) { + iowrite32(0, &stdev->mmio_mrpc->dma_en); + flush_wc_buf(stdev); + writeq(0, &stdev->mmio_mrpc->dma_addr); + dma_free_coherent(&stdev->pdev->dev, sizeof(*stdev->dma_mrpc), + stdev->dma_mrpc, stdev->dma_mrpc_dma_addr); + } kfree(stdev); } @@ -1189,10 +1225,27 @@ static irqreturn_t switchtec_event_isr(int irq, void *dev) return ret; } + +static irqreturn_t switchtec_dma_mrpc_isr(int irq, void *dev) +{ + struct switchtec_dev *stdev = dev; + irqreturn_t ret = IRQ_NONE; + + iowrite32(SWITCHTEC_EVENT_CLEAR | + SWITCHTEC_EVENT_EN_IRQ, + &stdev->mmio_part_cfg->mrpc_comp_hdr); + schedule_work(&stdev->mrpc_work); + + ret = IRQ_HANDLED; + return ret; +} + static int switchtec_init_isr(struct switchtec_dev *stdev) { int nvecs; int event_irq; + int dma_mrpc_irq; + int rc; nvecs = pci_alloc_irq_vectors(stdev->pdev, 1, 4, PCI_IRQ_MSIX | PCI_IRQ_MSI); @@ -1207,9 +1260,29 @@ static int switchtec_init_isr(struct switchtec_dev *stdev) if (event_irq < 0) return event_irq; - return devm_request_irq(&stdev->pdev->dev, event_irq, + rc = devm_request_irq(&stdev->pdev->dev, event_irq, switchtec_event_isr, 0, KBUILD_MODNAME, stdev); + + if (rc) + return rc; + + if (!stdev->dma_mrpc) + return rc; + + dma_mrpc_irq = ioread32(&stdev->mmio_mrpc->dma_vector); + if (dma_mrpc_irq < 0 || dma_mrpc_irq >= nvecs) + return -EFAULT; + + dma_mrpc_irq = pci_irq_vector(stdev->pdev, dma_mrpc_irq); + if (dma_mrpc_irq < 0) + return dma_mrpc_irq; + + rc = devm_request_irq(&stdev->pdev->dev, dma_mrpc_irq, + switchtec_dma_mrpc_isr, 0, + KBUILD_MODNAME, stdev); + + return rc; } static void init_pff(struct switchtec_dev *stdev) @@ -1294,6 +1367,19 @@ static int switchtec_init_pci(struct switchtec_dev *stdev, pci_set_drvdata(pdev, stdev); + if (!use_dma_mrpc) + return 0; + + if (!(ioread32(&stdev->mmio_mrpc->dma_ver) ? true : false)) + return 0; + + stdev->dma_mrpc = dma_zalloc_coherent(&stdev->pdev->dev, + sizeof(*stdev->dma_mrpc), + &stdev->dma_mrpc_dma_addr, + GFP_KERNEL); + if (stdev->dma_mrpc == NULL) + return -ENOMEM; + return 0; } @@ -1325,6 +1411,9 @@ static int switchtec_pci_probe(struct pci_dev *pdev, &stdev->mmio_part_cfg->mrpc_comp_hdr); enable_link_state_events(stdev); + if (stdev->dma_mrpc) + enable_dma_mrpc(stdev); + rc = cdev_device_add(&stdev->cdev, &stdev->dev); if (rc) goto err_devadd; @@ -1350,7 +1439,6 @@ static void switchtec_pci_remove(struct pci_dev *pdev) cdev_device_del(&stdev->cdev, &stdev->dev); ida_simple_remove(&switchtec_minor_ida, MINOR(stdev->dev.devt)); dev_info(&stdev->dev, "unregistered.\n"); - stdev_kill(stdev); put_device(&stdev->dev); } diff --git a/include/linux/switchtec.h b/include/linux/switchtec.h index ab400af..eee0412 100644 --- a/include/linux/switchtec.h +++ b/include/linux/switchtec.h @@ -29,6 +29,7 @@ #define SWITCHTEC_EVENT_EN_IRQ BIT(3) #define SWITCHTEC_EVENT_FATAL BIT(4) +#define SWITCHTEC_DMA_MRPC_EN BIT(0) enum { SWITCHTEC_GAS_MRPC_OFFSET = 0x0000, SWITCHTEC_GAS_TOP_CFG_OFFSET = 0x1000, @@ -46,6 +47,10 @@ struct mrpc_regs { u32 cmd; u32 status; u32 ret_value; + u32 dma_en; + u64 dma_addr; + u32 dma_vector; + u32 dma_ver; } __packed; enum mrpc_status { @@ -342,6 +347,14 @@ struct pff_csr_regs { struct switchtec_ntb; +struct dma_mrpc_output { + u32 status; + u32 cmd_id; + u32 rtn_code; + u32 output_size; + u8 data[SWITCHTEC_MRPC_PAYLOAD_SIZE]; +}; + struct switchtec_dev { struct pci_dev *pdev; struct device dev; @@ -381,6 +394,9 @@ struct switchtec_dev { u8 link_event_count[SWITCHTEC_MAX_PFF_CSR]; struct switchtec_ntb *sndev; + + struct dma_mrpc_output *dma_mrpc; + dma_addr_t dma_mrpc_dma_addr; }; static inline struct switchtec_dev *to_stdev(struct device *dev)