All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
To: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Pawel Moll <Pawel.Moll-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <Mark.Rutland-5wv7dgnIgG8@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>,
	Cho KyongHo <pullip.cho-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
	Grant Grundler <grundler-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	Dave P Martin <Dave.Martin-5wv7dgnIgG8@public.gmane.org>,
	Marc Zyngier <Marc.Zyngier-5wv7dgnIgG8@public.gmane.org>,
	Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	Olav Haugan <ohaugan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Varun Sethi <varun.sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TZNg+MwTxZMZA@public.gmane.org>
Subject: Re: [PATCH v4] devicetree: Add generic IOMMU device tree bindings
Date: Thu, 10 Jul 2014 11:23:34 +0100	[thread overview]
Message-ID: <20140710102334.GG2449@arm.com> (raw)
In-Reply-To: <20140710094909.GA21583@ulmo>

On Thu, Jul 10, 2014 at 10:49:10AM +0100, Thierry Reding wrote:
> On Wed, Jul 09, 2014 at 07:10:48PM +0100, Will Deacon wrote:
> > On Wed, Jul 09, 2014 at 03:21:27PM +0100, Thierry Reding wrote:
> > > Anything beyond that (e.g. logical grouping of masters) isn't directly
> > > within the scope of the binding (it doesn't describe hardware but some
> > > policy pertaining to some specific use-case).
> > 
> > This *is* for hardware. I can use PCI as an example, but this could equally
> > apply to other types of bus. If you have a bunch of PCI master devices
> > sitting being a non-transparent bridge, they can end up sharing the same
> > master device ID (requester ID). This means that there is no way in the
> > IOMMU to initialise a translation for one of these devices without also
> > affecting the others. We currently have iommu_groups to deal with this, but
> > it *is* a property of the hardware and we absolutely need a way to describe
> > it. I'm happy to add it later, but we need to think about it now to avoid
> > merging something that can't easily be extended.
> > 
> > For PCI, the topology is probable but even then, we need this information to
> > describe the resulting master device ID emitted by the bridge for the
> > upstream group. One way to do this with your binding would be to treat all
> > of the upstream masters as having the same device ID.
> 
> Yes, I think that makes most sense. After all from the IOMMU's point of
> view requests from all devices behind the bridge will originate from the
> same ID.
> 
> So technically it's not really correct to encode the master ID within
> each of the devices, but rather they should be inheriting the ID from
> the non-transparent bridge.

Indeed. Is that possible with your binding, or would we just duplicate the
IDs between the masters?

> > With virtualisation, we may want to assign a group of devices to a guest but
> > without emulating the bridge. This would need something the device-tree to
> > describe that they are grouped together.
> 
> But that's also a software decision, isn't it? Virtualization doesn't
> have anything to do with the hardware description. Or am I missing
> something? Of course I guess you could generate a DTB for the guest and
> group device together, in which case you're pretty much free to do what
> you want since you're essentially defining your own hardware.

If you're doing device passthrough and you want to allow the guest to
program the IOMMU, I think that virtualisation is directly related to the
hardware description, since the guest will be bound by physical properties
of the system.

Will

WARNING: multiple messages have this Message-ID (diff)
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4] devicetree: Add generic IOMMU device tree bindings
Date: Thu, 10 Jul 2014 11:23:34 +0100	[thread overview]
Message-ID: <20140710102334.GG2449@arm.com> (raw)
In-Reply-To: <20140710094909.GA21583@ulmo>

On Thu, Jul 10, 2014 at 10:49:10AM +0100, Thierry Reding wrote:
> On Wed, Jul 09, 2014 at 07:10:48PM +0100, Will Deacon wrote:
> > On Wed, Jul 09, 2014 at 03:21:27PM +0100, Thierry Reding wrote:
> > > Anything beyond that (e.g. logical grouping of masters) isn't directly
> > > within the scope of the binding (it doesn't describe hardware but some
> > > policy pertaining to some specific use-case).
> > 
> > This *is* for hardware. I can use PCI as an example, but this could equally
> > apply to other types of bus. If you have a bunch of PCI master devices
> > sitting being a non-transparent bridge, they can end up sharing the same
> > master device ID (requester ID). This means that there is no way in the
> > IOMMU to initialise a translation for one of these devices without also
> > affecting the others. We currently have iommu_groups to deal with this, but
> > it *is* a property of the hardware and we absolutely need a way to describe
> > it. I'm happy to add it later, but we need to think about it now to avoid
> > merging something that can't easily be extended.
> > 
> > For PCI, the topology is probable but even then, we need this information to
> > describe the resulting master device ID emitted by the bridge for the
> > upstream group. One way to do this with your binding would be to treat all
> > of the upstream masters as having the same device ID.
> 
> Yes, I think that makes most sense. After all from the IOMMU's point of
> view requests from all devices behind the bridge will originate from the
> same ID.
> 
> So technically it's not really correct to encode the master ID within
> each of the devices, but rather they should be inheriting the ID from
> the non-transparent bridge.

