Merge git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Jan 2009 23:35:47 +0000 (15:35 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Jan 2009 23:35:47 +0000 (15:35 -0800)
* git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async:
  async: don't do the initcall stuff post boot
  bootchart: improve output based on Dave Jones' feedback
  async: make the final inode deletion an asynchronous event
  fastboot: Make libata initialization even more async
  fastboot: make the libata port scan asynchronous
  fastboot: make scsi probes asynchronous
  async: Asynchronous function calls to speed up kernel boot

1  2 
init/main.c

diff --combined init/main.c
@@@ -62,6 -62,7 +62,7 @@@
  #include <linux/signal.h>
  #include <linux/idr.h>
  #include <linux/ftrace.h>
+ #include <linux/async.h>
  #include <trace/boot.h>
  
  #include <asm/io.h>
@@@ -599,8 -600,7 +600,8 @@@ asmlinkage void __init start_kernel(voi
        sched_clock_init();
        profile_init();
        if (!irqs_disabled())
 -              printk("start_kernel(): bug: interrupts were enabled early\n");
 +              printk(KERN_CRIT "start_kernel(): bug: interrupts were "
 +                               "enabled early\n");
        early_boot_irqs_on();
        local_irq_enable();
  
        rest_init();
  }
  
static int initcall_debug;
+ int initcall_debug;
  core_param(initcall_debug, initcall_debug, bool, 0644);
  
  int do_one_initcall(initcall_t fn)
@@@ -786,6 -786,8 +787,8 @@@ static void run_init_process(char *init
   */
  static noinline int init_post(void)
  {
+       /* need to finish all async __init code before freeing the memory */
+       async_synchronize_full();
        free_initmem();
        unlock_kernel();
        mark_rodata_ro();