From: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: "jroedel-l3A5Bk7waGM@public.gmane.org"
<jroedel-l3A5Bk7waGM@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>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [RFC PATCH v4 0/8] Introduce automatic DMA configuration for IOMMU masters
Date: Fri, 14 Nov 2014 19:27:54 +0000 [thread overview]
Message-ID: <20141114192754.GB9291@arm.com> (raw)
In-Reply-To: <3630936.HRExZgJGyp@wuerfel>
Hi Arnd,
Thanks for having a look.
On Fri, Nov 14, 2014 at 07:11:23PM +0000, Arnd Bergmann wrote:
> On Friday 14 November 2014 18:56:29 Will Deacon wrote:
> >
> > Here is the fourth iteration of the RFC I've previously posted here:
> >
> > RFCv1: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-August/283023.html
> > RFCv2: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/283752.html
> > RFCv3: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/287031.html
> >
> > Changes since RFCv3 include:
> >
> > - Drastic simplification of the data structures, so that we no longer
> > pass around lists of domains. Instead, dma-mapping is expected to
> > allocate the domain (Joerg talked about adding a get_default_domain
> > operation to iommu_ops).
> >
> > - iommu_ops is used to hold the per-instance IOMMU data
> >
> > - Configuration of DMA segments added to of_dma_configure
> >
> > All feedback welcome.
> >
> >
>
> Overall I think this is really nice, and I don't mind this going in,
> I only have one issue with they way you use iommu_ops now:
Hehe, I thought you might have something to say about that. I also had second
thoughts, but decided it wasn't worse than what we already have (more below).
> At the moment, iommu_ops is a structure that can get used for any
> number of iommus of the same type, but by putting per-device private
> data into the same structure you have to duplicate it per instance.
I'm not sure I agree -- the pgsize_bitmap, for example, could vary between
different implementations of the same IOMMU. I think we already have this in
Juno (some SMMUs can only do 64k pages, whilst others can do 4k and 64k).
> I think rather than adding a .priv pointer to iommu_ops, we should do
> the same thing that a lot of other subsystems have:
>
> /* generic structure */
> struct iommu {
> struct iommu_ops *ops;
> /* possibly other generic per-instance members */
> };
>
> /* driver specific structure */
> struct arm_smmu {
> struct iommu iommu;
>
> /* smmu specific members */
> };
> static inline struct arm_smmu *to_arm_smmu(struct iommu *iommu)
> {
> return container_of(iommu, struct arm_smmu, iommu);
> }
Regardless of the arguments above, I think this layout is cleaner. We could
also move the pgsize_bitmap into struct iommu in that case, however, that
would be a more invasive patch series than I what I currently have.
If I do another version of the patch, I can easily add a struct iommu and
stash that in the device_node data for the IOMMU instead of directly
putting the ops there. That's at least a step in the right direction.
Cheers,
Will
WARNING: multiple messages have this Message-ID (diff)
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH v4 0/8] Introduce automatic DMA configuration for IOMMU masters
Date: Fri, 14 Nov 2014 19:27:54 +0000 [thread overview]
Message-ID: <20141114192754.GB9291@arm.com> (raw)
In-Reply-To: <3630936.HRExZgJGyp@wuerfel>
Hi Arnd,
Thanks for having a look.
On Fri, Nov 14, 2014 at 07:11:23PM +0000, Arnd Bergmann wrote:
> On Friday 14 November 2014 18:56:29 Will Deacon wrote:
> >
> > Here is the fourth iteration of the RFC I've previously posted here:
> >
> > RFCv1: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-August/283023.html
> > RFCv2: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/283752.html
> > RFCv3: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/287031.html
> >
> > Changes since RFCv3 include:
> >
> > - Drastic simplification of the data structures, so that we no longer
> > pass around lists of domains. Instead, dma-mapping is expected to
> > allocate the domain (Joerg talked about adding a get_default_domain
> > operation to iommu_ops).
> >
> > - iommu_ops is used to hold the per-instance IOMMU data
> >
> > - Configuration of DMA segments added to of_dma_configure
> >
> > All feedback welcome.
> >
> >
>
> Overall I think this is really nice, and I don't mind this going in,
> I only have one issue with they way you use iommu_ops now:
Hehe, I thought you might have something to say about that. I also had second
thoughts, but decided it wasn't worse than what we already have (more below).
> At the moment, iommu_ops is a structure that can get used for any
> number of iommus of the same type, but by putting per-device private
> data into the same structure you have to duplicate it per instance.
I'm not sure I agree -- the pgsize_bitmap, for example, could vary between
different implementations of the same IOMMU. I think we already have this in
Juno (some SMMUs can only do 64k pages, whilst others can do 4k and 64k).
> I think rather than adding a .priv pointer to iommu_ops, we should do
> the same thing that a lot of other subsystems have:
>
> /* generic structure */
> struct iommu {
> struct iommu_ops *ops;
> /* possibly other generic per-instance members */
> };
>
> /* driver specific structure */
> struct arm_smmu {
> struct iommu iommu;
>
> /* smmu specific members */
> };
> static inline struct arm_smmu *to_arm_smmu(struct iommu *iommu)
> {
> return container_of(iommu, struct arm_smmu, iommu);
> }
Regardless of the arguments above, I think this layout is cleaner. We could
also move the pgsize_bitmap into struct iommu in that case, however, that
would be a more invasive patch series than I what I currently have.
If I do another version of the patch, I can easily add a struct iommu and
stash that in the device_node data for the IOMMU instead of directly
putting the ops there. That's at least a step in the right direction.
Cheers,
Will
next prev parent reply other threads:[~2014-11-14 19:27 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-14 18:56 [RFC PATCH v4 0/8] Introduce automatic DMA configuration for IOMMU masters Will Deacon
2014-11-14 18:56 ` Will Deacon
[not found] ` <1415991397-9618-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-11-14 18:56 ` [RFC PATCH v4 1/8] iommu: provide early initialisation hook for IOMMU drivers Will Deacon
2014-11-14 18:56 ` Will Deacon
[not found] ` <1415991397-9618-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-11-18 12:28 ` Marek Szyprowski
2014-11-18 12:28 ` Marek Szyprowski
2014-11-14 18:56 ` [RFC PATCH v4 2/8] dma-mapping: replace set_arch_dma_coherent_ops with arch_setup_dma_ops Will Deacon
2014-11-14 18:56 ` Will Deacon
2014-11-14 18:56 ` [RFC PATCH v4 3/8] iommu: add new iommu_ops callback for adding an OF device Will Deacon
2014-11-14 18:56 ` Will Deacon
2014-11-14 18:56 ` [RFC PATCH v4 4/8] iommu: provide helper function to configure an IOMMU for an of master Will Deacon
2014-11-14 18:56 ` Will Deacon
2014-11-14 18:56 ` [RFC PATCH v4 5/8] dma-mapping: detect and configure IOMMU in of_dma_configure Will Deacon
2014-11-14 18:56 ` Will Deacon
2014-11-14 18:56 ` [RFC PATCH v4 6/8] dma-mapping: set dma segment properties " Will Deacon
2014-11-14 18:56 ` Will Deacon
2014-11-25 13:05 ` Robin Murphy
2014-11-25 13:05 ` Robin Murphy
[not found] ` <54747EA0.1020001-5wv7dgnIgG8@public.gmane.org>
2014-11-26 11:37 ` Will Deacon
2014-11-26 11:37 ` Will Deacon
2014-11-14 18:56 ` [RFC PATCH v4 7/8] arm: call iommu_init before of_platform_populate Will Deacon
2014-11-14 18:56 ` Will Deacon
2014-11-14 18:56 ` [RFC PATCH v4 8/8] arm: dma-mapping: plumb our iommu mapping ops into arch_setup_dma_ops Will Deacon
2014-11-14 18:56 ` Will Deacon
2014-11-17 11:29 ` Robin Murphy
2014-11-17 11:29 ` Robin Murphy
[not found] ` <5469DC13.6040700-5wv7dgnIgG8@public.gmane.org>
2014-11-17 11:41 ` Will Deacon
2014-11-17 11:41 ` Will Deacon
2014-11-14 19:11 ` [RFC PATCH v4 0/8] Introduce automatic DMA configuration for IOMMU masters Arnd Bergmann
2014-11-14 19:11 ` Arnd Bergmann
2014-11-14 19:27 ` Will Deacon [this message]
2014-11-14 19:27 ` Will Deacon
[not found] ` <20141114192754.GB9291-5wv7dgnIgG8@public.gmane.org>
2014-11-14 20:01 ` Arnd Bergmann
2014-11-14 20:01 ` Arnd Bergmann
2015-01-19 16:06 ` Will Deacon
2015-01-19 16:06 ` Will Deacon
[not found] ` <20150119160620.GB2373-5wv7dgnIgG8@public.gmane.org>
2015-01-20 16:56 ` Laurent Pinchart
2015-01-20 16:56 ` Laurent Pinchart
2015-01-21 14:48 ` Will Deacon
2015-01-21 14:48 ` Will Deacon
2015-01-21 15:02 ` Laurent Pinchart
2015-01-21 15:02 ` Laurent Pinchart
2014-11-19 11:21 ` Marek Szyprowski
2014-11-19 11:21 ` Marek Szyprowski
[not found] ` <546C7D36.7030400-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-19 11:41 ` Will Deacon
2014-11-19 11:41 ` Will Deacon
[not found] ` <20141119114150.GD15985-5wv7dgnIgG8@public.gmane.org>
2014-11-25 7:35 ` Marek Szyprowski
2014-11-25 7:35 ` Marek Szyprowski
[not found] ` <54743139.2020804-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-26 17:47 ` Will Deacon
2014-11-26 17:47 ` Will Deacon
[not found] ` <20141126174707.GO14866-5wv7dgnIgG8@public.gmane.org>
2014-11-28 13:03 ` jroedel-l3A5Bk7waGM
2014-11-28 13:03 ` jroedel at suse.de
[not found] ` <20141128130336.GF3156-l3A5Bk7waGM@public.gmane.org>
2014-11-28 13:19 ` Will Deacon
2014-11-28 13:19 ` Will Deacon
2014-12-15 17:21 ` Laurent Pinchart
2014-12-15 17:21 ` Laurent Pinchart
2014-12-15 17:34 ` Will Deacon
2014-12-15 17:34 ` Will Deacon
[not found] ` <20141215173416.GS20738-5wv7dgnIgG8@public.gmane.org>
2014-12-15 17:55 ` Laurent Pinchart
2014-12-15 17:55 ` Laurent Pinchart
2014-11-25 13:15 ` Robin Murphy
2014-11-25 13:15 ` Robin Murphy
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=20141114192754.GB9291@arm.com \
--to=will.deacon-5wv7dgnigg8@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 \
/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.