Received: by 2002:a25:5b86:0:0:0:0:0 with SMTP id p128csp1609569ybb; Fri, 29 Mar 2019 07:52:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqxA42sq6RLofZiJvSoVPzBksrvscJwYEWe0JQt5idyjEbQ8zFHvmOYB2u7JxkyKg+pOUs+c X-Received: by 2002:a65:6144:: with SMTP id o4mr9051356pgv.247.1553871120854; Fri, 29 Mar 2019 07:52:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553871120; cv=none; d=google.com; s=arc-20160816; b=05UEdl+TcjBNmdP21XlN/XqkolSSTvgJVGbBHzD/lfr1t8NqHpXNxKRMo/m5gFXVoo PXV+O78w5AS5EJB2vfP7A032NBfc1ze9pq/lJhd6KyGqTWde1zjxJdy94BLMo33J8cTG bScAOUOE5CPzHppQjRtbM4romXGdhfWzPw8iNBKiBrzo3AFGeUepkK89I/4A+yop1h0A k36IsUjFQ4+mcThy321hWr6MO4Y5tscNptse7SZDfsoDZw7I1vVGj/usCtcHrvrcXids 0rWeEOzsjSD3NaFDzfF9A+A6rAVtZbhC9HxiZwk8aVlw7UCSYqlW0SBPaR0WT2tnKHzH gOsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=a52wXoj/qPeMcgjOpREr0MMQ5t1s8K3ZXFdfkFmWe2E=; b=Y3jqoflQBh+Mq6GCrvQ5k9M/dj69+kq8LNaKdBYzfdIpU47gNNPNoQ1catoVHfNk+g coAIg8RrolK+DGjIS5MHa0lBQSEB4XNHKKgZDipjDYV3oZ3pJ0Xgan0BphT5IJfo4mo9 nPZLDzXBd6d+/T0gPBAifjRoClGaBv76BZ1wfI/jjhQxoAAGSOo8v7/BcZ+SXS/MRlvL 34YI2IjbqjZxt9RthtuVR491fDvb+4mvIhDubtQYxORIgb8hk96t6b/GLMtUhLDajaJv ofB+czzFeXcF70i41np65DCpAAeYejN22vD92QJpnA5GVfykxQUEDJ5fWif2TO3TzIXg Rzxg== 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 p22si2068313pgh.468.2019.03.29.07.51.44; Fri, 29 Mar 2019 07:52:00 -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 S1729435AbfC2Ouj (ORCPT + 99 others); Fri, 29 Mar 2019 10:50:39 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:33384 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728869AbfC2Ouj (ORCPT ); Fri, 29 Mar 2019 10:50:39 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BFEE4A78; Fri, 29 Mar 2019 07:50:38 -0700 (PDT) Received: from [10.1.196.75] (e110467-lin.cambridge.arm.com [10.1.196.75]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F028C3F557; Fri, 29 Mar 2019 07:50:36 -0700 (PDT) Subject: Re: [PATCH 02/13] soc/fsl/bman: map FBPR area in the iommu To: laurentiu.tudor@nxp.com, netdev@vger.kernel.org, madalin.bucur@nxp.com, roy.pledge@nxp.com, camelia.groza@nxp.com, leoyang.li@nxp.com Cc: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, linuxppc-dev@lists.ozlabs.org, davem@davemloft.net, linux-arm-kernel@lists.infradead.org References: <20190329140014.8126-1-laurentiu.tudor@nxp.com> <20190329140014.8126-3-laurentiu.tudor@nxp.com> From: Robin Murphy Message-ID: Date: Fri, 29 Mar 2019 14:50:34 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <20190329140014.8126-3-laurentiu.tudor@nxp.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 29/03/2019 14:00, laurentiu.tudor@nxp.com wrote: > From: Laurentiu Tudor > > Add a one-to-one iommu mapping for bman private data memory (FBPR). > This is required for BMAN to work without faults behind an iommu. > > Signed-off-by: Laurentiu Tudor > --- > drivers/soc/fsl/qbman/bman_ccsr.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/soc/fsl/qbman/bman_ccsr.c b/drivers/soc/fsl/qbman/bman_ccsr.c > index 7c3cc968053c..b209c79511bb 100644 > --- a/drivers/soc/fsl/qbman/bman_ccsr.c > +++ b/drivers/soc/fsl/qbman/bman_ccsr.c > @@ -29,6 +29,7 @@ > */ > > #include "bman_priv.h" > +#include > > u16 bman_ip_rev; > EXPORT_SYMBOL(bman_ip_rev); > @@ -178,6 +179,7 @@ static int fsl_bman_probe(struct platform_device *pdev) > int ret, err_irq; > struct device *dev = &pdev->dev; > struct device_node *node = dev->of_node; > + struct iommu_domain *domain; > struct resource *res; > u16 id, bm_pool_cnt; > u8 major, minor; > @@ -225,6 +227,15 @@ static int fsl_bman_probe(struct platform_device *pdev) > > dev_dbg(dev, "Allocated FBPR 0x%llx 0x%zx\n", fbpr_a, fbpr_sz); > > + /* Create an 1-to-1 iommu mapping for FBPR area */ > + domain = iommu_get_domain_for_dev(dev); If that's expected to be the default domain that you're grabbing, then this is *incredibly* fragile. There's nothing to stop the IOVA that you forcibly map from being automatically allocated later and causing some other DMA mapping to fail noisily and unexpectedly. Furthermore, have you tried this with "iommu.passthrough=1"? That said, I really don't understand what's going on here anyway :/ As far as I can tell from qbman_init_private_mem(), fbpr_a comes from dma_alloc_coherent() and thus would already be a mapped IOVA - isn't this the stuff that Roy converted to nicely use shared-dma-pool regions a while ago? Robin. > + if (domain) { > + ret = iommu_map(domain, fbpr_a, fbpr_a, fbpr_sz, > + IOMMU_READ | IOMMU_WRITE | IOMMU_CACHE); > + if (ret) > + dev_warn(dev, "failed to iommu_map() %d\n", ret); > + } > + > bm_set_memory(fbpr_a, fbpr_sz); > > err_irq = platform_get_irq(pdev, 0); >