Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3151501imm; Fri, 20 Jul 2018 11:01:46 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfk40BQyupj5lkxgFL5BH/qQP2DW7owjzjmGGpfzlOMhtij+g3RDyksGoo/c8gxwCBvx8zM X-Received: by 2002:a65:57c9:: with SMTP id q9-v6mr3065244pgr.128.1532109706377; Fri, 20 Jul 2018 11:01:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532109706; cv=none; d=google.com; s=arc-20160816; b=0Jo7DGJ7nmdmvjAYDzmByJjVQ9zE8Wi1CqAK256YDh4jNzz3oIcwnReVrw650cZz5k 2otFuG80DSwJiAfIOXPQ1Zcrt+F/I/4PmTxTSC96fJps6wRgeuohoDVRtRy2/BtVgrGG uHCDKaLamP8QENdW/cMKnqm9XMjeDaC5W9q591O4qcLHW8oxg6GtUcl+lEkD7ZIFpoRE phh2VmQM+XxD5BiWg3zq2o6+Fs/jKCGuddRQbAZi8/Fjf1TDPKqSls5xSXM7VXoF/w1m eh+Sw3KDuqBxWrxXeRX5StuwPwXuo9v9duCejgxIMITqCo9lrgXllQTxcgxP+qBAa2ZE 84eA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:references:in-reply-to:message-id :date:cc:to:from:arc-authentication-results; bh=w0tf4hEX/IIffqf3f0JDowHhvH1tAyMoCHFUDgrlIFQ=; b=J76PAY8MrEyaQUOSJSI/5bpkV4+4pmWsuPfAvrF78YP6xXzi6P+9hhFrIdZNkmRhfc 3M61wq9mquhHb1r5/Km0hUR/xGQDAq3GQLvmfLhwbx+uKQP3trBFI+MD0XomQt1XRKnZ 2iOFZRUfZLfqfDFA12sfNtRWsMYaQl0rUZDG2yRUNK0UbEIpzfLmUw7Dkp8ymQZ54ylY Qhc1JzFUdQ9M8FM6GMIOyXktTDh8Ri+lwW7+cCoPF6VItbfkfjerkyJxJf2ON49i3piE Y/ELgjU4DPAaPAA96na1ZVA+xAXWGZrVp2cUAvEOBTVD7Zki5mUK7TU5pOYk6PzpmNr/ wEiw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t66-v6si2364979pgt.181.2018.07.20.11.01.31; Fri, 20 Jul 2018 11:01:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388414AbeGTSuH (ORCPT + 99 others); Fri, 20 Jul 2018 14:50:07 -0400 Received: from ale.deltatee.com ([207.54.116.67]:38380 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388318AbeGTSuF (ORCPT ); Fri, 20 Jul 2018 14:50:05 -0400 Received: from cgy1-donard.priv.deltatee.com ([172.16.1.31]) by ale.deltatee.com with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fgZhn-0008E2-0U; Fri, 20 Jul 2018 12:00:43 -0600 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.89) (envelope-from ) id 1fgZhk-00012q-TO; Fri, 20 Jul 2018 12:00:36 -0600 From: Logan Gunthorpe To: linux-kernel@vger.kernel.org, linux-ntb@googlegroups.com, Jon Mason Cc: Allen Hubbe , Serge Semin , Shyam Sundar S K , Shuah Khan , Doug Meyer , Logan Gunthorpe Date: Fri, 20 Jul 2018 12:00:28 -0600 Message-Id: <20180720180034.3964-3-logang@deltatee.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180720180034.3964-1-logang@deltatee.com> References: <20180720180034.3964-1-logang@deltatee.com> X-SA-Exim-Connect-IP: 172.16.1.31 X-SA-Exim-Rcpt-To: linux-kernel@vger.kernel.org, linux-ntb@googlegroups.com, jdmason@kudzu.us, allenbh@gmail.com, fancer.lancer@gmail.com, Shyam-sundar.S-k@amd.com, shuah@kernel.org, dmeyer@gigaio.com, logang@deltatee.com X-SA-Exim-Mail-From: gunthorp@deltatee.com X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on ale.deltatee.com X-Spam-Level: X-Spam-Status: No, score=-8.7 required=5.0 tests=ALL_TRUSTED,BAYES_00, GREYLIST_ISWHITE,MYRULES_NO_TEXT autolearn=ham autolearn_force=no version=3.4.1 Subject: [PATCH v2 2/8] NTB: Setup the DMA mask globally for all drivers X-SA-Exim-Version: 4.2.1 (built Tue, 02 Aug 2016 21:08:31 +0000) X-SA-Exim-Scanned: Yes (on ale.deltatee.com) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 417cf39cfea9 ("NTB: Set dma mask and dma coherent mask to NTB devices") added code to set the DMA mask for the NTB device to each driver individually. However, it neglected to set it for the Switchtec driver. So when the monolithic commit 7f46c8b3a552 ("NTB: ntb_tool: Add full multi-port NTB API support") started allocating DMA memory against the NTB device it broke the Switchtec driver. Seeing this is setting up a property of the NTB device, it should be done by the common NTB code (inside ntb_register_device()) so we can be sure it's done properly for all drivers. This avoids each driver needing to duplicate the code and helps prevent us from inadvertently breaking one of the drivers in the future if we have to make changes in this area. Additionally, all existing drivers are setting a property of the struct device before calling device_initialize() which works fine now, but may not be the safest choice if someone decides to change something such that the propery is overridden by the initialization. Fixes: 7f46c8b3a552 ("NTB: ntb_tool: Add full multi-port NTB API support") Signed-off-by: Logan Gunthorpe Acked-by: Dave Jiang --- drivers/ntb/hw/amd/ntb_hw_amd.c | 4 ---- drivers/ntb/hw/idt/ntb_hw_idt.c | 6 ------ drivers/ntb/hw/intel/ntb_hw_gen1.c | 4 ---- drivers/ntb/ntb.c | 13 ++++++++++++- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c index efb214fc545a..16c10dfe0919 100644 --- a/drivers/ntb/hw/amd/ntb_hw_amd.c +++ b/drivers/ntb/hw/amd/ntb_hw_amd.c @@ -1020,10 +1020,6 @@ static int amd_ntb_init_pci(struct amd_ntb_dev *ndev, goto err_dma_mask; dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n"); } - rc = dma_coerce_mask_and_coherent(&ndev->ntb.dev, - dma_get_mask(&pdev->dev)); - if (rc) - goto err_dma_mask; ndev->self_mmio = pci_iomap(pdev, 0, 0); if (!ndev->self_mmio) { diff --git a/drivers/ntb/hw/idt/ntb_hw_idt.c b/drivers/ntb/hw/idt/ntb_hw_idt.c index dbe72f116017..576a2a986085 100644 --- a/drivers/ntb/hw/idt/ntb_hw_idt.c +++ b/drivers/ntb/hw/idt/ntb_hw_idt.c @@ -2447,12 +2447,6 @@ static int idt_init_pci(struct idt_ntb_dev *ndev) dev_warn(&pdev->dev, "Cannot set consistent DMA highmem bit mask\n"); } - ret = dma_coerce_mask_and_coherent(&ndev->ntb.dev, - dma_get_mask(&pdev->dev)); - if (ret != 0) { - dev_err(&pdev->dev, "Failed to set NTB device DMA bit mask\n"); - return ret; - } /* * Enable the device advanced error reporting. It's not critical to diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c index 6aa573227279..805845fa614b 100644 --- a/drivers/ntb/hw/intel/ntb_hw_gen1.c +++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c @@ -1770,10 +1770,6 @@ static int intel_ntb_init_pci(struct intel_ntb_dev *ndev, struct pci_dev *pdev) goto err_dma_mask; dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n"); } - rc = dma_coerce_mask_and_coherent(&ndev->ntb.dev, - dma_get_mask(&pdev->dev)); - if (rc) - goto err_dma_mask; ndev->self_mmio = pci_iomap(pdev, 0, 0); if (!ndev->self_mmio) { diff --git a/drivers/ntb/ntb.c b/drivers/ntb/ntb.c index 2581ab724c34..93f24440d11d 100644 --- a/drivers/ntb/ntb.c +++ b/drivers/ntb/ntb.c @@ -100,6 +100,8 @@ EXPORT_SYMBOL(ntb_unregister_client); int ntb_register_device(struct ntb_dev *ntb) { + int ret; + if (!ntb) return -EINVAL; if (!ntb->pdev) @@ -120,7 +122,16 @@ int ntb_register_device(struct ntb_dev *ntb) ntb->ctx_ops = NULL; spin_lock_init(&ntb->ctx_lock); - return device_register(&ntb->dev); + device_initialize(&ntb->dev); + + ret = dma_coerce_mask_and_coherent(&ntb->dev, + dma_get_mask(&ntb->pdev->dev)); + if (ret != 0) { + dev_err(&ntb->dev, "Failed to set NTB device DMA bit mask\n"); + return ret; + } + + return device_add(&ntb->dev); } EXPORT_SYMBOL(ntb_register_device); -- 2.11.0