linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Will Deacon <will.deacon@arm.com>
To: Olav Haugan <ohaugan@codeaurora.org>
Cc: Rob Clark <robdclark@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
	Thierry Reding <thierry.reding@gmail.com>,
	Rob Herring <robh+dt@kernel.org>, Pawel Moll <Pawel.Moll@arm.com>,
	Mark Rutland <Mark.Rutland@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Joerg Roedel <joro@8bytes.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	Grant Grundler <grundler@chromium.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Marc Zyngier <Marc.Zyngier@arm.com>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	Varun Sethi <varun.sethi@freescale.com>,
	Cho KyongHo <pullip.cho@samsung.com>,
	Dave P Martin <Dave.Martin@arm.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	Hiroshi Doyu <hdoyu@nvidia.com>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>
Subject: Re: [PATCH v4] devicetree: Add generic IOMMU device tree bindings
Date: Wed, 16 Jul 2014 11:10:53 +0100	[thread overview]
Message-ID: <20140716101053.GJ29414@arm.com> (raw)
In-Reply-To: <53C5D480.3030409@codeaurora.org>

On Wed, Jul 16, 2014 at 02:25:20AM +0100, Olav Haugan wrote:
> On 7/13/2014 4:43 AM, Rob Clark wrote:
> > On Sun, Jul 13, 2014 at 5:43 AM, Will Deacon <will.deacon@arm.com> wrote:
> >> My plan for the ARM SMMU driver is:
> >>
> >>   (1) Change ->probe() to walk the device-tree looking for all masters with
> >>       phandles back to the SMMU instance being probed
> >>
> >>   (2) For each master, extract the Stream IDs and add them to the internal
> >>       SMMU driver data structures (an rbtree per SMMU instance). For
> >>       hotpluggable buses, we'll need a way for the bus controller to
> >>       reserve a range of IDs -- this will likely be a later extension to
> >>       the binding.
> >>
> >>   (3) When we get an ->add() call, warn if it's a device we haven't seen
> >>       and reject the addition.
> >>
> >> That way, ->attach() should be the same as it is now, I think.
> >>
> >> Have you tried implementing something like that? We agreed that (1) isn't
> >> pretty, but I don't have a good alternative and it's only done at
> >> probe-time.
> > 
> > I haven't tried implementing that yet, but I'm sure it would work.  I
> > was just hoping to avoid having to do that ;-)
> 
> Is the reason you want to do it this way because you want to guarantee
> that all masters (and stream IDs) have been identified before the first
> attach call? I am just wondering why you cannot continue doing the
> master/streamID discovery during add_device() callback?

That's fine if we have one SMR per ID, but the moment we want to do more
involved matching, we're going to need complete system knowledge prior to
the first attach. I don't think we can safely reconfigure live streams on
the fly.

> >> BTW: Is the msm-v0 IOMMU compatible with the ARM SMMU driver, or is it a
> >> completely different design requiring a different driver?
> > 
> > My understanding is that it is different from msm v1 IOMMU, although I
> > think it shares the same pagetable format with v1.  Not sure if that
> > is the same as arm-smmu?   If so it might be nice to try to extract
> > out some shared helper fxns for map/unmap as well.
> > 
> > I expect Olav knows better the similarities/differences.
> > 
> 
> The msm-v0 IOMMU is not compatible with ARM SMMUv1 specification.
> However, it is a close cousin. The hardware was designed before the ARM
> SMMUv1 specification was available I believe. But it shares many of the
> same concepts as the ARM SMMUv1.
> 
> msm-v0 IOMMU supports V7S page table format only. The ARM SMMU driver
> does not support V7S at this time. However, I believe we need to support
> this.
> 
> Will, this reminds me. We definitely have a need to use different page
> tables in the ARM SMMU driver vs. the ARM CPU. We have an SoC with ARMv8
> cores (and thus ARMv8 page tables) but the SMMUs (SMMUv1) on this SoC
> only have support for V7S/V7L page table format. So we cannot use the
> same page table format as the CPU.

That sounds like a sane use-case. The best thing to do would be to add
some ARM page-table code as a library under drivers/iommu/, then we can
move the ARM IOMMUs over to using that. Since we'd be moving away from the
CPU page table helpers, we could also take the opportunity to use the
coherent DMA API instead of the hack I currently use for flushing out tables
to non-coherent walkers.

Will

  reply	other threads:[~2014-07-16 10:11 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-04 15:29 [PATCH v4] devicetree: Add generic IOMMU device tree bindings Thierry Reding
2014-07-09 13:40 ` Will Deacon
2014-07-09 14:21   ` Thierry Reding
2014-07-09 18:10     ` Will Deacon
2014-07-10  9:49       ` Thierry Reding
2014-07-10 10:23         ` Will Deacon
2014-07-10 10:57           ` Thierry Reding
2014-07-10 12:38             ` Will Deacon
2014-07-11 20:55 ` Rob Clark
2014-07-12  9:39   ` Will Deacon
2014-07-12 11:26     ` Rob Clark
2014-07-12 12:22       ` Arnd Bergmann
2014-07-12 12:57         ` Rob Clark
2014-07-13  9:43           ` Will Deacon
2014-07-13 11:43             ` Rob Clark
2014-07-16  1:25               ` Olav Haugan
2014-07-16 10:10                 ` Will Deacon [this message]
2014-07-16 20:24                 ` Rob Clark
2014-07-14  6:44             ` Thierry Reding
2014-07-14 10:08               ` Will Deacon
2014-07-14  6:24           ` Thierry Reding
2014-07-14 10:13             ` Rob Clark
2014-07-14  6:15         ` Thierry Reding
2014-07-30 11:04 ` Will Deacon
2014-07-30 13:23   ` Thierry Reding
2014-07-30 13:33     ` Joerg Roedel
2014-07-30 17:37       ` Olof Johansson
2014-07-30 14:30     ` Will Deacon
2014-07-30 18:08       ` Rob Herring
2014-07-30 20:11     ` Arnd Bergmann
2014-07-30 15:26 ` Mark Rutland
2014-07-30 17:35   ` Olof Johansson
2014-07-30 18:18     ` Mark Rutland
2014-07-31 10:09       ` Thierry Reding
2014-07-31 10:50         ` Mark Rutland
2014-07-31 11:14           ` Thierry Reding
2014-07-31  9:51     ` Thierry Reding
2014-07-31  8:39   ` Thierry Reding
2014-07-31  9:22     ` Mark Rutland
2014-07-31 10:18       ` Thierry Reding
2014-07-31 10:23         ` Joerg Roedel
2014-07-31 10:46           ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140716101053.GJ29414@arm.com \
    --to=will.deacon@arm.com \
    --cc=Dave.Martin@arm.com \
    --cc=Marc.Zyngier@arm.com \
    --cc=Mark.Rutland@arm.com \
    --cc=Pawel.Moll@arm.com \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=grundler@chromium.org \
    --cc=hdoyu@nvidia.com \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=ohaugan@codeaurora.org \
    --cc=pullip.cho@samsung.com \
    --cc=robdclark@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=swarren@wwwdotorg.org \
    --cc=thierry.reding@gmail.com \
    --cc=varun.sethi@freescale.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).