diff options
author | Luis R. Rodriguez <mcgrof@suse.com> | 2015-03-30 16:20:05 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-20 00:25:24 -0700 |
commit | f2411da746985e60d4d087f3a43e271c61785927 (patch) | |
tree | 09b6c3b2abd4774f63e4a0d467e3c70daa52663e /drivers/base/dd.c | |
parent | 765230b5f084863183aa8adb3405ab3f32c0b16e (diff) | |
download | linux-f2411da746985e60d4d087f3a43e271c61785927.tar.gz linux-f2411da746985e60d4d087f3a43e271c61785927.tar.bz2 linux-f2411da746985e60d4d087f3a43e271c61785927.zip |
driver-core: add driver module asynchronous probe support
Some init systems may wish to express the desire to have device drivers
run their probe() code asynchronously. This implements support for this
and allows userspace to request async probe as a preference through a
generic shared device driver module parameter, async_probe.
Implementation for async probe is supported through a module parameter
given that since synchronous probe has been prevalent for years some
userspace might exist which relies on the fact that the device driver
will probe synchronously and the assumption that devices it provides
will be immediately available after this.
Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base/dd.c')
-rw-r--r-- | drivers/base/dd.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 2ad33b21888c..7a2fa5dcead7 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -419,7 +419,13 @@ int driver_probe_device(struct device_driver *drv, struct device *dev) bool driver_allows_async_probing(struct device_driver *drv) { - return drv->probe_type == PROBE_PREFER_ASYNCHRONOUS; + if (drv->probe_type == PROBE_PREFER_ASYNCHRONOUS) + return true; + + if (drv->owner && drv->owner->async_probe_requested) + return true; + + return false; } struct device_attach_data { |