iommu.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: jroedel-l3A5Bk7waGM@public.gmane.org,
	Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	Laurent Pinchart
	<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [RFC PATCH v3 6/7] arm: call iommu_init before of_platform_populate
Date: Tue, 14 Oct 2014 15:37:59 +0200	[thread overview]
Message-ID: <20141014133757.GA2217@ulmo> (raw)
In-Reply-To: <4378271.6Q6s1JjOus@wuerfel>


[-- Attachment #1.1: Type: text/plain, Size: 3010 bytes --]

On Tue, Oct 14, 2014 at 03:20:46PM +0200, Arnd Bergmann wrote:
> On Tuesday 14 October 2014 16:07:38 Laurent Pinchart wrote:
> > On Tuesday 23 September 2014 09:44:25 Arnd Bergmann wrote:
> > > On Tuesday 23 September 2014 09:02:39 Thierry Reding wrote:
> > > > > I see two problems with using deferred probing here:
> > > > > 
> > > > > - we don't actually need to defer the probing but the binding to the
> > > > >   driver when no dma ops are set, but it seems silly to even create the
> > > > >   device before we can find out which ops it should use.
> > > > 
> > > > What does device creation have to do with anything? Surely a device
> > > > won't need IOMMU services before the device is bound to a driver.
> > > 
> > > The problem is that the driver will start using the IOMMU as soon
> > > as it calls dma_map_*, but that happens at runtime, not necessarily
> > > during the probe function.
> > > 
> > > So we can get into the weird situation that probe() returns success,
> > > but then you can't use the device yet because you don't know whether
> > > it is supposed to use an IOMMU or not.
> > 
> > If we want IOMMU devices to be supported by common device drivers we need to 
> > defer probing of the master devices, there's no doubt about that. Earlier 
> > approaches that hooked up into the device core code were rejected, but it 
> > should be possible to use bus notifiers to achieve the same result (with the 
> > drawback of having to register one notifier per bus). The 
> > BUS_NOTIFY_BIND_DRIVER notifier can then just return -EPROBE_DEFER when a 
> > iommus property is available and points to an IOMMU not registered yet. I'm 
> > not saying we have to do this, but I believe that at least from a technical 
> > point of view it could be done.
> 
> I think that fundamentally speaking, relying on notifiers for something like
> this is very problematic, both in terms of maintainability and reliability.
> We should really try to get the notifiers out of the iommu handling, not put
> more of them in.

Agreed. Also last time I checked the driver core simply ignored the
return value from notifiers, therefore this wouldn't work without
changing the core either.

Still, I agree with Laurent that we really should be relying on probe
deferral for probe ordering. And while it's true that earlier attempts
to put this into the core were rejected, I think there's still value in
proposing it again. The alternative proposed here is similarly close to
the core and needs to duplicated for every architecture. That itself is
to me a strong indication that this really does belong in the core.

I think initially this was proposed to become part of really_probe() and
I still think that's where it belongs. There's precedent for it with the
pinctrl_bind_pins() call, though it seems like Greg regrets allowing
that into the core. Perhaps if really_probe() is "too core", then
platform_drv_probe() would be a better candidate?

Thierry

[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



  reply	other threads:[~2014-10-14 13:37 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-12 16:34 [RFC PATCH v3 0/7] Introduce automatic DMA configuration for IOMMU masters Will Deacon
     [not found] ` <1410539695-29128-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-12 16:34   ` [RFC PATCH v3 1/7] iommu: provide early initialisation hook for IOMMU drivers Will Deacon
2014-09-18 14:31     ` Robin Murphy
     [not found]       ` <541AECDA.1000805-5wv7dgnIgG8@public.gmane.org>
2014-09-22 17:35         ` Will Deacon
2014-09-12 16:34   ` [RFC PATCH v3 2/7] dma-mapping: replace set_arch_dma_coherent_ops with arch_setup_dma_ops Will Deacon
2014-09-12 16:34   ` [RFC PATCH v3 3/7] iommu: add new iommu_ops callback for adding an OF device Will Deacon
     [not found]     ` <1410539695-29128-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-15 11:57       ` Marek Szyprowski
     [not found]         ` <5416D432.8020107-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-09-17  1:39           ` Will Deacon
2014-09-12 16:34   ` [RFC PATCH v3 4/7] iommu: provide helper function to configure an IOMMU for an of master Will Deacon
     [not found]     ` <1410539695-29128-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-18 11:13       ` Laurent Pinchart
2014-09-22 17:13         ` Will Deacon
     [not found]           ` <20140922171352.GF7936-5wv7dgnIgG8@public.gmane.org>
2014-10-14 13:12             ` Laurent Pinchart
2014-09-12 16:34   ` [RFC PATCH v3 5/7] dma-mapping: detect and configure IOMMU in of_dma_configure Will Deacon
     [not found]     ` <1410539695-29128-6-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-18 11:17       ` Laurent Pinchart
2014-09-22  9:29         ` Thierry Reding
2014-09-22 17:50           ` Will Deacon
     [not found]             ` <20140922175027.GK7936-5wv7dgnIgG8@public.gmane.org>
2014-10-14 12:53               ` Laurent Pinchart
2014-10-27 10:51                 ` Will Deacon
     [not found]                   ` <20141027105158.GE8768-5wv7dgnIgG8@public.gmane.org>
2014-10-27 11:12                     ` Marek Szyprowski
2014-10-27 11:30                     ` Laurent Pinchart
2014-10-27 16:02                       ` Will Deacon
     [not found]                         ` <20141027160216.GY8768-5wv7dgnIgG8@public.gmane.org>
2014-10-27 16:33                           ` jroedel-l3A5Bk7waGM
2014-09-22 17:46         ` Will Deacon
2014-09-12 16:34   ` [RFC PATCH v3 6/7] arm: call iommu_init before of_platform_populate Will Deacon
     [not found]     ` <1410539695-29128-7-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-22  9:36       ` Thierry Reding
2014-09-22 11:08         ` Arnd Bergmann
2014-09-22 11:40           ` Thierry Reding
2014-09-22 16:03             ` Arnd Bergmann
2014-09-23  7:02               ` Thierry Reding
2014-09-23  7:44                 ` Arnd Bergmann
2014-09-23  8:59                   ` Thierry Reding
2014-10-14 13:07                   ` Laurent Pinchart
2014-10-14 13:20                     ` Arnd Bergmann
2014-10-14 13:37                       ` Thierry Reding [this message]
2014-10-14 15:01                         ` Laurent Pinchart
2014-10-14 15:05                           ` Thierry Reding
2014-10-14 15:10                             ` Laurent Pinchart
2014-09-12 16:34   ` [RFC PATCH v3 7/7] arm: dma-mapping: plumb our iommu mapping ops into arch_setup_dma_ops Will Deacon
     [not found]     ` <1410539695-29128-8-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-22  9:19       ` Thierry Reding
2014-09-22  9:22         ` Laurent Pinchart
2014-09-22 17:43         ` Will Deacon
     [not found]           ` <20140922174337.GI7936-5wv7dgnIgG8@public.gmane.org>
2014-09-23  7:14             ` Thierry Reding
2014-09-24 16:33               ` Will Deacon
     [not found]                 ` <20140924163338.GF16244-5wv7dgnIgG8@public.gmane.org>
2014-09-25  6:40                   ` Thierry Reding
2014-09-30 16:00                     ` Will Deacon
     [not found]                       ` <20140930160035.GM2548-5wv7dgnIgG8@public.gmane.org>
2014-10-01  8:46                         ` Thierry Reding
2014-10-03 15:08                           ` Will Deacon
     [not found]                             ` <20141003150850.GA32451-5wv7dgnIgG8@public.gmane.org>
2014-10-06  9:52                               ` Thierry Reding
2014-10-06 10:50                                 ` Laurent Pinchart
2014-10-06 13:05                                   ` Thierry Reding
2014-09-16 11:40 ` [RFC PATCH v3 0/7] Introduce automatic DMA configuration for IOMMU masters Robin Murphy
     [not found]   ` <541821AB.8040403-5wv7dgnIgG8@public.gmane.org>
2014-09-17  1:19     ` Will Deacon

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=20141014133757.GA2217@ulmo \
    --to=thierry.reding-re5jqeeqqe8avxtiumwx3w@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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).