Received: by 2002:a25:fc12:0:0:0:0:0 with SMTP id v18csp17616ybd; Fri, 12 Apr 2019 15:35:38 -0700 (PDT) X-Google-Smtp-Source: APXvYqxpGXWINIaaOpdchfEbGdTd7MHcF/OOrh8op8ImuOx+Q3MPXO1LHuCb/molfMz3EruHm/Sb X-Received: by 2002:a63:500f:: with SMTP id e15mr57604474pgb.198.1555108538091; Fri, 12 Apr 2019 15:35:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555108538; cv=none; d=google.com; s=arc-20160816; b=M9guSO3XYVVGIxWQlASVAS/0i4xrOacR2it6FbnJCDuwqQGVpdXuyce5u1lCLMrc0a 2waRKpO5nyxgk6G2iFkH8we8sMkD2cv7i1QknA0pk7YRjLcKK3dlRlB0J2Nyi7rCUhW/ epGmCa245gfABGDSJJBaJmCJKDgYU+VnO6glgIAaLkgNbw+vXDwofTBiem+Kaa33HFIP fIR4yjg6tiosBUZ+kOwhQnS7kPgnps6PhWWOQWYM1Vob583XLAydECQVh1+7g5YlsiyN Gm23wjGJ6xPGUI+p8TF2gp+qRYfmg6x54E7PmGS94jSNh9SH5ShkElDekiuTIrw2v6AR T79Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=HbS9Ud7iNQ1POEup971Vlh6fqu/KYzEoTb4s1fqFMLU=; b=ElXmJgCme9BM+qvBNy9ybsT50vhoxQwtAqYkmXUBEliiIbTfplo2xi1U2w68/CzdH+ 64KUdwExUc90USgqHYVOBzTtgdc+2DG4mrb9ZHEacm/HweZ1AR8GgYyCNnE6RrbSJNpE 6hKr0hQ95CUomeZdijL/YOEeQDmZgykbkVNtVOaSS81ivngv/s0DZ6hmXoAFGM0gWI9F x3Gdbdfe8MW0Humf0Z8YipzfxtEQlw1t0UiR0A7MssK+GdwK3u512EWPEaQ+GCW1HoMy iW9iJ/RfQIxIg8eavFUothEsIDHL93Fgry3vTDO3GrGcj23qk7MmjXH+pcww+bHEvFiD GLUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Hf+DnBdt; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z11si38817428pfa.153.2019.04.12.15.35.05; Fri, 12 Apr 2019 15:35:38 -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; dkim=pass header.i=@kernel.org header.s=default header.b=Hf+DnBdt; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726983AbfDLWeM (ORCPT + 99 others); Fri, 12 Apr 2019 18:34:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:58960 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726765AbfDLWeL (ORCPT ); Fri, 12 Apr 2019 18:34:11 -0400 Received: from localhost (173-25-63-173.client.mchsi.com [173.25.63.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B9DBB2073F; Fri, 12 Apr 2019 22:34:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555108451; bh=O5U3eSLMuJ3jb7KoqaCOHpaX1Y5XwTwPpbqkPrMXr2U=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Hf+DnBdtXvFJmGJqqJmNsczr4LLF86JH8RNKYAyIuaUhhlbvjD/yR+nO5d3rs/Fai Z7gcpEeXUH/SybJ8d8u4NaPd1YoEBJdVAaciGUpWi4W6Ej7709BTIL7aBU9Sl+aZby twkDtms0o9rNLTFZNtySk76+0iFnU8inH+gzkPAU= Date: Fri, 12 Apr 2019 17:34:09 -0500 From: Bjorn Helgaas To: Srinath Mannam Cc: Robin Murphy , Joerg Roedel , Lorenzo Pieralisi , poza@codeaurora.org, Ray Jui , bcm-kernel-feedback-list@broadcom.com, linux-pci@vger.kernel.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 0/3] PCIe Host request to reserve IOVA Message-ID: <20190412223409.GB126710@google.com> References: <1555038815-31916-1-git-send-email-srinath.mannam@broadcom.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1555038815-31916-1-git-send-email-srinath.mannam@broadcom.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 12, 2019 at 08:43:32AM +0530, Srinath Mannam wrote: > Few SOCs have limitation that their PCIe host can't allow few inbound > address ranges. Allowed inbound address ranges are listed in dma-ranges > DT property and this address ranges are required to do IOVA mapping. > Remaining address ranges have to be reserved in IOVA mapping. If I understand correctly, devices below these PCIe host bridges can DMA only to the listed address ranges, and you prevent devices from doing DMA to the holes between the listed ranges by reserving the holes in dma-iommu. Apparently there's something that makes sure driver dma_map_*() always goes through dma-iommu? I traced as far as seeing that dma-iommu depends on CONFIG_IOMMU_DMA, and that arm64 selects CONFIG_IOMMU_DMA if CONFIG_IOMMU_SUPPORT, but then the trail got cold. I didn't see what selects CONFIG_IOMMU_SUPPORT. This does look like what Robin suggested, as far as I can tell. Hopefully he'll take a look and give his reviewed-by. Thanks for persevering! > PCIe Host driver of those SOCs has to list resource entries of allowed > address ranges given in dma-ranges DT property in sorted order. This > sorted list of resources will be processed and reserve IOVA address for > inaccessible address holes while initializing IOMMU domain. > > This patch set is based on Linux-5.0-rc2. > > Changes from v3: > - Addressed Robin Murphy review comments. > - pcie-iproc: parse dma-ranges and make sorted resource list. > - dma-iommu: process list and reserve gaps between entries > > Changes from v2: > - Patch set rebased to Linux-5.0-rc2 > > Changes from v1: > - Addressed Oza review comments. > > Srinath Mannam (3): > PCI: Add dma_ranges window list > iommu/dma: Reserve IOVA for PCIe inaccessible DMA address > PCI: iproc: Add sorted dma ranges resource entries to host bridge > > drivers/iommu/dma-iommu.c | 19 ++++++++++++++++ > drivers/pci/controller/pcie-iproc.c | 44 ++++++++++++++++++++++++++++++++++++- > drivers/pci/probe.c | 3 +++ > include/linux/pci.h | 1 + > 4 files changed, 66 insertions(+), 1 deletion(-) > > -- > 2.7.4 >