[PATCH v1 0/5] driver-core: async probe support

From: Luis R. Rodriguez
Date: Fri Sep 26 2014 - 17:57:25 EST


From: "Luis R. Rodriguez" <mcgrof@xxxxxxxx>

What started off as a witch hunt for a solution to the systemd
kernel-module-loading-timeout-and-it-killing-drivers-issue (TM)
ended up in our last discussions [0] agreement for us to add to the
kernel what systemd expected us to be doing: asynchronous probing.

This implements support for that, but please note that upon further
inspection of what the timeout is doing and implicating (documented on
patch number 5 in this series) its also recommended that systemd
revisit its timeout and perhaps consider simply not killing kmod
workers. Even if the killing goes away this framework can still be
desirable, and its expected this will be expanded to support
built-in drivers as well later.

This goes build tested with allmodconfig, and run time tested
with and without bus.safe_mod_async_probe=1 on 4 different systems.
As noted on patch #5 systemd should not use bus.safe_mod_async_probe=1
but instead issue a request per module so that in other cases where
its not advisable to use async probe (also documented on patch #5)
it can avoid it. We also enable a flag to let drivers specify if
they never want to enable async probe for whatever reason and an
example is provided on how to do this.

This should have 0 impact unless userspace is issuing the module
parameter for modules, or if any of the new module parameters are
used to help test things.

[0] https://lkml.org/lkml/2014/9/12/625

Luis R. Rodriguez (5):
module: add extra argument for parse_params() callback
driver-core: enable drivers to opt-out of async probe
amd64_edac: enforce synchronous probe
driver-core: generalize freeing driver private member
driver-core: add driver asynchronous probe support

arch/powerpc/mm/hugetlbpage.c | 4 +-
drivers/base/base.h | 6 ++
drivers/base/bus.c | 150 ++++++++++++++++++++++++++++++++++++++++--
drivers/base/dd.c | 7 ++
drivers/edac/amd64_edac.c | 1 +
include/linux/device.h | 5 ++
include/linux/module.h | 2 +
include/linux/moduleparam.h | 3 +-
init/main.c | 25 ++++---
kernel/module.c | 16 ++++-
kernel/params.c | 11 ++--
lib/dynamic_debug.c | 4 +-
12 files changed, 206 insertions(+), 28 deletions(-)

--
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/