All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomasz Figa <tfiga@chromium.org>
To: Yingjoe Chen <yingjoe.chen@mediatek.com>
Cc: "Joerg Roedel" <joro@8bytes.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	devicetree@vger.kernel.org, srv_heupstream@mediatek.com,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Will Deacon" <will.deacon@arm.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	iommu@lists.linux-foundation.org,
	"Rob Herring" <robh+dt@kernel.org>,
	"Daniel Kurtz" <djkurtz@google.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"Sasha Hauer" <kernel@pengutronix.de>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	linux-mediatek@lists.infradead.org,
	"Robin Murphy" <robin.murphy@arm.com>,
	"Yong Wu (吴勇)" <yong.wu@mediatek.com>,
	"Lucas Stach" <l.stach@pengutronix.de>
Subject: Re: [PATCH 2/5] iommu/mediatek: Add mt8173 IOMMU driver
Date: Tue, 10 Mar 2015 13:06:31 +0900	[thread overview]
Message-ID: <CAAFQd5BSdAqT00YPYHn6J+Ps1VzhXLhZrronsPXVGPrAir62Qw@mail.gmail.com> (raw)
In-Reply-To: <1425958907.4871.102.camel@mtksdaap41>

On Tue, Mar 10, 2015 at 12:41 PM, Yingjoe Chen
<yingjoe.chen@mediatek.com> wrote:
> On Tue, 2015-03-10 at 02:00 +0900, Tomasz Figa wrote:
>> On Mon, Mar 9, 2015 at 11:46 PM, Yingjoe Chen <yingjoe.chen@mediatek.com> wrote:
>> > On Mon, 2015-03-09 at 20:11 +0900, Tomasz Figa wrote:
>> > <...>
>> >> > +/*
>> >> > + * pimudev is a global var for dma_alloc_coherent.
>> >> > + * It is not accepatable, we will delete it if "domain_alloc" is enabled
>> >> > + */
>> >> > +static struct device *pimudev;
>> >>
>> >> This is indeed not acceptable. Could you replace dma_alloc_coherent()
>> >> with something that doesn't require device pointer, e.g.
>> >> alloc_pages()? (Although that would require you to handle cache
>> >> maintenance in the driver, due to cached memory allocated.) I need to
>> >> think about a better solution for this.
>> >
>> > Hi,
>> >
>> > For 2nd level page table, we use cached memory now. Currently we are
>> > using __dma_flush_range to flush the cache, which is also unacceptable.
>> >
>> > For proper cache management, we'll need to use dma_map_single or
>> > dma_sync_*, which still need a deivce*.
>>
>> Looking at how already mainlined drivers do this, they either use
>> dmac_flush_range()
>> (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/iommu/msm_iommu.c?id=refs/tags/v4.0-rc3#n80)
>> or directly __cpuc_flush_dcache_area() and outer_flush_range()
>> (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/iommu/rockchip-iommu.c?id=refs/tags/v4.0-rc3#n93).
>
> Hi,
>
> These only exist in arch/arm, not arm64. I think we should avoid using
> API start with __ in drivers. This driver might be used in both
> arm/arm64, I think the only option for us is DMA APIs.
>
> Actually, I'm thinking that we should change to use coherent memory for
> 2nd level page table as well and totally skip the cache flush. It seems
> dma_pool_create is suitable to replace kmem_cache we are using right
> now. However it still need a device*, which we have to fix anyway.

That sounds like a reasonable option, because this is what we have DMA
mapping API for.

Do you expect to have more than one M4U block inside a SoC? Maybe this
static variable actually isn't that bad, with a comment added
explaining that there is always only one such block and that a rework
will be needed if future SoCs will have more.

Best regards,
Tomasz

WARNING: multiple messages have this Message-ID (diff)
From: Tomasz Figa <tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
To: Yingjoe Chen <yingjoe.chen-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Cc: "Mark Rutland" <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	srv_heupstream-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org,
	"Catalin Marinas" <catalin.marinas-5wv7dgnIgG8@public.gmane.org>,
	"Will Deacon" <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	"Rob Herring" <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	"Daniel Kurtz" <djkurtz-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	"Yong Wu (吴勇)" <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	"Sasha Hauer" <kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	"Matthias Brugger"
	<matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"Lucas Stach" <l.stach-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Subject: Re: [PATCH 2/5] iommu/mediatek: Add mt8173 IOMMU driver
Date: Tue, 10 Mar 2015 13:06:31 +0900	[thread overview]
Message-ID: <CAAFQd5BSdAqT00YPYHn6J+Ps1VzhXLhZrronsPXVGPrAir62Qw@mail.gmail.com> (raw)
In-Reply-To: <1425958907.4871.102.camel@mtksdaap41>

On Tue, Mar 10, 2015 at 12:41 PM, Yingjoe Chen
<yingjoe.chen-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> wrote:
> On Tue, 2015-03-10 at 02:00 +0900, Tomasz Figa wrote:
>> On Mon, Mar 9, 2015 at 11:46 PM, Yingjoe Chen <yingjoe.chen-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> wrote:
>> > On Mon, 2015-03-09 at 20:11 +0900, Tomasz Figa wrote:
>> > <...>
>> >> > +/*
>> >> > + * pimudev is a global var for dma_alloc_coherent.
>> >> > + * It is not accepatable, we will delete it if "domain_alloc" is enabled
>> >> > + */
>> >> > +static struct device *pimudev;
>> >>
>> >> This is indeed not acceptable. Could you replace dma_alloc_coherent()
>> >> with something that doesn't require device pointer, e.g.
>> >> alloc_pages()? (Although that would require you to handle cache
>> >> maintenance in the driver, due to cached memory allocated.) I need to
>> >> think about a better solution for this.
>> >
>> > Hi,
>> >
>> > For 2nd level page table, we use cached memory now. Currently we are
>> > using __dma_flush_range to flush the cache, which is also unacceptable.
>> >
>> > For proper cache management, we'll need to use dma_map_single or
>> > dma_sync_*, which still need a deivce*.
>>
>> Looking at how already mainlined drivers do this, they either use
>> dmac_flush_range()
>> (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/iommu/msm_iommu.c?id=refs/tags/v4.0-rc3#n80)
>> or directly __cpuc_flush_dcache_area() and outer_flush_range()
>> (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/iommu/rockchip-iommu.c?id=refs/tags/v4.0-rc3#n93).
>
> Hi,
>
> These only exist in arch/arm, not arm64. I think we should avoid using
> API start with __ in drivers. This driver might be used in both
> arm/arm64, I think the only option for us is DMA APIs.
>
> Actually, I'm thinking that we should change to use coherent memory for
> 2nd level page table as well and totally skip the cache flush. It seems
> dma_pool_create is suitable to replace kmem_cache we are using right
> now. However it still need a device*, which we have to fix anyway.

That sounds like a reasonable option, because this is what we have DMA
mapping API for.

Do you expect to have more than one M4U block inside a SoC? Maybe this
static variable actually isn't that bad, with a comment added
explaining that there is always only one such block and that a rework
will be needed if future SoCs will have more.

Best regards,
Tomasz

WARNING: multiple messages have this Message-ID (diff)
From: tfiga@chromium.org (Tomasz Figa)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/5] iommu/mediatek: Add mt8173 IOMMU driver
Date: Tue, 10 Mar 2015 13:06:31 +0900	[thread overview]
Message-ID: <CAAFQd5BSdAqT00YPYHn6J+Ps1VzhXLhZrronsPXVGPrAir62Qw@mail.gmail.com> (raw)
In-Reply-To: <1425958907.4871.102.camel@mtksdaap41>

On Tue, Mar 10, 2015 at 12:41 PM, Yingjoe Chen
<yingjoe.chen@mediatek.com> wrote:
> On Tue, 2015-03-10 at 02:00 +0900, Tomasz Figa wrote:
>> On Mon, Mar 9, 2015 at 11:46 PM, Yingjoe Chen <yingjoe.chen@mediatek.com> wrote:
>> > On Mon, 2015-03-09 at 20:11 +0900, Tomasz Figa wrote:
>> > <...>
>> >> > +/*
>> >> > + * pimudev is a global var for dma_alloc_coherent.
>> >> > + * It is not accepatable, we will delete it if "domain_alloc" is enabled
>> >> > + */
>> >> > +static struct device *pimudev;
>> >>
>> >> This is indeed not acceptable. Could you replace dma_alloc_coherent()
>> >> with something that doesn't require device pointer, e.g.
>> >> alloc_pages()? (Although that would require you to handle cache
>> >> maintenance in the driver, due to cached memory allocated.) I need to
>> >> think about a better solution for this.
>> >
>> > Hi,
>> >
>> > For 2nd level page table, we use cached memory now. Currently we are
>> > using __dma_flush_range to flush the cache, which is also unacceptable.
>> >
>> > For proper cache management, we'll need to use dma_map_single or
>> > dma_sync_*, which still need a deivce*.
>>
>> Looking at how already mainlined drivers do this, they either use
>> dmac_flush_range()
>> (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/iommu/msm_iommu.c?id=refs/tags/v4.0-rc3#n80)
>> or directly __cpuc_flush_dcache_area() and outer_flush_range()
>> (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/iommu/rockchip-iommu.c?id=refs/tags/v4.0-rc3#n93).
>
> Hi,
>
> These only exist in arch/arm, not arm64. I think we should avoid using
> API start with __ in drivers. This driver might be used in both
> arm/arm64, I think the only option for us is DMA APIs.
>
> Actually, I'm thinking that we should change to use coherent memory for
> 2nd level page table as well and totally skip the cache flush. It seems
> dma_pool_create is suitable to replace kmem_cache we are using right
> now. However it still need a device*, which we have to fix anyway.

That sounds like a reasonable option, because this is what we have DMA
mapping API for.

Do you expect to have more than one M4U block inside a SoC? Maybe this
static variable actually isn't that bad, with a comment added
explaining that there is always only one such block and that a rework
will be needed if future SoCs will have more.

Best regards,
Tomasz

  reply	other threads:[~2015-03-10  4:06 UTC|newest]

Thread overview: 160+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-06 10:48 [RFC PATCH 0/5] MT8173 IOMMU support yong.wu
2015-03-06 10:48 ` yong.wu at mediatek.com
2015-03-06 10:48 ` yong.wu-NuS5LvNUpcJWk0Htik3J/w
2015-03-06 10:48 ` [PATCH 1/5] soc: mediatek: Add SMI driver yong.wu
2015-03-06 10:48   ` yong.wu at mediatek.com
2015-03-06 10:48   ` yong.wu-NuS5LvNUpcJWk0Htik3J/w
2015-03-06 11:30   ` Paul Bolle
2015-03-06 11:30     ` Paul Bolle
2015-03-09 11:57     ` Yong Wu
2015-03-09 11:57       ` Yong Wu
2015-03-09 11:57       ` Yong Wu
2015-03-09 17:59       ` Paul Bolle
2015-03-09 17:59         ` Paul Bolle
2015-03-09 17:59         ` Paul Bolle
2015-03-09 21:54         ` Arnd Bergmann
2015-03-09 21:54           ` Arnd Bergmann
2015-03-09 21:54           ` Arnd Bergmann
2015-03-10  6:17         ` Yingjoe Chen
2015-03-10  6:17           ` Yingjoe Chen
2015-03-10  6:17           ` Yingjoe Chen
2015-03-09  3:26   ` Yingjoe Chen
2015-03-09  3:26     ` Yingjoe Chen
2015-03-09  3:26     ` Yingjoe Chen
2015-03-09 21:56     ` Arnd Bergmann
2015-03-09 21:56       ` Arnd Bergmann
2015-03-09 21:56       ` Arnd Bergmann
2015-03-10  6:27       ` Yingjoe Chen
2015-03-10  6:27         ` Yingjoe Chen
2015-03-10  6:27         ` Yingjoe Chen
2015-03-10  9:05         ` Arnd Bergmann
2015-03-10  9:05           ` Arnd Bergmann
2015-03-10  9:05           ` Arnd Bergmann
2015-03-10  9:24       ` Lucas Stach
2015-03-10  9:24         ` Lucas Stach
2015-03-10  9:24         ` Lucas Stach
2015-03-09 11:03   ` Sascha Hauer
2015-03-09 11:03     ` Sascha Hauer
2015-03-09 11:03     ` Sascha Hauer
2015-03-06 10:48 ` [PATCH 2/5] iommu/mediatek: Add mt8173 IOMMU driver yong.wu
2015-03-06 10:48   ` yong.wu at mediatek.com
2015-03-06 10:48   ` yong.wu-NuS5LvNUpcJWk0Htik3J/w
2015-03-06 10:58   ` Will Deacon
2015-03-06 10:58     ` Will Deacon
2015-03-06 10:58     ` Will Deacon
2015-03-09 12:11     ` Yong Wu
2015-03-09 12:11       ` Yong Wu
2015-03-09 12:11       ` Yong Wu
2015-03-17 15:14       ` Will Deacon
2015-03-17 15:14         ` Will Deacon
2015-03-17 15:14         ` Will Deacon
2015-03-06 17:15   ` Mitchel Humpherys
2015-03-06 17:15     ` Mitchel Humpherys
2015-03-06 17:15     ` Mitchel Humpherys
2015-03-09 12:16     ` Yong Wu
2015-03-09 12:16       ` Yong Wu
2015-03-09 12:16       ` Yong Wu
2015-03-09 16:57       ` Mitchel Humpherys
2015-03-09 16:57         ` Mitchel Humpherys
2015-03-08  4:12   ` Tomasz Figa
2015-03-08  4:12     ` Tomasz Figa
2015-03-08  4:12     ` Tomasz Figa
2015-03-12 14:16     ` Yong Wu
2015-03-12 14:16       ` Yong Wu
2015-03-12 14:16       ` Yong Wu
2015-03-09  8:24   ` Daniel Kurtz
2015-03-09  8:24     ` Daniel Kurtz
2015-03-09  8:24     ` Daniel Kurtz
2015-03-09 11:11   ` Tomasz Figa
2015-03-09 11:11     ` Tomasz Figa
2015-03-09 11:11     ` Tomasz Figa
2015-03-09 14:46     ` Yingjoe Chen
2015-03-09 14:46       ` Yingjoe Chen
2015-03-09 14:46       ` Yingjoe Chen
2015-03-09 17:00       ` Tomasz Figa
2015-03-09 17:00         ` Tomasz Figa
2015-03-09 17:00         ` Tomasz Figa
2015-03-10  3:41         ` Yingjoe Chen
2015-03-10  3:41           ` Yingjoe Chen
2015-03-10  3:41           ` Yingjoe Chen
2015-03-10  4:06           ` Tomasz Figa [this message]
2015-03-10  4:06             ` Tomasz Figa
2015-03-10  4:06             ` Tomasz Figa
2015-03-11 10:53   ` Tomasz Figa
2015-03-11 10:53     ` Tomasz Figa
2015-03-11 10:53     ` Tomasz Figa
2015-03-18 11:22     ` Yong Wu
2015-03-18 11:22       ` Yong Wu
2015-03-18 11:22       ` Yong Wu
2015-03-20 19:14       ` Robin Murphy
2015-03-20 19:14         ` Robin Murphy
2015-03-20 19:14         ` Robin Murphy
2015-04-14  6:50         ` Yong Wu
2015-04-14  6:50           ` Yong Wu
2015-04-14  6:50           ` Yong Wu
2015-03-27  9:41       ` Tomasz Figa
2015-03-27  9:41         ` Tomasz Figa
2015-03-27  9:41         ` Tomasz Figa
2015-04-14  6:31         ` Yong Wu
2015-04-14  6:31           ` Yong Wu
2015-04-14  6:31           ` Yong Wu
2015-04-15  2:20           ` Tomasz Figa
2015-04-15  2:20             ` Tomasz Figa
2015-04-15  2:20             ` Tomasz Figa
2015-04-15  7:06             ` Yong Wu
2015-04-15  7:06               ` Yong Wu
2015-04-15  7:06               ` Yong Wu
2015-04-15  7:41               ` Tomasz Figa
2015-04-15  7:41                 ` Tomasz Figa
2015-04-15  7:41                 ` Tomasz Figa
2015-04-29  6:23         ` Yong Wu
2015-04-29  6:23           ` Yong Wu
2015-04-29  6:23           ` Yong Wu
2015-03-06 10:48 ` [PATCH 3/5] dt-bindings: mediatek: Add smi dts binding yong.wu
2015-03-06 10:48   ` yong.wu at mediatek.com
2015-03-06 10:48   ` yong.wu-NuS5LvNUpcJWk0Htik3J/w
2015-03-06 11:13   ` Mark Rutland
2015-03-06 11:13     ` Mark Rutland
2015-03-06 11:13     ` Mark Rutland
2015-03-09 12:55     ` Yong Wu
2015-03-09 12:55       ` Yong Wu
2015-03-09 12:55       ` Yong Wu
2015-04-14  9:07     ` Yong Wu
2015-04-14  9:07       ` Yong Wu
2015-04-14  9:07       ` Yong Wu
2015-04-14 10:06       ` Mark Rutland
2015-04-14 10:06         ` Mark Rutland
2015-04-14 10:06         ` Mark Rutland
2015-04-14 13:49         ` Yong Wu
2015-04-14 13:49           ` Yong Wu
2015-04-14 13:49           ` Yong Wu
2015-04-14 13:55           ` Yong Wu
2015-04-14 13:55             ` Yong Wu
2015-04-14 13:55             ` Yong Wu
2015-04-14 13:56           ` Mark Rutland
2015-04-14 13:56             ` Mark Rutland
2015-04-14 13:56             ` Mark Rutland
2015-03-06 14:48   ` Sergei Shtylyov
2015-03-06 14:48     ` Sergei Shtylyov
2015-03-06 14:48     ` Sergei Shtylyov
2015-03-09 12:32     ` Yong Wu
2015-03-09 12:32       ` Yong Wu
2015-03-09 12:32       ` Yong Wu
2015-03-06 10:48 ` [PATCH 4/5] dt-bindings: iommu: Add binding for mediatek IOMMU yong.wu
2015-03-06 10:48   ` yong.wu at mediatek.com
2015-03-06 10:48   ` yong.wu-NuS5LvNUpcJWk0Htik3J/w
2015-03-06 11:21   ` Mark Rutland
2015-03-06 11:21     ` Mark Rutland
2015-03-06 11:21     ` Mark Rutland
2015-03-09 11:30     ` Yong Wu
2015-03-09 11:30       ` Yong Wu
2015-03-09 11:30       ` Yong Wu
2015-03-06 10:48 ` [PATCH 5/5] dts: mt8173: Add iommu/smi nodes for mt8173 yong.wu
2015-03-06 10:48   ` yong.wu at mediatek.com
2015-03-06 10:48   ` yong.wu-NuS5LvNUpcJWk0Htik3J/w
2015-03-07 15:20   ` Daniel Kurtz
2015-03-07 15:20     ` Daniel Kurtz
2015-03-07 15:20     ` Daniel Kurtz
2015-03-09 12:18     ` Yong Wu
2015-03-09 12:18       ` Yong Wu
2015-03-09 12:18       ` Yong Wu

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=CAAFQd5BSdAqT00YPYHn6J+Ps1VzhXLhZrronsPXVGPrAir62Qw@mail.gmail.com \
    --to=tfiga@chromium.org \
    --cc=catalin.marinas@arm.com \
    --cc=devicetree@vger.kernel.org \
    --cc=djkurtz@google.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=kernel@pengutronix.de \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=srv_heupstream@mediatek.com \
    --cc=will.deacon@arm.com \
    --cc=yingjoe.chen@mediatek.com \
    --cc=yong.wu@mediatek.com \
    /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.