|
@@ -370,10 +370,14 @@ void __init prepare_namespace(void)
|
|
|
ssleep(root_delay);
|
|
|
}
|
|
|
|
|
|
- /* wait for the known devices to complete their probing */
|
|
|
- while (driver_probe_done() != 0)
|
|
|
- msleep(100);
|
|
|
- async_synchronize_full();
|
|
|
+ /*
|
|
|
+ * wait for the known devices to complete their probing
|
|
|
+ *
|
|
|
+ * Note: this is a potential source of long boot delays.
|
|
|
+ * For example, it is not atypical to wait 5 seconds here
|
|
|
+ * for the touchpad of a laptop to initialize.
|
|
|
+ */
|
|
|
+ wait_for_device_probe();
|
|
|
|
|
|
md_run_setup();
|
|
|
|
|
@@ -399,6 +403,7 @@ void __init prepare_namespace(void)
|
|
|
while (driver_probe_done() != 0 ||
|
|
|
(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)
|
|
|
msleep(100);
|
|
|
+ async_synchronize_full();
|
|
|
}
|
|
|
|
|
|
is_floppy = MAJOR(ROOT_DEV) == FLOPPY_MAJOR;
|