diff options
Diffstat (limited to 'init/main.c')
-rw-r--r-- | init/main.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/init/main.c b/init/main.c index b5a892c68375..844209453c02 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -62,6 +62,7 @@ | |||
62 | #include <linux/signal.h> | 62 | #include <linux/signal.h> |
63 | #include <linux/idr.h> | 63 | #include <linux/idr.h> |
64 | #include <linux/ftrace.h> | 64 | #include <linux/ftrace.h> |
65 | #include <linux/async.h> | ||
65 | #include <trace/boot.h> | 66 | #include <trace/boot.h> |
66 | 67 | ||
67 | #include <asm/io.h> | 68 | #include <asm/io.h> |
@@ -599,7 +600,8 @@ asmlinkage void __init start_kernel(void) | |||
599 | sched_clock_init(); | 600 | sched_clock_init(); |
600 | profile_init(); | 601 | profile_init(); |
601 | if (!irqs_disabled()) | 602 | if (!irqs_disabled()) |
602 | printk("start_kernel(): bug: interrupts were enabled early\n"); | 603 | printk(KERN_CRIT "start_kernel(): bug: interrupts were " |
604 | "enabled early\n"); | ||
603 | early_boot_irqs_on(); | 605 | early_boot_irqs_on(); |
604 | local_irq_enable(); | 606 | local_irq_enable(); |
605 | 607 | ||
@@ -684,7 +686,7 @@ asmlinkage void __init start_kernel(void) | |||
684 | rest_init(); | 686 | rest_init(); |
685 | } | 687 | } |
686 | 688 | ||
687 | static int initcall_debug; | 689 | int initcall_debug; |
688 | core_param(initcall_debug, initcall_debug, bool, 0644); | 690 | core_param(initcall_debug, initcall_debug, bool, 0644); |
689 | 691 | ||
690 | int do_one_initcall(initcall_t fn) | 692 | int do_one_initcall(initcall_t fn) |
@@ -785,6 +787,8 @@ static void run_init_process(char *init_filename) | |||
785 | */ | 787 | */ |
786 | static noinline int init_post(void) | 788 | static noinline int init_post(void) |
787 | { | 789 | { |
790 | /* need to finish all async __init code before freeing the memory */ | ||
791 | async_synchronize_full(); | ||
788 | free_initmem(); | 792 | free_initmem(); |
789 | unlock_kernel(); | 793 | unlock_kernel(); |
790 | mark_rodata_ro(); | 794 | mark_rodata_ro(); |