From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Luis R . Rodriguez" <mcgrof@suse.com>, Tejun Heo <tj@kernel.org>
Cc: 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>
Subject: [PATCH 0/8] Asynchronous device/driver probing support
Date: Fri, 16 Jan 2015 15:33:09 -0800 [thread overview]
Message-ID: <1421451197-19723-1-git-send-email-dmitry.torokhov@gmail.com> (raw)
This series is a combination of changes proposed by Luis a couple months
ago and implementation used by Chrome OS. The issue we are trying to solve
here is "slow" devices and drivers spending "too much time" in their probe()
methods and it affects:
- overall kernel boot process when drivers are compiled into the kernel
and slow devices stall entire boot progress;
- systemd desire to time out module loading process.
Unlike Luis' proposal we do make use of asycn_schedule() infrastructure
instead of using a dedicated workqueue, so all existing synchronization
points in kernel that wait for device registration still work the same.
Also, the asynchronous probing is done not only during driver registration
(i.e. when devices are probed asynchronously only if they are registered
before the driver), but also during device registration and deferred probe
handling. This way slow devices do not stall kernel boot even when drivers
are compiled into the kernel.
The last patch is for adventurous people to try and force
fully-asynchronous boot. It works for me with limited success - I can boot
Rockhip-based box to userspace as long as I force serial to be sychronously
probed and ignore the fact that most devices are using "dummy" regulators
as regulator subsystem really expects regulators to be registered in
orderly fashion on OF-based systems.
Thanks,
Dmitry
Dmitry Torokhov (3):
driver-core: add asynchronous probing support for drivers
driver-core: platform_driver_probe() must probe synchronously
module: add core_param_unsafe
Luis R. Rodriguez (5):
module: add extra argument for parse_params() callback
driver-core: add driver module asynchronous probe support
driver-core: enable drivers to opt-out of async probe
amd64_edac: enforce synchronous probe
driver-core: allow forcing async probing for modules and builtins
Documentation/kernel-parameters.txt | 13 +++
arch/powerpc/mm/hugetlbpage.c | 4 +-
drivers/base/base.h | 1 +
drivers/base/bus.c | 31 +++++--
drivers/base/dd.c | 166 +++++++++++++++++++++++++++++++-----
drivers/base/platform.c | 13 +++
drivers/edac/amd64_edac.c | 1 +
include/linux/device.h | 26 ++++++
include/linux/module.h | 2 +
include/linux/moduleparam.h | 12 ++-
init/main.c | 25 +++---
kernel/module.c | 25 +++++-
kernel/params.c | 11 ++-
lib/dynamic_debug.c | 4 +-
14 files changed, 284 insertions(+), 50 deletions(-)
--
2.2.0.rc0.207.ga3a616c
next reply other threads:[~2015-01-16 23:33 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-16 23:33 Dmitry Torokhov [this message]
2015-01-16 23:33 ` [PATCH 1/8] module: add extra argument for parse_params() callback Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 2/8] driver-core: add asynchronous probing support for drivers Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 3/8] driver-core: add driver module asynchronous probe support Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 4/8] driver-core: enable drivers to opt-out of async probe Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 5/8] driver-core: platform_driver_probe() must probe synchronously Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 6/8] amd64_edac: enforce synchronous probe Dmitry Torokhov
2015-03-18 16:56 ` Tejun Heo
2015-03-18 17:45 ` Dmitry Torokhov
2015-03-18 17:50 ` Dmitry Torokhov
2015-03-18 18:16 ` Tejun Heo
2015-03-18 18:23 ` Dmitry Torokhov
2015-03-18 18:27 ` Tejun Heo
2015-03-18 18:37 ` Dmitry Torokhov
2015-03-18 18:45 ` Tejun Heo
2015-03-18 19:36 ` Dmitry Torokhov
2015-03-18 19:51 ` Tejun Heo
2015-03-18 20:26 ` Dmitry Torokhov
2015-03-18 21:02 ` Tejun Heo
2015-03-18 21:41 ` Dmitry Torokhov
2015-03-18 21:50 ` Tejun Heo
2015-03-18 22:15 ` Dmitry Torokhov
2015-03-18 23:24 ` Tejun Heo
2015-03-19 0:26 ` Dmitry Torokhov
2015-03-19 15:41 ` Tejun Heo
2015-03-19 16:01 ` Dmitry Torokhov
2015-03-19 16:19 ` Tejun Heo
2015-03-19 17:04 ` Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 7/8] module: add core_param_unsafe Dmitry Torokhov
2015-01-20 5:43 ` Rusty Russell
2015-01-16 23:33 ` [PATCH 8/8] driver-core: allow forcing async probing for modules and builtins Dmitry Torokhov
2015-02-03 23:12 ` [PATCH 0/8] Asynchronous device/driver probing support Dmitry Torokhov
2015-02-07 10:06 ` Greg Kroah-Hartman
2015-03-03 21:18 ` Dmitry Torokhov
2015-03-18 16:46 ` Dmitry Torokhov
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=1421451197-19723-1-git-send-email-dmitry.torokhov@gmail.com \
--to=dmitry.torokhov@gmail.com \
--cc=arjan@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@suse.com \
--cc=olof@lixom.net \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=rusty@rustcorp.com.au \
--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;
as well as URLs for NNTP newsgroup(s).