All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
Cc: "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Pawel Moll <Pawel.Moll-5wv7dgnIgG8@public.gmane.org>,
	Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
	Grant Grundler <grundler-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Will Deacon <Will.Deacon-5wv7dgnIgG8@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Marc Zyngier <Marc.Zyngier-5wv7dgnIgG8@public.gmane.org>,
	"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
	Varun Sethi <varun.sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	Cho KyongHo <pullip.cho-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
	Dave P Martin <Dave.Martin-5wv7dgnIgG8@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH v4] devicetree: Add generic IOMMU device tree bindings
Date: Thu, 31 Jul 2014 12:09:06 +0200	[thread overview]
Message-ID: <20140731100905.GA7458@ulmo> (raw)
In-Reply-To: <20140730181842.GG20162@leverpostej>


[-- Attachment #1.1: Type: text/plain, Size: 2212 bytes --]

On Wed, Jul 30, 2014 at 07:18:42PM +0100, Mark Rutland wrote:
[...]
> > >> +
> > >> +Multiple-master IOMMU with configurable DMA window:
> > >> +---------------------------------------------------
> > >> +
> > >> +     / {
> > >> +             #address-cells = <1>;
> > >> +             #size-cells = <1>;
> > >> +
> > >> +             iommu {
> > >> +                     /* master ID, address and length of DMA window */
> > >> +                     #iommu-cells = <4>;
> > >> +             };
> > >> +
> > >> +             master {
> > >> +                     /* master ID 42, 4 GiB DMA window starting at 0 */
> > >> +                     iommus = <&/iommu  42  0  0x1 0x0>;
> > >
> > > Is this that window is from the POV of the master, i.e. the master can
> > > address 0x0 to 0xffffffff when generating transactions, and these get
> > > translated somehow?
> > >
> > > Or is this the physical addresses to allocate to the master?
> > 
> > It needs to be clarified in the documentation, but as far as I know it
> > is the DMA address space that is used.
> 
> Ok. So that's pre-translation, from the POV of the master?

Correct. It represents the window of the IOMMU's addressable I/O virtual
address space that should be assigned to this particular master.

> If we don't have that knowledge about the master already (e.g. based on
> the compatible string), surely we always need that information in a
> given iommu-specifier format? Otherwise certain iommus won't be able to
> handle masters with limited addressing only due to limitations of their
> binding.

This is only used for what's often called a windowed IOMMU. Many IOMMUs
(non-windowed) typically allow only a complete address space to be
assigned to a master without additional control over subregions. So this
is really a property/capability of the IOMMU rather than the masters
themselves.

There are already other means to respect the addressing limitations of
masters. We typcially use a device's DMA mask for this, and it's natural
to reuse that for I/O virtual addresses since they will in fact take the
place of physical addresses for the master when translation is enabled.

Thierry

[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



WARNING: multiple messages have this Message-ID (diff)
From: thierry.reding@gmail.com (Thierry Reding)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4] devicetree: Add generic IOMMU device tree bindings
Date: Thu, 31 Jul 2014 12:09:06 +0200	[thread overview]
Message-ID: <20140731100905.GA7458@ulmo> (raw)
In-Reply-To: <20140730181842.GG20162@leverpostej>

On Wed, Jul 30, 2014 at 07:18:42PM +0100, Mark Rutland wrote:
[...]
> > >> +
> > >> +Multiple-master IOMMU with configurable DMA window:
> > >> +---------------------------------------------------
> > >> +
> > >> +     / {
> > >> +             #address-cells = <1>;
> > >> +             #size-cells = <1>;
> > >> +
> > >> +             iommu {
> > >> +                     /* master ID, address and length of DMA window */
> > >> +                     #iommu-cells = <4>;
> > >> +             };
> > >> +
> > >> +             master {
> > >> +                     /* master ID 42, 4 GiB DMA window starting at 0 */
> > >> +                     iommus = <&/iommu  42  0  0x1 0x0>;
> > >
> > > Is this that window is from the POV of the master, i.e. the master can
> > > address 0x0 to 0xffffffff when generating transactions, and these get
> > > translated somehow?
> > >
> > > Or is this the physical addresses to allocate to the master?
> > 
> > It needs to be clarified in the documentation, but as far as I know it
> > is the DMA address space that is used.
> 
> Ok. So that's pre-translation, from the POV of the master?

Correct. It represents the window of the IOMMU's addressable I/O virtual
address space that should be assigned to this particular master.

> If we don't have that knowledge about the master already (e.g. based on
> the compatible string), surely we always need that information in a
> given iommu-specifier format? Otherwise certain iommus won't be able to
> handle masters with limited addressing only due to limitations of their
> binding.

This is only used for what's often called a windowed IOMMU. Many IOMMUs
(non-windowed) typically allow only a complete address space to be
assigned to a master without additional control over subregions. So this
is really a property/capability of the IOMMU rather than the masters
themselves.

There are already other means to respect the addressing limitations of
masters. We typcially use a device's DMA mask for this, and it's natural
to reuse that for I/O virtual addresses since they will in fact take the
place of physical addresses for the master when translation is enabled.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140731/2e943799/attachment-0001.sig>

WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding@gmail.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Olof Johansson <olof@lixom.net>, Rob Herring <robh+dt@kernel.org>,
	Pawel Moll <Pawel.Moll@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Arnd Bergmann <arnd@arndb.de>, Will Deacon <Will.Deacon@arm.com>,
	Joerg Roedel <joro@8bytes.org>,
	Cho KyongHo <pullip.cho@samsung.com>,
	Grant Grundler <grundler@chromium.org>,
	Dave P Martin <Dave.Martin@arm.com>,
	Marc Zyngier <Marc.Zyngier@arm.com>,
	Hiroshi Doyu <hdoyu@nvidia.com>,
	Olav Haugan <ohaugan@codeaurora.org>,
	Varun Sethi <varun.sethi@freescale.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4] devicetree: Add generic IOMMU device tree bindings
Date: Thu, 31 Jul 2014 12:09:06 +0200	[thread overview]
Message-ID: <20140731100905.GA7458@ulmo> (raw)
In-Reply-To: <20140730181842.GG20162@leverpostej>

[-- Attachment #1: Type: text/plain, Size: 2212 bytes --]

On Wed, Jul 30, 2014 at 07:18:42PM +0100, Mark Rutland wrote:
[...]
> > >> +
> > >> +Multiple-master IOMMU with configurable DMA window:
> > >> +---------------------------------------------------
> > >> +
> > >> +     / {
> > >> +             #address-cells = <1>;
> > >> +             #size-cells = <1>;
> > >> +
> > >> +             iommu {
> > >> +                     /* master ID, address and length of DMA window */
> > >> +                     #iommu-cells = <4>;
> > >> +             };
> > >> +
> > >> +             master {
> > >> +                     /* master ID 42, 4 GiB DMA window starting at 0 */
> > >> +                     iommus = <&/iommu  42  0  0x1 0x0>;
> > >
> > > Is this that window is from the POV of the master, i.e. the master can
> > > address 0x0 to 0xffffffff when generating transactions, and these get
> > > translated somehow?
> > >
> > > Or is this the physical addresses to allocate to the master?
> > 
> > It needs to be clarified in the documentation, but as far as I know it
> > is the DMA address space that is used.
> 
> Ok. So that's pre-translation, from the POV of the master?

Correct. It represents the window of the IOMMU's addressable I/O virtual
address space that should be assigned to this particular master.

> If we don't have that knowledge about the master already (e.g. based on
> the compatible string), surely we always need that information in a
> given iommu-specifier format? Otherwise certain iommus won't be able to
> handle masters with limited addressing only due to limitations of their
> binding.

This is only used for what's often called a windowed IOMMU. Many IOMMUs
(non-windowed) typically allow only a complete address space to be
assigned to a master without additional control over subregions. So this
is really a property/capability of the IOMMU rather than the masters
themselves.

There are already other means to respect the addressing limitations of
masters. We typcially use a device's DMA mask for this, and it's natural
to reuse that for I/O virtual addresses since they will in fact take the
place of physical addresses for the master when translation is enabled.

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2014-07-31 10:09 UTC|newest]

Thread overview: 126+ 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-04 15:29 ` Thierry Reding
2014-07-04 15:29 ` Thierry Reding
     [not found] ` <1404487757-18829-1-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-07-09 13:40   ` Will Deacon
2014-07-09 13:40     ` Will Deacon
2014-07-09 13:40     ` Will Deacon
     [not found]     ` <20140709134050.GN9485-5wv7dgnIgG8@public.gmane.org>
2014-07-09 14:21       ` Thierry Reding
2014-07-09 14:21         ` Thierry Reding
2014-07-09 14:21         ` Thierry Reding
2014-07-09 18:10         ` Will Deacon
2014-07-09 18:10           ` Will Deacon
2014-07-09 18:10           ` Will Deacon
     [not found]           ` <20140709181048.GX9485-5wv7dgnIgG8@public.gmane.org>
2014-07-10  9:49             ` Thierry Reding
2014-07-10  9:49               ` Thierry Reding
2014-07-10  9:49               ` Thierry Reding
2014-07-10 10:23               ` Will Deacon
2014-07-10 10:23                 ` Will Deacon
2014-07-10 10:23                 ` Will Deacon
     [not found]                 ` <20140710102334.GG2449-5wv7dgnIgG8@public.gmane.org>
2014-07-10 10:57                   ` Thierry Reding
2014-07-10 10:57                     ` Thierry Reding
2014-07-10 10:57                     ` Thierry Reding
2014-07-10 12:38                     ` Will Deacon
2014-07-10 12:38                       ` Will Deacon
2014-07-10 12:38                       ` Will Deacon
2014-07-11 20:55   ` Rob Clark
2014-07-11 20:55     ` Rob Clark
2014-07-11 20:55     ` Rob Clark
     [not found]     ` <CAF6AEGv2P_Uq8CHgm1YdaUeMSNdH62ZwjLnT83Fr5GnxEAhTMw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-12  9:39       ` Will Deacon
2014-07-12  9:39         ` Will Deacon
2014-07-12  9:39         ` Will Deacon
     [not found]         ` <20140712093917.GD18601-5wv7dgnIgG8@public.gmane.org>
2014-07-12 11:26           ` Rob Clark
2014-07-12 11:26             ` Rob Clark
2014-07-12 11:26             ` Rob Clark
     [not found]             ` <CAF6AEGutHp+3f3iPA+jjaRkqq=5T_vytZ_ESoSqsQ4RHZ8F8yQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-12 12:22               ` Arnd Bergmann
2014-07-12 12:22                 ` Arnd Bergmann
2014-07-12 12:22                 ` Arnd Bergmann
     [not found]                 ` <201407121422.02078.arnd-r2nGTMty4D4@public.gmane.org>
2014-07-12 12:57                   ` Rob Clark
2014-07-12 12:57                     ` Rob Clark
2014-07-12 12:57                     ` Rob Clark
     [not found]                     ` <CAF6AEGs7=3UByP2DLm-uwU03wr7M14x2t-0hLX-VPJ6_eZbU3g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-13  9:43                       ` Will Deacon
2014-07-13  9:43                         ` Will Deacon
2014-07-13  9:43                         ` Will Deacon
     [not found]                         ` <20140713094341.GB23235-5wv7dgnIgG8@public.gmane.org>
2014-07-13 11:43                           ` Rob Clark
2014-07-13 11:43                             ` Rob Clark
2014-07-13 11:43                             ` Rob Clark
2014-07-16  1:25                             ` Olav Haugan
2014-07-16  1:25                               ` Olav Haugan
2014-07-16  1:25                               ` Olav Haugan
     [not found]                               ` <53C5D480.3030409-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2014-07-16 10:10                                 ` Will Deacon
2014-07-16 10:10                                   ` Will Deacon
2014-07-16 10:10                                   ` Will Deacon
2014-07-16 20:24                                 ` Rob Clark
2014-07-16 20:24                                   ` Rob Clark
2014-07-16 20:24                                   ` Rob Clark
2014-07-14  6:44                         ` Thierry Reding
2014-07-14  6:44                           ` Thierry Reding
2014-07-14  6:44                           ` Thierry Reding
2014-07-14 10:08                           ` Will Deacon
2014-07-14 10:08                             ` Will Deacon
2014-07-14 10:08                             ` Will Deacon
2014-07-14  6:24                       ` Thierry Reding
2014-07-14  6:24                         ` Thierry Reding
2014-07-14  6:24                         ` Thierry Reding
2014-07-14 10:13                         ` Rob Clark
2014-07-14 10:13                           ` Rob Clark
2014-07-14 10:13                           ` Rob Clark
2014-07-14  6:15                   ` Thierry Reding
2014-07-14  6:15                     ` Thierry Reding
2014-07-14  6:15                     ` Thierry Reding
2014-07-30 11:04   ` Will Deacon
2014-07-30 11:04     ` Will Deacon
2014-07-30 11:04     ` Will Deacon
     [not found]     ` <20140730110425.GI12239-5wv7dgnIgG8@public.gmane.org>
2014-07-30 13:23       ` Thierry Reding
2014-07-30 13:23         ` Thierry Reding
2014-07-30 13:23         ` Thierry Reding
2014-07-30 13:33         ` Joerg Roedel
2014-07-30 13:33           ` Joerg Roedel
2014-07-30 13:33           ` Joerg Roedel
     [not found]           ` <20140730133309.GF9809-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2014-07-30 17:37             ` Olof Johansson
2014-07-30 17:37               ` Olof Johansson
2014-07-30 17:37               ` Olof Johansson
2014-07-30 14:30         ` Will Deacon
2014-07-30 14:30           ` Will Deacon
2014-07-30 14:30           ` Will Deacon
     [not found]           ` <20140730143037.GD8989-5wv7dgnIgG8@public.gmane.org>
2014-07-30 18:08             ` Rob Herring
2014-07-30 18:08               ` Rob Herring
2014-07-30 18:08               ` Rob Herring
2014-07-30 20:11         ` Arnd Bergmann
2014-07-30 20:11           ` Arnd Bergmann
2014-07-30 20:11           ` Arnd Bergmann
2014-07-30 15:26   ` Mark Rutland
2014-07-30 15:26     ` Mark Rutland
2014-07-30 15:26     ` Mark Rutland
2014-07-30 17:35     ` Olof Johansson
2014-07-30 17:35       ` Olof Johansson
2014-07-30 17:35       ` Olof Johansson
     [not found]       ` <CAOesGMi3zM1-cqmeGddJ69RNXx0ktFm_zXO_yq7N0EeA3HNrUQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-30 18:18         ` Mark Rutland
2014-07-30 18:18           ` Mark Rutland
2014-07-30 18:18           ` Mark Rutland
2014-07-31 10:09           ` Thierry Reding [this message]
2014-07-31 10:09             ` Thierry Reding
2014-07-31 10:09             ` Thierry Reding
2014-07-31 10:50             ` Mark Rutland
2014-07-31 10:50               ` Mark Rutland
2014-07-31 10:50               ` Mark Rutland
2014-07-31 11:14               ` Thierry Reding
2014-07-31 11:14                 ` Thierry Reding
2014-07-31 11:14                 ` Thierry Reding
2014-07-31  9:51         ` Thierry Reding
2014-07-31  9:51           ` Thierry Reding
2014-07-31  9:51           ` Thierry Reding
2014-07-31  8:39     ` Thierry Reding
2014-07-31  8:39       ` Thierry Reding
2014-07-31  8:39       ` Thierry Reding
2014-07-31  9:22       ` Mark Rutland
2014-07-31  9:22         ` Mark Rutland
2014-07-31  9:22         ` Mark Rutland
2014-07-31 10:18         ` Thierry Reding
2014-07-31 10:18           ` Thierry Reding
2014-07-31 10:18           ` Thierry Reding
2014-07-31 10:23           ` Joerg Roedel
2014-07-31 10:23             ` Joerg Roedel
2014-07-31 10:23             ` Joerg Roedel
     [not found]             ` <20140731102351.GJ9809-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2014-07-31 10:46               ` Thierry Reding
2014-07-31 10:46                 ` Thierry Reding
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=20140731100905.GA7458@ulmo \
    --to=thierry.reding-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=Dave.Martin-5wv7dgnIgG8@public.gmane.org \
    --cc=Marc.Zyngier-5wv7dgnIgG8@public.gmane.org \
    --cc=Pawel.Moll-5wv7dgnIgG8@public.gmane.org \
    --cc=Will.Deacon-5wv7dgnIgG8@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=grundler-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
    --cc=pullip.cho-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
    --cc=varun.sethi-KZfg59tc24xl57MIdRCFDg@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.