linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Hiroshi Doyu <hdoyu@nvidia.com>
To: "m.szyprowski@samsung.com" <m.szyprowski@samsung.com>,
	"swarren@wwwdotorg.org" <swarren@wwwdotorg.org>,
	"joro@8bytes.org" <joro@8bytes.org>
Cc: "James.Bottomley@HansenPartnership.com"
	<James.Bottomley@HansenPartnership.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	Krishna Reddy <vdumpa@nvidia.com>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"minchan@kernel.org" <minchan@kernel.org>,
	"chunsang.jeong@linaro.org" <chunsang.jeong@linaro.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"subashrp@gmail.com" <subashrp@gmail.com>,
	"linaro-mm-sig@lists.linaro.org" <linaro-mm-sig@lists.linaro.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	"kyungmin.park@samsung.com" <kyungmin.park@samsung.com>,
	"pullip.cho@samsung.com" <pullip.cho@samsung.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: [PATCH 1/1] ARM: tegra: bus_notifier registers IOMMU devices(was: How to specify IOMMU'able devices in DT)
Date: Wed, 28 Nov 2012 14:48:32 +0100	[thread overview]
Message-ID: <20121128.154832.539666140149950229.hdoyu@nvidia.com> (raw)
In-Reply-To: <20120924.145014.1452596970914043018.hdoyu@nvidia.com>

Hiroshi Doyu <hdoyu@nvidia.com> wrote @ Mon, 24 Sep 2012 14:50:14 +0300 (EEST):
...
> > > > On Mon, 2012-09-24 at 12:04 +0300, Hiroshi Doyu wrote:
> > > > > diff --git a/drivers/base/platform.c b/drivers/base/platform.c
> > > > > index a1a7225..9eae3be 100644
> > > > > --- a/drivers/base/platform.c
> > > > > +++ b/drivers/base/platform.c
> > > > > @@ -21,6 +21,8 @@
> > > > >  #include <linux/slab.h>
> > > > >  #include <linux/pm_runtime.h>
> > > > >
> > > > > +#include <asm/dma-iommu.h>
> > > > > +
> > > > >  #include "base.h"
> > > > >
> > > > >  #define to_platform_driver(drv)        (container_of((drv), struct
> > > > > platform_driver, \
> > > > > @@ -305,8 +307,19 @@ int platform_device_add(struct platform_device
> > > > > *pdev)
> > > > >                  dev_name(&pdev->dev), dev_name(pdev->dev.parent));
> > > > >
> > > > >         ret = device_add(&pdev->dev);
> > > > > -       if (ret == 0)
> > > > > -               return ret;
> > > > > +       if (ret)
> > > > > +               goto failed;
> > > > > +
> > > > > +#ifdef CONFIG_PLATFORM_ENABLE_IOMMU
> > > > > +       if (platform_bus_type.map && !pdev->dev.archdata.mapping) {
> > > > > +               ret = arm_iommu_attach_device(&pdev->dev,
> > > > > +                                             platform_bus_type.map);
> > > > > +               if (ret)
> > > > > +                       goto failed;
> > > >
> > > > This is horrible ... you're adding an architecture specific callback
> > > > into our generic code; that's really a no-no.  If the concept of
> > > > CONFIG_PLATFORM_ENABE_IOMMU is useful to more than just arm, then this
> > > > could become a generic callback.
> > > 
> > > As mentioned in the original, this is a heck to explain what is
> > > needed. I am looking for some generic solution for how to specify
> > > IOMMU info for each platform devices. I'm guessing that some other SoC
> > > may have the similar requirements on the above. As you mentioned, this
> > > solution should be a generic, not arch specific.
> > 
> > Please read more about bus notifiers. IMHO a good example is provided in 
> > the following thread:
> > http://www.mail-archive.com/linux-samsung-soc@vger.kernel.org/msg12238.html
> 
> This bus notifier seems enough flexible to afford the variation of
> IOMMU map info, like Tegra ASID, which could be platform-specific, and
> the other could be common too. There's already iommu_bus_notifier
> too. I'll try to implement something base on this.

Experimentally implemented as below. With the followig patch, each
device could specify its own map in DT, and automatically the device
would be attached to the map.

There is a case that some devices share a map. This patch doesn't
suppor such case yet.

  reply	other threads:[~2012-11-28 13:48 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-29  6:55 [RFC 0/5] ARM: dma-mapping: New dma_map_ops to control IOVA more precisely Hiroshi Doyu
2012-08-29  6:55 ` [RFC 1/5] ARM: dma-mapping: New dma_map_ops->iova_get_free_{total,max} functions Hiroshi Doyu
2012-08-29  6:55 ` [RFC 2/5] ARM: dma-mapping: New dma_map_ops->iova_{alloc,free}() functions Hiroshi Doyu
2012-08-29  6:55 ` [RFC 3/5] ARM: dma-mapping: New dma_map_ops->iova_alloc*_at* function Hiroshi Doyu
2012-08-29  6:55 ` [RFC 4/5] ARM: dma-mapping: New dma_map_ops->map_page*_at* function Hiroshi Doyu
2012-08-29  6:55 ` [RFC 5/5] ARM: dma-mapping: Introduce dma_map_linear_attrs() for IOVA linear map Hiroshi Doyu
2012-09-18 12:49 ` [RFC 0/5] ARM: dma-mapping: New dma_map_ops to control IOVA more precisely Joerg Roedel
2012-09-19  6:58   ` Hiroshi Doyu
2012-09-19  7:59     ` Arnd Bergmann
2012-09-19 11:41       ` Hiroshi Doyu
2012-09-19 12:50       ` Joerg Roedel
2012-09-20  1:44         ` Krishna Reddy
2012-09-20  2:21           ` Stephen Warren
2012-09-20  6:40             ` Krishna Reddy
2012-09-20 15:27               ` Stephen Warren
2012-09-21 18:16                 ` Krishna Reddy
2012-09-24  9:04                   ` How to specify IOMMU'able devices in DT (was: [RFC 0/5] ARM: dma-mapping: New dma_map_ops to control IOVA more precisely) Hiroshi Doyu
2012-09-24  9:28                     ` James Bottomley
2012-09-24  9:44                       ` Hiroshi Doyu
2012-09-24 11:14                         ` Marek Szyprowski
2012-09-24 11:50                           ` How to specify IOMMU'able devices in DT Hiroshi Doyu
2012-11-28 13:48                             ` Hiroshi Doyu [this message]
2012-11-28 18:07                               ` [PATCH 1/1] ARM: tegra: bus_notifier registers IOMMU devices(was: How to specify IOMMU'able devices in DT) Stephen Warren
2012-11-29  6:45                                 ` Hiroshi Doyu
2012-11-29 10:17                               ` Thierry Reding
2012-11-30  4:59                               ` Mark Zhang
2012-11-30  8:06                                 ` [PATCH 1/1] ARM: tegra: bus_notifier registers IOMMU devices Hiroshi Doyu

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=20121128.154832.539666140149950229.hdoyu@nvidia.com \
    --to=hdoyu@nvidia.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=arnd@arndb.de \
    --cc=chunsang.jeong@linaro.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=m.szyprowski@samsung.com \
    --cc=minchan@kernel.org \
    --cc=pullip.cho@samsung.com \
    --cc=subashrp@gmail.com \
    --cc=swarren@wwwdotorg.org \
    --cc=vdumpa@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox