mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
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 19:40:37 -0400	[thread overview]
Message-ID: <20140831234037.GB30592@mtj.dyndns.org> (raw)
In-Reply-To: <20140831230651.GB20569@core.coreip.homeip.net>

Hello, Dmitry.

On Sun, Aug 31, 2014 at 04:06:51PM -0700, Dmitry Torokhov wrote:
> On Sun, Aug 31, 2014 at 06:02:38PM -0400, Tejun Heo wrote:
> > 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. 

Ah, yeah, that's a completely different issue and what other drivers
solve by using async_schedule() mechanism.

> > 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.

Because that was the issue which started this patch series.  It wasn't
about speeding up boot process but about probe failure from SIGKILL
from userland after timing out module loading.

> > 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()

Heh, yeah, we sure are.

> taking too long and stalling overall boot process. Yes, we can change
> individual drivers to use async_schedule() to do longer operations

That's the course we took for all other drivers.

> 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.

Hmmm... I guess there's genuine difference in probing sequence between
input and scsi / libata.  For scsi / libata, the probing of actual
devices takes place outside the probe function of the controller
itself.  The controller probing is still synchronous but probing of
devices attached to that controller is asynchronous.  I guess the
problem you have is that the controller probe function itself takes
long time and there's no good way to make that asynchronous.  Yeah, I
suppose that can be solved together with the module probing timeout
issue.

Thanks.

-- 
tejun

  reply	other threads:[~2014-08-31 23:40 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
2014-08-31 23:40         ` Tejun Heo [this message]
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=20140831234037.GB30592@mtj.dyndns.org \
    --to=tj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@linux.intel.com \
    --cc=bpoirier@suse.de \
    --cc=dmitry.torokhov@gmail.com \
    --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 \
    /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®