Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1176909

Re: [PATCH 2/8] driver-core: add asynchronous probing support for drivers

Path csiph.com!aioe.org!bofh.it!news.nic.it!robomod
From Dan Williams <dan.j.williams@intel.com>
Newsgroups linux.kernel
Subject Re: [PATCH 2/8] driver-core: add asynchronous probing support for drivers
Date Sun, 05 Jul 2015 11:10:01 +0200
Message-ID <pIO5X-W8-11@gated-at.bofh.it> (permalink)
X-Original-To "Luis R. Rodriguez" <mcgrof@suse.com>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:cc:content-type; bh=jdKv+G3HQojQjPtVWZIjBnQa2KWZR/Toa5vpkKDGhZg=; b=KSPAz7isdG+Fm5QhY0c3OaEy2cVMvlfHmOeF/IPV5U3XOX4/JCzGfgHunJbN/zCpFg LrYQEUnLDfH5avQQ4wG7yMMgTabAzwAXpzz9djKume32OFufWuLrlsg0hn1OYpTX4uxf /OBxayDVcCCeayVCQqHX3Yy6DJ98uoKgToKyCJ3vTJ6vkoy8C3LYQM/gY9wfec/Z4wL2 9lpHsLEaG1HtrS8ToGw9nybhyRNHtGVn9D0LcrGPbH/a1I0F3w/s/o/7Wn7f78aco9Px lJkdq4aWssy4kd1oPuRC6eRyDM/0eaNQ0X8DnUMLTTb89/lmQVU/S3XKjsjGsehHhGdw jHhA==
MIME-Version 1.0
X-Received by 10.42.237.209 with SMTP id kp17mr26085016icb.53.1436018959874; Sat, 04 Jul 2015 07:09:19 -0700 (PDT)
X-Google-Sender-Auth 5cHnmP41ey4rKvcdRgpWgjSGbls
Content-Type text/plain; charset=UTF-8
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 85
Organization linux.* mail to news gateway
X-Original-Cc Tom Gundersen <teg@jklm.no>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Tejun Heo <tj@kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Arjan van de Ven <arjan@linux.intel.com>, Rusty Russell <rusty@rustcorp.com.au>, Olof Johansson <olof@lixom.net>, Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
X-Original-Date Sat, 4 Jul 2015 07:09:19 -0700
X-Original-Message-ID <CAA9_cmeVxHJ_cOUGBvxG3u_OrreSr+T9i+CkD4SO2ERfysrMKQ@mail.gmail.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref aioe.org linux.kernel:1176909

Show key headers only | View raw


On Fri, Jul 3, 2015 at 11:30 AM, Luis R. Rodriguez <mcgrof@suse.com> wrote:
> On Sat, Jun 27, 2015 at 04:45:25PM -0700, Dan Williams wrote:
>> On Mon, Mar 30, 2015 at 4:20 PM, Dmitry Torokhov
>> <dmitry.torokhov@gmail.com> wrote:
>> > Some devices take a long time when initializing, and not all drivers are
>> > suited to initialize their devices when they are open. For example,
>> > input drivers need to interrogate their devices in order to publish
>> > device's capabilities before userspace will open them. When such drivers
>> > are compiled into kernel they may stall entire kernel initialization.
>> >
>> > This change allows drivers request for their probe functions to be
>> > called asynchronously during driver and device registration (manual
>> > binding is still synchronous). Because async_schedule is used to perform
>> > asynchronous calls module loading will still wait for the probing to
>> > complete.
>> >
>> > Note that the end goal is to make the probing asynchronous by default,
>> > so annotating drivers with PROBE_PREFER_ASYNCHRONOUS is a temporary
>> > measure that allows us to speed up boot process while we validating and
>> > fixing the rest of the drivers and preparing userspace.
>> >
>> > This change is based on earlier patch by "Luis R. Rodriguez"
>> > <mcgrof@suse.com>
>> >
>> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>> > ---
>> >  drivers/base/base.h    |   1 +
>> >  drivers/base/bus.c     |  31 +++++++---
>> >  drivers/base/dd.c      | 149 ++++++++++++++++++++++++++++++++++++++++++-------
>> >  include/linux/device.h |  28 ++++++++++
>> >  4 files changed, 182 insertions(+), 27 deletions(-)
>>
>> Just noticed this patch.  It caught my eye because I had a hard time
>> getting an open coded implementation of asynchronous probing to work
>> in the new libnvdimm subsystem.  Especially the messy races of tearing
>> things down while probing is still in flight.  I ended up implementing
>> asynchronous device registration which eliminated a lot of complexity
>> and of course the bugs.  In general I tend to think that async
>> registration is less risky than async probe since it keeps wider
>> portions of the traditional device model synchronous
>
> but its not see -DEFER_PROBE even before async probe.

Except in that case you know probe has been seen by the driver at
least once.  So I see that as less of a surprise, but point taken.

>> and leverages the
>> fact that the device model is already well prepared for asynchronous
>> arrival of devices due to hotplug.
>
> I think this sounds reasonable, do you have your code upstream or posted?

Yes, see nd_device_register() in drivers/nvdimm/bus.c

> If not will you be at Plumbers?

Yes.

> Maybe we shoudl talk about this as although
> ChromeOS already likely already jumped on async probe we should address a
> way forward and path forward for other distributions and I don't think anyone
> is looking too much into it. async probe came to Linux for two reasons:
>
>  * chromeos wanting it
>  * an incorrect systemd assumption on how the driver core works
>
> So long term we still need to address the systemd approach, are they going
> to be defaulting now to async probe for all modules? How about for built-ins?
>
> We should talk about this and maybe at plumbers.
>
>> Splitting the "initial probe" from
>> the "manual probe" case seems like a recipe for confusion.
>
> If you can come up with pros / cons on both strategies it'd be
> valuable.

The problem I ran into was needing to remove devices that still had
yet to be probed and not being able to use registration completion vs
the device_lock() to effectively synchronize the sub-system.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

Re: [PATCH 2/8] driver-core: add asynchronous probing support for drivers Dan Williams <dan.j.williams@intel.com> - 2015-07-05 11:10 +0200

csiph-web