x86: fix software raid autodetection on boot (patch from #6548 by Pieter "Fate" Hollants)
[openwrt.git] / target / linux / x86 / patches-2.6.30 / 300-block2mtd_init.patch
index 12165b5..fdfb9d0 100644 (file)
@@ -69,7 +69,7 @@
  
  static struct page *page_read(struct address_space *mapping, int index)
  {
-@@ -510,7 +542,9 @@ static int block2mtd_setup2(const char *
+@@ -511,7 +543,9 @@ static int block2mtd_setup2(const char *
        if (token[2] && (strlen(token[2]) + 1 > 80))
                parse_err("mtd device name too long");
  
@@ -82,7 +82,7 @@
  }
 --- a/include/asm-generic/vmlinux.lds.h
 +++ b/include/asm-generic/vmlinux.lds.h
-@@ -447,12 +447,14 @@
+@@ -474,12 +474,14 @@
        *(.initcall4s.init)                                             \
        *(.initcall5.init)                                              \
        *(.initcall5s.init)                                             \
  
  static int kernel_init(void *);
  
-@@ -752,12 +753,13 @@ int do_one_initcall(initcall_t fn)
+@@ -753,12 +754,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 */
-@@ -779,7 +781,7 @@ static void __init do_basic_setup(void)
+@@ -780,7 +782,7 @@ static void __init do_basic_setup(void)
        usermodehelper_init();
        driver_init();
        init_irq_proc();
  }
  
  static void __init do_pre_smp_initcalls(void)
-@@ -840,6 +842,13 @@ static noinline int init_post(void)
+@@ -841,6 +843,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();
-@@ -879,7 +888,16 @@ static int __init kernel_init(void * unu
+@@ -880,7 +889,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();
        }
  
This page took 0.022928 seconds and 4 git commands to generate.