summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap-2.6.22.19/add_rootwait.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.22.19/add_rootwait.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap-2.6.22.19/add_rootwait.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.22.19/add_rootwait.patch b/meta/recipes-kernel/linux/linux-omap-2.6.22.19/add_rootwait.patch
new file mode 100644
index 0000000000..80900526c6
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap-2.6.22.19/add_rootwait.patch
@@ -0,0 +1,47 @@
1Index: linux-2.6.22.19/init/do_mounts.c
2===================================================================
3--- linux-2.6.22.19.orig/init/do_mounts.c 2008-07-25 17:29:47.000000000 +0100
4+++ linux-2.6.22.19/init/do_mounts.c 2008-07-25 17:31:17.000000000 +0100
5@@ -25,6 +25,7 @@
6 int root_mountflags = MS_RDONLY | MS_SILENT;
7 char * __initdata root_device_name;
8 static char __initdata saved_root_name[64];
9+static int __initdata root_wait;
10
11 dev_t ROOT_DEV;
12
13@@ -216,6 +217,16 @@
14
15 __setup("root=", root_dev_setup);
16
17+static int __init rootwait_setup(char *str)
18+{
19+ if (*str)
20+ return 0;
21+ root_wait = 1;
22+ return 1;
23+}
24+
25+__setup("rootwait", rootwait_setup);
26+
27 static char * __initdata root_mount_data;
28 static int __init root_data_setup(char *str)
29 {
30@@ -443,6 +454,17 @@
31 if (initrd_load())
32 goto out;
33
34+ /* wait for any asynchronous scanning to complete */
35+ if ((ROOT_DEV == 0) && root_wait) {
36+ printk(KERN_INFO "Waiting for root device %s...\n",
37+ saved_root_name);
38+ while (driver_probe_done() != 0 ||
39+ (ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)
40+ msleep(100);
41+ }
42+
43+ is_floppy = MAJOR(ROOT_DEV) == FLOPPY_MAJOR;
44+
45 if (is_floppy && rd_doload && rd_load_disk(0))
46 ROOT_DEV = Root_RAM0;
47