From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: OMAP: make iommu subsys_initcall to fix builtin omap3isp
Date: Sun, 26 Feb 2012 23:47:56 +0100 [thread overview]
Message-ID: <35010303.ArkW8BdIu6@avalon> (raw)
In-Reply-To: <CAK=WgbYkVALqrVMVv1ma3WzN5dYriM8X0MfwH4knwWwojB6hjg@mail.gmail.com>
Hi Ohad,
On Sunday 26 February 2012 20:30:17 Ohad Ben-Cohen wrote:
> On Sun, Feb 26, 2012 at 7:34 PM, Laurent Pinchart wrote:
> > On Sunday 26 February 2012 12:14:14 Ohad Ben-Cohen wrote:
> >> omap3isp depends on omap's iommu and will fail to probe if
> >> initialized before it (which always happen if they are builtin).
> >>
> >> Make omap's iommu subsys_initcall as an interim solution until
> >> the probe deferral mechanism is merged.
> >
> > How will that fix the problem ?
>
> Sorry, I'm not entirely sure I understand the question: are you asking
> about this patch or about the probe deferral thingy ?
I'm asking about the probe deferral mechanism. The omap3-isp driver will still
call iommu_attach_device() in its probe function. What will happen then ? Will
it return an error ? On what basis will it do so ?
> > I'm fine with this patch, as it fixes the problem as well, although I
> > still believe modifying the link order would be a better fix in this case.
>
> I'm personally not a huge fan of implicit link order dependencies, as
> someone may change the order in the future (for whatever benign
> reason) without even realizing he's breaking drivers.
That's what the comment in the Makefile is for ;-) I don't think it's a
perfect solution either, but it avoids playing with the various initcalls. The
OMAP3 IOMMU isn't a subsystem, subsys_initcall() looks a bit like an API abuse
to me. But as I mentioned in my previous mail, I'm fine with the patch if you
think it's a better solution.
> >> +/* must be ready before omap3isp is probed */
> >
> > The problem is not limited to the omap3isp driver, the DSP driver could be
> > affected as well.
>
> If you refer to tidspbridge, then I'm not sure it has the same issue:
> IIUC it doesn't enable the iommu hw on probe; only in response to an
> ioctl command (btw, tidspbridge doesn't even use this omap iommu
> driver - it manipulates the iommu registers directly. iicks.)
Looking at the tidspbridge driver, it seems to handle its IOMMU itself. That's
an item for someone's to-do list :-)
Are drivers supposed to call iommu_attach_device() in their probe() function
or later on ? The API doesn't seem to be documented.
> The omap4 solutions (remoteproc et al.) will only enable the iommu
> after userspace is alive, so no risk there as well.
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2012-02-26 22:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-26 10:14 [PATCH] ARM: OMAP: make iommu subsys_initcall to fix builtin omap3isp Ohad Ben-Cohen
2012-02-26 17:34 ` Laurent Pinchart
2012-02-26 18:30 ` Ohad Ben-Cohen
2012-02-26 22:47 ` Laurent Pinchart [this message]
2012-02-27 7:00 ` Ohad Ben-Cohen
2012-02-27 12:02 ` Joerg Roedel
2012-03-01 16:37 ` Laurent Pinchart
2012-03-01 17:12 ` Ohad Ben-Cohen
2012-02-27 13:23 ` Joerg Roedel
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=35010303.ArkW8BdIu6@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.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