From patchwork Tue Oct 9 13:24:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10632545 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 B53BB13AA for ; Tue, 9 Oct 2018 13:26:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A8F18286A1 for ; Tue, 9 Oct 2018 13:26:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9CA89289C4; Tue, 9 Oct 2018 13:26:34 +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=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2A1C5286A1 for ; Tue, 9 Oct 2018 13:26:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EE7F16B0280; Tue, 9 Oct 2018 09:26:12 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id DD8856B027F; Tue, 9 Oct 2018 09:26:12 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE1376B0283; Tue, 9 Oct 2018 09:26:12 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id 607776B027F for ; Tue, 9 Oct 2018 09:26:12 -0400 (EDT) Received: by mail-pf1-f198.google.com with SMTP id y86-v6so1096738pff.6 for ; Tue, 09 Oct 2018 06:26:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=hhwdg0p6cD+tBZ2LvXC+nRssqLc7D1MCrzZuVKtcd0k=; b=rp/8cvC47yHUcZ3svOop19KvdTGyY+1ax3tMdUjgaHTNP0ErNRWBh7oJTggM/k9P34 /CC1bKTJf74+e6bL7+iQtDkoezpnCXfHGbwGD0W1mV9th1dxNmFwqajWOD+MwfVzXSu6 +lh2952kpOxQrOPWziEbXoO5TBHtka1RcIiAx8/Su5+AcgPnATYyNoTzWVzcMhHV3d7o zcHrMPWQjY1lDt/uR9mlpOoXlxqqyR69PWxMQRxsiP6rOo2UtW0CrsOy8Oq2km5UBGni ZOE1eWhu71p9dcOSJIeLHbbm9sUESKX7YJbwnqHEKR7Yy9HIa2cwCMS1z2IKtJCNpyYf 98Xw== X-Gm-Message-State: ABuFfohpfdo94E/+2c3NH3WTMHYV471mbA2iL6LTCMUQGlQRH7LyG82k Q+0TNLBcq4N6vvMlNWnlvWhz7apda/WRoVOe+Jn5wkLkjxARXcAuT0smf5k84IeqCPQf5mEG6Jp 7yaOW4yuJhXeKF+EJvVVOJUEuOqe1IYS/QfTWmBkyJ3bGZbrppWoTdu7xRy4MIM0= X-Received: by 2002:a62:13cb:: with SMTP id 72-v6mr29608212pft.34.1539091572077; Tue, 09 Oct 2018 06:26:12 -0700 (PDT) X-Google-Smtp-Source: ACcGV60xQSLtVbtfyrFmY5KPJGrqMyxc8JcrXLy3raeDTflAk8juYLYQ409EfioUY1F7u8usFOzm X-Received: by 2002:a62:13cb:: with SMTP id 72-v6mr29608151pft.34.1539091571247; Tue, 09 Oct 2018 06:26:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539091571; cv=none; d=google.com; s=arc-20160816; b=FaB8NneU8aI1a6+j+axxMT5/rtnJ7z43aUKMeXW4Nwz+xwbADEYuckaXpe4r7MZ9KD Awfsbu+hwNCtLxuQ0cpSYwIe6dpkNJUlMRxvlmRdqUbMffGF/biak1nhywMt54uHfS7N 716/Rjgb3nIir3cVOgajDHu2IJ0rzYLfwX/fJlEv3ifM2OEEBhP+ap4SL+Tt4fvVoGEb tJaG4F5PNpPSKI3fViwlW6SrbSV9BQgNPgdmmm2TCyPhsFma8KjOw+XAa2m9LJfFPOwC 3IipbQufgPFF/e+w+nK5OdZccw2BLs24sJcbFtLAZMYRLNCcF4WP17qij26xLQrSjkFH C6yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=hhwdg0p6cD+tBZ2LvXC+nRssqLc7D1MCrzZuVKtcd0k=; b=gDdm/FMPSGv0UFnIZryakacdBWtDA1b7wHGk2GMshA9HK+SgNx++w76WJB06NvWtGX Om9iz3QlXN28DmiQFd5VAIKDqxLQsw0NBirnfPA0vmHQxYFHjfU4IzDtY5nODH0LbQ3t VuyfKSIEqK61ZNyE9y93y1qxjoyZli3Ws9kchp9FO9RGJCnAuPJD0SOTbffCLlITFyDr YoC8ehZR70N5x8Mjmm/n9ab03GcdMCWWoQRAoXK+hkprJoNLK31U1z40YiF7Q2vt4Rvn zdQFGI3DpuyT91Pz/9xSSbj10kSdktu+keQo7kRhjlXUDxQRX74hEbVjYm/5NIj1hYsU fiDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=L7giyn18; spf=pass (google.com: best guess record for domain of batv+39c443e67938b060f200+5525+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+39c443e67938b060f200+5525+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id g4-v6si20769714plo.254.2018.10.09.06.26.11 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Oct 2018 06:26:11 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+39c443e67938b060f200+5525+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=L7giyn18; spf=pass (google.com: best guess record for domain of batv+39c443e67938b060f200+5525+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+39c443e67938b060f200+5525+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=hhwdg0p6cD+tBZ2LvXC+nRssqLc7D1MCrzZuVKtcd0k=; b=L7giyn18J6TxYDQfxVkMj3gVH0 Ew5szJrxKfbV8637Zyd7t+IvyFu01/sTfwQoJXXPYHsjeVSN7AJVLrm78NpBozF9m95TIAg3rAHTG DMehxdVSNaIpP/YiAYToVnZif0ptzHQZOZUgDrsqtlskp3Ce6JvS4mGseSB8jxoe72IfS3MdzGye0 9yiMTmZdkZIos2z1Ldn5zJMstPlRJuGdlPjfLagCcNYC0i6dezrYl0iLUyXImOVMYC+pJbuFZnEyV IF4SegwaByNeKspz2z1zC6fAejtlQzyFPWjOjCAdT4IJLfjj2Iqd+6h96fed9QAkiieHe+TcliUab jOZlftXg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1g9s11-0001Bk-GY; Tue, 09 Oct 2018 13:25:35 +0000 From: Christoph Hellwig To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: linuxppc-dev@lists.ozlabs.org, iommu@lists.linux-foundation.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 14/33] powerpc/dart: use the generic iommu bypass code Date: Tue, 9 Oct 2018 15:24:41 +0200 Message-Id: <20181009132500.17643-15-hch@lst.de> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181009132500.17643-1-hch@lst.de> References: <20181009132500.17643-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Use the generic iommu bypass code instead of overriding set_dma_mask. Signed-off-by: Christoph Hellwig --- arch/powerpc/sysdev/dart_iommu.c | 45 +++++++++++--------------------- 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c index ce5dd2048f57..e7d1645a2d2e 100644 --- a/arch/powerpc/sysdev/dart_iommu.c +++ b/arch/powerpc/sysdev/dart_iommu.c @@ -360,13 +360,6 @@ static void iommu_table_dart_setup(void) set_bit(iommu_table_dart.it_size - 1, iommu_table_dart.it_map); } -static void pci_dma_dev_setup_dart(struct pci_dev *dev) -{ - if (dart_is_u4) - set_dma_offset(&dev->dev, DART_U4_BYPASS_BASE); - set_iommu_table_base(&dev->dev, &iommu_table_dart); -} - static void pci_dma_bus_setup_dart(struct pci_bus *bus) { if (!iommu_table_dart_inited) { @@ -390,27 +383,16 @@ static bool dart_device_on_pcie(struct device *dev) return false; } -static int dart_dma_set_mask(struct device *dev, u64 dma_mask) +static void pci_dma_dev_setup_dart(struct pci_dev *dev) { - if (!dev->dma_mask || !dma_supported(dev, dma_mask)) - return -EIO; - - /* U4 supports a DART bypass, we use it for 64-bit capable - * devices to improve performances. However, that only works - * for devices connected to U4 own PCIe interface, not bridged - * through hypertransport. We need the device to support at - * least 40 bits of addresses. - */ - if (dart_device_on_pcie(dev) && dma_mask >= DMA_BIT_MASK(40)) { - dev_info(dev, "Using 64-bit DMA iommu bypass\n"); - set_dma_ops(dev, &dma_nommu_ops); - } else { - dev_info(dev, "Using 32-bit DMA via iommu\n"); - set_dma_ops(dev, &dma_iommu_ops); - } + if (dart_is_u4 && dart_device_on_pcie(&dev->dev)) + set_dma_offset(&dev->dev, DART_U4_BYPASS_BASE); + set_iommu_table_base(&dev->dev, &iommu_table_dart); +} - *dev->dma_mask = dma_mask; - return 0; +static bool iommu_bypass_supported_dart(struct pci_dev *dev, u64 mask) +{ + return dart_is_u4 && dart_device_on_pcie(&dev->dev); } void __init iommu_init_early_dart(struct pci_controller_ops *controller_ops) @@ -430,12 +412,15 @@ void __init iommu_init_early_dart(struct pci_controller_ops *controller_ops) if (dart_init(dn) != 0) return; - /* Setup bypass if supported */ - if (dart_is_u4) - ppc_md.dma_set_mask = dart_dma_set_mask; - + /* + * U4 supports a DART bypass, we use it for 64-bit capable devices to + * improve performance. However, that only works for devices connected + * to the U4 own PCIe interface, not bridged through hypertransport. + * We need the device to support at least 40 bits of addresses. + */ controller_ops->dma_dev_setup = pci_dma_dev_setup_dart; controller_ops->dma_bus_setup = pci_dma_bus_setup_dart; + controller_ops->iommu_bypass_supported = iommu_bypass_supported_dart; /* Setup pci_dma ops */ set_pci_dma_ops(&dma_iommu_ops);