From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Tejun Heo <tj@kernel.org>
Cc: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>,
gregkh@linuxfoundation.org, falcon@meizu.com, tiwai@suse.de,
arjan@linux.intel.com, linux-kernel@vger.kernel.org,
oleg@redhat.com, akpm@linux-foundation.org,
penguin-kernel@i-love.sakura.ne.jp,
joseph.salisbury@canonical.com, bpoirier@suse.de,
"Luis R. Rodriguez" <mcgrof@suse.com>
Subject: Re: [RFC v1 0/3] driver-core: add asynch module loading support
Date: Sun, 31 Aug 2014 16:06:51 -0700 [thread overview]
Message-ID: <20140831230651.GB20569@core.coreip.homeip.net> (raw)
In-Reply-To: <20140831220238.GB28690@mtj.dyndns.org>
On Sun, Aug 31, 2014 at 06:02:38PM -0400, Tejun Heo wrote:
> Hello, Dmitry.
>
> On Sun, Aug 31, 2014 at 11:28:51AM -0700, Dmitry Torokhov wrote:
> > HI Tejun,
> >
> > On Sun, Aug 31, 2014 at 06:13:58AM -0400, Tejun Heo wrote:
> > > I haven't followed the previous discussions so please let me know if
> > > this has been discussed before. It looks like you're trying to extend
> > > the async mechanism and applying them to init functions themselves.
> > > That sounds kinda weird to me. Isn't the root cause of the problem
> > > doing device probings along with driver initilaization on module load?
> >
> > For my use case it is driver initialization itself (because most of the
> > relevant drivers is compiled in). Although, come to think, if we could do
>
> Hmmm... that is a different case from the one I'm aware of - userland
> timing out on module probing and sending SIGKILL aborting device
> probing, which is taking long but still making progress properly.
Right, it is definitely different use case. Here we just have a touchpad taking
1.5-2 secs to initialize and thus stalling the overall boot progress.
>
> > something about resume that would be nice too: then I'd be able to drop all
> > stuff in serio that lies about device state and marks it as resumed even though
> > mouse/touchpad will be actually reset and operable much later.
> >
> > > Wouldn't it be more logical to simply make bus_add_driver() ->
> > > driver_attach() invocation asynchronous? There's no reason to make
> > > them parallel either. We can use an ordered queue for it so that we
> > > don't lose the probing order we used to have.
> >
> > Sometimes losing probing order is the desired outcome though. Like with my
> > beloved touchpad :)
>
> Yeah, at first I was applying the async thing to built-in drivers too
> so the ordering was kinda necessary but I don't think it matters at
> all for modules.
Why are we talking about modules? The touchpad driver is built-in in my case.
>
> > > Making things go
> > > parallel is the responsibility of each probing function after all and
> > > there isn't much to gain by making attach calls go parallel.
> >
> > If we make probe function schedule stuff asynchronously, then, in case of
> > failures, we'll end up with half-bound driver. Also drivers would have to have
> > additional code on removal to make sure probe full done before removing. PM
> > methods need to be ready to be called on half-initialized device. It is a mess.
>
> I don't get this. The relationship between the driver and its devices
> is 1:N. If a driver fails to bind to a device, it should properly
> unbind from that device but still remain available so that it can be
> used when another device becomes available. The two have completely
> different life cycles. If you take a look at
> drivers/base/dd.c::__driver_attach(), the function ignores error
> return from probing. The return types are pretty misleading due to
> historical reasons but we already do not fail module loading after
> probing failure, so making probing asynchronous shouldn't really
> change anything.
I think we are talking about 2 different things. I am talking about probe()
taking too long and stalling overall boot process. Yes, we can change
individual drivers to use async_schedule() to do longer operations
asynchronously, but if something that was scheduled asynchronously fails we do
not have a convenient way to signal driver core that bind operation failed. We
would end up with driver being bound to the device but device would not be
operational. This is different from synchronous probing where any failure would
cause probe() to return error and bind operation to fail.
Thanks.
--
Dmitry
next prev parent reply other threads:[~2014-08-31 23:06 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-31 9:03 Luis R. Rodriguez
2014-08-31 9:03 ` [RFC v1 1/3] driver-core: split module_init() and module_exit() Luis R. Rodriguez
2014-08-31 9:03 ` [RFC v1 2/3] async: move synchronous caller into a helper Luis R. Rodriguez
2014-08-31 9:03 ` [RFC v1 3/3] async: add driver asynch levels Luis R. Rodriguez
2014-08-31 10:13 ` [RFC v1 0/3] driver-core: add asynch module loading support Tejun Heo
2014-08-31 11:02 ` Tejun Heo
2014-08-31 11:05 ` Tejun Heo
2014-08-31 17:52 ` Dmitry Torokhov
2014-08-31 19:26 ` Arjan van de Ven
2014-08-31 20:11 ` Dmitry Torokhov
2014-08-31 11:25 ` David Herrmann
2014-08-31 11:38 ` Tejun Heo
2014-08-31 18:28 ` Dmitry Torokhov
2014-08-31 22:02 ` Tejun Heo
2014-08-31 23:06 ` Dmitry Torokhov [this message]
2014-08-31 23:40 ` Tejun Heo
2014-08-31 14:44 ` Arjan van de Ven
2014-08-31 17:50 ` Dmitry Torokhov
2014-08-31 19:24 ` Arjan van de Ven
2014-08-31 19:31 ` Greg KH
2014-08-31 20:14 ` Dmitry Torokhov
2014-08-31 20:40 ` Greg KH
2014-08-31 21:53 ` Tejun Heo
2014-08-31 22:15 ` Greg KH
2014-08-31 22:53 ` Tejun Heo
2014-08-31 23:20 ` Arjan van de Ven
2014-08-31 23:29 ` Tejun Heo
2014-08-31 22:51 ` Dmitry Torokhov
2014-08-31 23:03 ` Tejun Heo
2014-09-04 21:21 ` Luis R. Rodriguez
2014-09-04 21:52 ` Greg KH
2014-08-31 16:41 ` Greg KH
[not found] <99jhsb6abtsilpt3j5nu991b.1409513632114@email.android.com>
2014-08-31 22:32 ` Arjan van de Ven
2014-08-31 22:45 ` Dmitry Torokhov
2014-08-31 22:48 ` Arjan van de Ven
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=20140831230651.GB20569@core.coreip.homeip.net \
--to=dmitry.torokhov@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=bpoirier@suse.de \
--cc=falcon@meizu.com \
--cc=gregkh@linuxfoundation.org \
--cc=joseph.salisbury@canonical.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@do-not-panic.com \
--cc=mcgrof@suse.com \
--cc=oleg@redhat.com \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=tiwai@suse.de \
--cc=tj@kernel.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
all inboxes | Powered by JetHome®