From: Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: "jroedel-l3A5Bk7waGM@public.gmane.org"
<jroedel-l3A5Bk7waGM@public.gmane.org>,
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
"thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org"
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@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>
Subject: Re: [RFC PATCH 0/7] Introduce automatic DMA configuration for IOMMU masters
Date: Tue, 02 Sep 2014 14:30:36 +0200 [thread overview]
Message-ID: <5405B86C.9010704@samsung.com> (raw)
In-Reply-To: <3261702.HRSZJsEv5z@wuerfel>
Hi Arnd,
On 2014-09-02 14:22, Arnd Bergmann wrote:
> On Tuesday 02 September 2014 12:42:13 Marek Szyprowski wrote:
>> On 2014-09-02 10:56, Arnd Bergmann wrote:
>>> On Tuesday 02 September 2014 10:48:02 Marek Szyprowski wrote:
>>>>> -- I have concerns that allocating one domain per master might be
>>>>> too much, but it's hard to tell without an IOMMU driver ported over.
>>>> One domain per master is IMHO a sane default configuration. The only default
>>>> alternative I see is to have only one domain (related with dma-mapping
>>>> subsystem) and bind all devices to it. However I really don't see any
>>>> disadvantage of having separate domain per each master and such
>>>> configuration
>>>> gives devices better separation.
>>> I was expecting that the dma-mapping implementation would by default use
>>> one domain for all devices, since that is what the simpler IOMMUs without
>>> domain support have to do anyway.
>>>
>>> For isolation purposes, it can only help to have more domains, but
>>> I would guess that there is some space overhead in maintaining lots
>>> of page tables.
>> I'm okay with both approaches (separate domain for each device vs. single
>> common domain for all devices). Maybe this can be some kind of Kconfig
>> option added to DMA debugging? Separation might be really helpful when
>> debugging strange device behavior.
> We should probably support the iommu=strict command line option that some
> other architectures have. This is mainly meant to ensure that IOTLBs
> are shot down as soon as the driver unmaps some memory, which you often
> want to avoid for performance reasons.
>
> The iommu driver itself can then decide to also use separate domains
> for iommu=strict but a shared domain otherwise.
>
> For hardware on which the shared domain is hard to do, the driver might
> always use separate domains.
Just to let you know, lazy unmapping is not yet implemented in ARM
dma-mapping
implementation based on IOMMU.
>>>> However we also need to figure out how to let drivers to make their own
>>>> configuration, like it is required by Exynos DRM subsystem, which consist
>>>> of several devices, each having its own IOMMU controller, but for
>>>> convenience those drivers assume that they all have been bound to the same,
>>>> single domain.
>>> IIRC with the way we ended up putting the mask into the iommu descriptor of
>>> the ARM SMMU, you can put multiple devices into the same iommu group, and
>>> have them automatically share a domain.
>>>
>>> I don't know if the same would work for the Samsung implementation.
>> The question is how to transfer such information from the device
>> drivers, that
>> need/benefit from such configuration to iommu driver, which does all the
>> setup?
>> This is something completely internal to particular drivers and should
>> not be
>> exported to device tree or userspace. Thierry suggested to hardcode this
>> information in the iommu driver, but I'm looking for other approaches.
>> Maybe simply releasing device from the default dma-mapping domain before
>> attaching to custom one will be the easiest solution.
> For the ARM SMMU, the problem is that there is not necessarily a good way
> to partition the masters into IOMMU groups automatically, therefore we
> want to provide some hints in DT. On a machine that can have more domains
> than it has masters, this is not a problem and we can always use an
> all-ones mask, but for a machine on which this is not the case, the
> problem is simplified a lot of we hardcode the masks in a way that can
> always work, putting multiple devices into an iommu group if necessary.
Well, I was talking about the Exynos IOMMU case, where there are no hw
restrictions and grouping is done just to make things easier for the Exynos
DRM drivers (a buffer gets the same DMA address for all devices, which
are a part of virtual Exynos DRM device).
> This is similar to how we do things for pinctrl, where you might have
> a theoretically endless space of options to set stuff up, but we
> can simplify it by defining the useful configurations.
Right, if hardware is limited, a sane working configuration is something
that
should be encoded in device tree.
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
WARNING: multiple messages have this Message-ID (diff)
From: m.szyprowski@samsung.com (Marek Szyprowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 0/7] Introduce automatic DMA configuration for IOMMU masters
Date: Tue, 02 Sep 2014 14:30:36 +0200 [thread overview]
Message-ID: <5405B86C.9010704@samsung.com> (raw)
In-Reply-To: <3261702.HRSZJsEv5z@wuerfel>
Hi Arnd,
On 2014-09-02 14:22, Arnd Bergmann wrote:
> On Tuesday 02 September 2014 12:42:13 Marek Szyprowski wrote:
>> On 2014-09-02 10:56, Arnd Bergmann wrote:
>>> On Tuesday 02 September 2014 10:48:02 Marek Szyprowski wrote:
>>>>> -- I have concerns that allocating one domain per master might be
>>>>> too much, but it's hard to tell without an IOMMU driver ported over.
>>>> One domain per master is IMHO a sane default configuration. The only default
>>>> alternative I see is to have only one domain (related with dma-mapping
>>>> subsystem) and bind all devices to it. However I really don't see any
>>>> disadvantage of having separate domain per each master and such
>>>> configuration
>>>> gives devices better separation.
>>> I was expecting that the dma-mapping implementation would by default use
>>> one domain for all devices, since that is what the simpler IOMMUs without
>>> domain support have to do anyway.
>>>
>>> For isolation purposes, it can only help to have more domains, but
>>> I would guess that there is some space overhead in maintaining lots
>>> of page tables.
>> I'm okay with both approaches (separate domain for each device vs. single
>> common domain for all devices). Maybe this can be some kind of Kconfig
>> option added to DMA debugging? Separation might be really helpful when
>> debugging strange device behavior.
> We should probably support the iommu=strict command line option that some
> other architectures have. This is mainly meant to ensure that IOTLBs
> are shot down as soon as the driver unmaps some memory, which you often
> want to avoid for performance reasons.
>
> The iommu driver itself can then decide to also use separate domains
> for iommu=strict but a shared domain otherwise.
>
> For hardware on which the shared domain is hard to do, the driver might
> always use separate domains.
Just to let you know, lazy unmapping is not yet implemented in ARM
dma-mapping
implementation based on IOMMU.
>>>> However we also need to figure out how to let drivers to make their own
>>>> configuration, like it is required by Exynos DRM subsystem, which consist
>>>> of several devices, each having its own IOMMU controller, but for
>>>> convenience those drivers assume that they all have been bound to the same,
>>>> single domain.
>>> IIRC with the way we ended up putting the mask into the iommu descriptor of
>>> the ARM SMMU, you can put multiple devices into the same iommu group, and
>>> have them automatically share a domain.
>>>
>>> I don't know if the same would work for the Samsung implementation.
>> The question is how to transfer such information from the device
>> drivers, that
>> need/benefit from such configuration to iommu driver, which does all the
>> setup?
>> This is something completely internal to particular drivers and should
>> not be
>> exported to device tree or userspace. Thierry suggested to hardcode this
>> information in the iommu driver, but I'm looking for other approaches.
>> Maybe simply releasing device from the default dma-mapping domain before
>> attaching to custom one will be the easiest solution.
> For the ARM SMMU, the problem is that there is not necessarily a good way
> to partition the masters into IOMMU groups automatically, therefore we
> want to provide some hints in DT. On a machine that can have more domains
> than it has masters, this is not a problem and we can always use an
> all-ones mask, but for a machine on which this is not the case, the
> problem is simplified a lot of we hardcode the masks in a way that can
> always work, putting multiple devices into an iommu group if necessary.
Well, I was talking about the Exynos IOMMU case, where there are no hw
restrictions and grouping is done just to make things easier for the Exynos
DRM drivers (a buffer gets the same DMA address for all devices, which
are a part of virtual Exynos DRM device).
> This is similar to how we do things for pinctrl, where you might have
> a theoretically endless space of options to set stuff up, but we
> can simplify it by defining the useful configurations.
Right, if hardware is limited, a sane working configuration is something
that
should be encoded in device tree.
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
next prev parent reply other threads:[~2014-09-02 12:30 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-29 15:54 [RFC PATCH 0/7] Introduce automatic DMA configuration for IOMMU masters Will Deacon
2014-08-29 15:54 ` Will Deacon
[not found] ` <1409327670-3495-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-08-29 15:54 ` [RFC PATCH 1/7] iommu: provide early initialisation hook for IOMMU drivers Will Deacon
2014-08-29 15:54 ` Will Deacon
[not found] ` <1409327670-3495-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-01 7:52 ` Thierry Reding
2014-09-01 7:52 ` Thierry Reding
2014-09-01 14:31 ` Arnd Bergmann
2014-09-01 14:31 ` Arnd Bergmann
2014-09-01 16:36 ` Will Deacon
2014-09-01 16:36 ` Will Deacon
2014-09-02 6:56 ` Laurent Pinchart
2014-09-02 6:56 ` Laurent Pinchart
2014-09-02 14:47 ` Varun Sethi
2014-09-02 14:47 ` Varun Sethi
2014-09-02 15:04 ` Arnd Bergmann
2014-09-02 15:04 ` Arnd Bergmann
2014-08-29 15:54 ` [RFC PATCH 2/7] dma-mapping: replace set_arch_dma_coherent_ops with arch_setup_dma_ops Will Deacon
2014-08-29 15:54 ` Will Deacon
[not found] ` <1409327670-3495-3-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-01 14:27 ` Arnd Bergmann
2014-09-01 14:27 ` Arnd Bergmann
2014-09-01 16:20 ` Will Deacon
2014-09-01 16:20 ` Will Deacon
2014-08-29 15:54 ` [RFC PATCH 3/7] iommu: add new iommu_ops callback for adding a device with a set of IDs Will Deacon
2014-08-29 15:54 ` Will Deacon
[not found] ` <1409327670-3495-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-01 8:13 ` Thierry Reding
2014-09-01 8:13 ` Thierry Reding
2014-09-01 14:39 ` Arnd Bergmann
2014-09-01 14:39 ` Arnd Bergmann
2014-09-01 16:34 ` Will Deacon
2014-09-01 16:34 ` Will Deacon
[not found] ` <20140901163400.GK24594-5wv7dgnIgG8@public.gmane.org>
2014-09-01 17:18 ` Arnd Bergmann
2014-09-01 17:18 ` Arnd Bergmann
2014-08-29 15:54 ` [RFC PATCH 4/7] iommu: provide helper function to configure an IOMMU for an of master Will Deacon
2014-08-29 15:54 ` Will Deacon
[not found] ` <1409327670-3495-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-01 8:29 ` Thierry Reding
2014-09-01 8:29 ` Thierry Reding
2014-09-01 14:46 ` Arnd Bergmann
2014-09-01 14:46 ` Arnd Bergmann
2014-09-01 16:40 ` Will Deacon
2014-09-01 16:40 ` Will Deacon
[not found] ` <20140901164000.GM24594-5wv7dgnIgG8@public.gmane.org>
2014-09-01 20:18 ` Arnd Bergmann
2014-09-01 20:18 ` Arnd Bergmann
2014-09-02 10:03 ` Will Deacon
2014-09-02 10:03 ` Will Deacon
[not found] ` <20140902100342.GG25379-5wv7dgnIgG8@public.gmane.org>
2014-09-02 12:15 ` Arnd Bergmann
2014-09-02 12:15 ` Arnd Bergmann
2014-09-02 13:05 ` Will Deacon
2014-09-02 13:05 ` Will Deacon
[not found] ` <20140902130508.GK25379-5wv7dgnIgG8@public.gmane.org>
2014-09-02 14:01 ` Arnd Bergmann
2014-09-02 14:01 ` Arnd Bergmann
2014-09-02 20:59 ` jroedel-l3A5Bk7waGM
2014-09-02 20:59 ` jroedel at suse.de
[not found] ` <20140902205941.GA26123-l3A5Bk7waGM@public.gmane.org>
2014-09-03 9:45 ` Will Deacon
2014-09-03 9:45 ` Will Deacon
2014-09-02 15:03 ` Varun Sethi
2014-09-02 15:03 ` Varun Sethi
[not found] ` <b8484a1ea45846bbaa8512d4597b9e65-AZ66ij2kwaacCcN9WK45f+O6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-09-02 15:08 ` Arnd Bergmann
2014-09-02 15:08 ` Arnd Bergmann
2014-09-02 10:23 ` Laurent Pinchart
2014-09-02 10:23 ` Laurent Pinchart
2014-09-02 10:51 ` Laurent Pinchart
2014-09-02 10:51 ` Laurent Pinchart
2014-09-02 11:03 ` Will Deacon
2014-09-02 11:03 ` Will Deacon
[not found] ` <20140902110340.GI25379-5wv7dgnIgG8@public.gmane.org>
2014-09-02 19:08 ` Laurent Pinchart
2014-09-02 19:08 ` Laurent Pinchart
2014-09-02 14:55 ` Varun Sethi
2014-09-02 14:55 ` Varun Sethi
2014-08-29 15:54 ` [RFC PATCH 5/7] dma-mapping: detect and configure IOMMU in of_dma_configure Will Deacon
2014-08-29 15:54 ` Will Deacon
[not found] ` <1409327670-3495-6-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-01 14:53 ` Arnd Bergmann
2014-09-01 14:53 ` Arnd Bergmann
2014-08-29 15:54 ` [RFC PATCH 6/7] arm: call iommu_init before of_platform_populate Will Deacon
2014-08-29 15:54 ` Will Deacon
2014-08-29 15:54 ` [RFC PATCH 7/7] arm: dma-mapping: plumb our iommu mapping ops into arch_setup_dma_ops Will Deacon
2014-08-29 15:54 ` Will Deacon
2014-09-02 6:26 ` [RFC PATCH 0/7] Introduce automatic DMA configuration for IOMMU masters Marek Szyprowski
2014-09-02 6:26 ` Marek Szyprowski
[not found] ` <540562F9.2030508-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-09-02 8:31 ` Will Deacon
2014-09-02 8:31 ` Will Deacon
[not found] ` <20140902083138.GA25379-5wv7dgnIgG8@public.gmane.org>
2014-09-02 8:48 ` Marek Szyprowski
2014-09-02 8:48 ` Marek Szyprowski
[not found] ` <54058442.2070204-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-09-02 8:56 ` Arnd Bergmann
2014-09-02 8:56 ` Arnd Bergmann
2014-09-02 10:42 ` Marek Szyprowski
2014-09-02 10:42 ` Marek Szyprowski
[not found] ` <54059F05.2090901-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-09-02 10:57 ` Will Deacon
2014-09-02 10:57 ` Will Deacon
[not found] ` <20140902105730.GH25379-5wv7dgnIgG8@public.gmane.org>
2014-09-02 12:24 ` Marek Szyprowski
2014-09-02 12:24 ` Marek Szyprowski
[not found] ` <5405B6F2.1060105-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-09-02 12:43 ` Arnd Bergmann
2014-09-02 12:43 ` Arnd Bergmann
2014-09-02 21:50 ` Laurent Pinchart
2014-09-02 21:50 ` Laurent Pinchart
2014-09-02 12:22 ` Arnd Bergmann
2014-09-02 12:22 ` Arnd Bergmann
2014-09-02 12:30 ` Marek Szyprowski [this message]
2014-09-02 12:30 ` Marek Szyprowski
2014-09-02 12:46 ` Arnd Bergmann
2014-09-02 12:46 ` Arnd Bergmann
2014-09-02 13:11 ` Marek Szyprowski
2014-09-02 13:11 ` Marek Szyprowski
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=5405B86C.9010704@samsung.com \
--to=m.szyprowski-sze3o3uu22jbdgjk7y7tuq@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=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@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 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.