Indeed. Is that possible with your binding, or would we just duplicate the
IDs between the masters?

> > With virtualisation, we may want to assign a group of devices to a guest but
> > without emulating the bridge. This would need something the device-tree to
> > describe that they are grouped together.
> 
> But that's also a software decision, isn't it? Virtualization doesn't
> have anything to do with the hardware description. Or am I missing
> something? Of course I guess you could generate a DTB for the guest and
> group device together, in which case you're pretty much free to do what
> you want since you're essentially defining your own hardware.

If you're doing device passthrough and you want to allow the guest to
program the IOMMU, I think that virtualisation is directly related to the
hardware description, since the guest will be bound by physical properties
of the system.

Will

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will.deacon@arm.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: 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>,
	Arnd Bergmann <arnd@arndb.de>, 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, 10 Jul 2014 11:23:34 +0100	[thread overview]
Message-ID: <20140710102334.GG2449@arm.com> (raw)
In-Reply-To: <20140710094909.GA21583@ulmo>

On Thu, Jul 10, 2014 at 10:49:10AM +0100, Thierry Reding wrote:
> On Wed, Jul 09, 2014 at 07:10:48PM +0100, Will Deacon wrote:
> > On Wed, Jul 09, 2014 at 03:21:27PM +0100, Thierry Reding wrote:
> > > Anything beyond that (e.g. logical grouping of masters) isn't directly
> > > within the scope of the binding (it doesn't describe hardware but some
> > > policy pertaining to some specific use-case).
> > 
> > This *is* for hardware. I can use PCI as an example, but this could equally
> > apply to other types of bus. If you have a bunch of PCI master devices
> > sitting being a non-transparent bridge, they can end up sharing the same
> > master device ID (requester ID). This means that there is no way in the
> > IOMMU to initialise a translation for one of these devices without also
> > affecting the others. We currently have iommu_groups to deal with this, but
> > it *is* a property of the hardware and we absolutely need a way to describe
> > it. I'm happy to add it later, but we need to think about it now to avoid
> > merging something that can't easily be extended.
> > 
> > For PCI, the topology is probable but even then, we need this information to
> > describe the resulting master device ID emitted by the bridge for the
> > upstream group. One way to do this with your binding would be to treat all
> > of the upstream masters as having the same device ID.
> 
> Yes, I think that makes most sense. After all from the IOMMU's point of
> view requests from all devices behind the bridge will originate from the
> same ID.
> 
> So technically it's not really correct to encode the master ID within
> each of the devices, but rather they should be inheriting the ID from
> the non-transparent bridge.

Indeed. Is that possible with your binding, or would we just duplicate the
IDs between the masters?

> > With virtualisation, we may want to assign a group of devices to a guest but
> > without emulating the bridge. This would need something the device-tree to
> > describe that they are grouped together.
> 
> But that's also a software decision, isn't it? Virtualization doesn't
> have anything to do with the hardware description. Or am I missing
> something? Of course I guess you could generate a DTB for the guest and
> group device together, in which case you're pretty much free to do what
> you want since you're essentially defining your own hardware.

If you're doing device passthrough and you want to allow the guest to
program the IOMMU, I think that virtualisation is directly related to the
hardware description, since the guest will be bound by physical properties
of the system.

Will

  reply	other threads:[~2014-07-10 10:23 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 [this message]
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
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=20140710102334.GG2449@arm.com \
    --to=will.deacon-5wv7dgnigg8@public.gmane.org \
    --cc=Dave.Martin-5wv7dgnIgG8@public.gmane.org \
    --cc=Marc.Zyngier-5wv7dgnIgG8@public.gmane.org \
    --cc=Mark.Rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=Pawel.Moll-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=hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TZNg+MwTxZMZA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=ohaugan-sgV2jX0FEOL9JmXXK+q4OQ@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=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@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.