From: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
Cc: "jroedel-l3A5Bk7waGM@public.gmane.org"
<jroedel-l3A5Bk7waGM@public.gmane.org>,
"arnd-r2nGTMty4D4@public.gmane.org"
<arnd-r2nGTMty4D4@public.gmane.org>,
"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
"laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org"
<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
"Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org"
<Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
"dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org"
<dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [RFC PATCH v3 7/7] arm: dma-mapping: plumb our iommu mapping ops into arch_setup_dma_ops
Date: Tue, 23 Sep 2014 09:14:01 +0200 [thread overview]
Message-ID: <20140923071355.GI30514@ulmo> (raw)
In-Reply-To: <20140922174337.GI7936-5wv7dgnIgG8@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 2825 bytes --]
On Mon, Sep 22, 2014 at 06:43:37PM +0100, Will Deacon wrote:
> Hi Thierry,
>
> On Mon, Sep 22, 2014 at 10:19:35AM +0100, Thierry Reding wrote:
> > On Fri, Sep 12, 2014 at 05:34:55PM +0100, Will Deacon wrote:
> > [...]
> > > +static bool arm_setup_iommu_dma_ops(struct device *dev, u64 dma_base, u64 size)
> > > +{
> > > + struct dma_iommu_mapping *mapping;
> > > +
> > > + mapping = arm_iommu_create_mapping(dev->bus, dma_base, size);
> >
> > If I understand correctly this will be called for each device that has
> > an IOMMU master interface and will end up creating a new mapping for
> > each of the devices. Each of these mappings will translate to a domain
> > in the IOMMU API, which in turn is a separate address space.
>
> Correct, although that's largely because I've bolted on the existing ARM
> IOMMU code.
>
> > How do you envision to support use-cases where a set of devices need to
> > share a single domain? This is needed for example in DRM where SoCs
> > often have a set of hardware blocks (each with its own master interface)
> > that compose the display device. On Tegra for example there are two
> > display controllers that need access to the same IOVA domain so that
> > they can scan out framebuffers.
>
> Yup. In this case, the iommu_dma_mapping passed to arch_setup_dma_ops
> contains a domain and an allocator for each IOMMU instance in the system.
> It would then be up to the architecture how it makes use of those, but
> the most obvious thing to do would be to attach devices mastering through
> an IOMMU instance to that per-instance domain.
>
> The other use-case is isolation (one domain per device), which I guess
> matches what the ARM code is doing at the moment.
I think there are two cases here. You can have a composite device that
wants to manage a single domain (using its own allocator) for a set of
hardware devices. At the same time a set of devices (think 2D and 3D
engines) could want to use a multiple domains for process separation.
In that case I'd expect a logical DRM device to allocate one domain per
process and then associate the 2D and 3D engines with that same domain
on process switch.
What I proposed a while back was to leave it up to the IOMMU driver to
choose an allocator for the device. Or rather, choose whether to use a
custom allocator or the DMA/IOMMU integration allocator. The way this
worked was to keep a list of devices in the IOMMU driver. Devices in
this list would be added to domain reserved for DMA/IOMMU integration.
Those would typically be devices such as SD/MMC, audio, ... devices that
are in-kernel and need no per-process separation. By default devices
wouldn't be added to a domain, so devices forming a composite DRM device
would be able to manage their own domain.
Thierry
[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2014-09-23 7:14 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-12 16:34 [RFC PATCH v3 0/7] Introduce automatic DMA configuration for IOMMU masters Will Deacon
[not found] ` <1410539695-29128-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-12 16:34 ` [RFC PATCH v3 1/7] iommu: provide early initialisation hook for IOMMU drivers Will Deacon
2014-09-18 14:31 ` Robin Murphy
[not found] ` <541AECDA.1000805-5wv7dgnIgG8@public.gmane.org>
2014-09-22 17:35 ` Will Deacon
2014-09-12 16:34 ` [RFC PATCH v3 2/7] dma-mapping: replace set_arch_dma_coherent_ops with arch_setup_dma_ops Will Deacon
2014-09-12 16:34 ` [RFC PATCH v3 3/7] iommu: add new iommu_ops callback for adding an OF device Will Deacon
[not found] ` <1410539695-29128-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-15 11:57 ` Marek Szyprowski
[not found] ` <5416D432.8020107-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-09-17 1:39 ` Will Deacon
2014-09-12 16:34 ` [RFC PATCH v3 4/7] iommu: provide helper function to configure an IOMMU for an of master Will Deacon
[not found] ` <1410539695-29128-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-18 11:13 ` Laurent Pinchart
2014-09-22 17:13 ` Will Deacon
[not found] ` <20140922171352.GF7936-5wv7dgnIgG8@public.gmane.org>
2014-10-14 13:12 ` Laurent Pinchart
2014-09-12 16:34 ` [RFC PATCH v3 5/7] dma-mapping: detect and configure IOMMU in of_dma_configure Will Deacon
[not found] ` <1410539695-29128-6-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-18 11:17 ` Laurent Pinchart
2014-09-22 9:29 ` Thierry Reding
2014-09-22 17:50 ` Will Deacon
[not found] ` <20140922175027.GK7936-5wv7dgnIgG8@public.gmane.org>
2014-10-14 12:53 ` Laurent Pinchart
2014-10-27 10:51 ` Will Deacon
[not found] ` <20141027105158.GE8768-5wv7dgnIgG8@public.gmane.org>
2014-10-27 11:12 ` Marek Szyprowski
2014-10-27 11:30 ` Laurent Pinchart
2014-10-27 16:02 ` Will Deacon
[not found] ` <20141027160216.GY8768-5wv7dgnIgG8@public.gmane.org>
2014-10-27 16:33 ` jroedel-l3A5Bk7waGM
2014-09-22 17:46 ` Will Deacon
2014-09-12 16:34 ` [RFC PATCH v3 6/7] arm: call iommu_init before of_platform_populate Will Deacon
[not found] ` <1410539695-29128-7-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-22 9:36 ` Thierry Reding
2014-09-22 11:08 ` Arnd Bergmann
2014-09-22 11:40 ` Thierry Reding
2014-09-22 16:03 ` Arnd Bergmann
2014-09-23 7:02 ` Thierry Reding
2014-09-23 7:44 ` Arnd Bergmann
2014-09-23 8:59 ` Thierry Reding
2014-10-14 13:07 ` Laurent Pinchart
2014-10-14 13:20 ` Arnd Bergmann
2014-10-14 13:37 ` Thierry Reding
2014-10-14 15:01 ` Laurent Pinchart
2014-10-14 15:05 ` Thierry Reding
2014-10-14 15:10 ` Laurent Pinchart
2014-09-12 16:34 ` [RFC PATCH v3 7/7] arm: dma-mapping: plumb our iommu mapping ops into arch_setup_dma_ops Will Deacon
[not found] ` <1410539695-29128-8-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-22 9:19 ` Thierry Reding
2014-09-22 9:22 ` Laurent Pinchart
2014-09-22 17:43 ` Will Deacon
[not found] ` <20140922174337.GI7936-5wv7dgnIgG8@public.gmane.org>
2014-09-23 7:14 ` Thierry Reding [this message]
2014-09-24 16:33 ` Will Deacon
[not found] ` <20140924163338.GF16244-5wv7dgnIgG8@public.gmane.org>
2014-09-25 6:40 ` Thierry Reding
2014-09-30 16:00 ` Will Deacon
[not found] ` <20140930160035.GM2548-5wv7dgnIgG8@public.gmane.org>
2014-10-01 8:46 ` Thierry Reding
2014-10-03 15:08 ` Will Deacon
[not found] ` <20141003150850.GA32451-5wv7dgnIgG8@public.gmane.org>
2014-10-06 9:52 ` Thierry Reding
2014-10-06 10:50 ` Laurent Pinchart
2014-10-06 13:05 ` Thierry Reding
2014-09-16 11:40 ` [RFC PATCH v3 0/7] Introduce automatic DMA configuration for IOMMU masters Robin Murphy
[not found] ` <541821AB.8040403-5wv7dgnIgG8@public.gmane.org>
2014-09-17 1:19 ` Will Deacon
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=20140923071355.GI30514@ulmo \
--to=thierry.reding-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=jroedel-l3A5Bk7waGM@public.gmane.org \
--cc=laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@public.gmane.org \
/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).