x86: fix software raid autodetection on boot (patch from #6548 by Pieter "Fate" Hollants)
[openwrt/svn-archive/archive.git] / target / linux / x86 / patches-2.6.31 / 300-block2mtd_init.patch
index 123a9d305a8e29460301dead90455b54eb5de0e8..3e6ff602d8a2dfed77c037cc357dfa573b02e000 100644 (file)
  
  static int kernel_init(void *);
  
-@@ -784,12 +785,13 @@ int do_one_initcall(initcall_t fn)
+@@ -779,12 +780,13 @@ int do_one_initcall(initcall_t fn)
  
  
  extern initcall_t __initcall_start[], __initcall_end[], __early_initcall_end[];
                do_one_initcall(*call);
  
        /* Make sure there is no pending stuff from the initcall sequence */
-@@ -812,7 +814,7 @@ static void __init do_basic_setup(void)
+@@ -807,7 +809,7 @@ static void __init do_basic_setup(void)
        driver_init();
        init_irq_proc();
        do_ctors();
  }
  
  static void __init do_pre_smp_initcalls(void)
-@@ -873,6 +875,13 @@ static noinline int init_post(void)
+@@ -868,6 +870,13 @@ static noinline int init_post(void)
        panic("No init found.  Try passing init= option to kernel.");
  }
  
  static int __init kernel_init(void * unused)
  {
        lock_kernel();
-@@ -917,7 +926,16 @@ static int __init kernel_init(void * unu
+@@ -912,7 +921,16 @@ static int __init kernel_init(void * unu
  
        if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {
                ramdisk_execute_command = NULL;
 +        }
 +        while (driver_probe_done() != 0)
 +            msleep(100);
-+        md_run_setup();
 +        do_initcalls(__root_initcall_start, __root_initcall_end);
++        md_run_setup();
 +        prepare_namespace();
        }