diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-10 21:43:52 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-10 21:43:52 -0500 |
commit | 99cd7074891f87c49660e3b2880564324a4733ac (patch) | |
tree | 903d2665bcb445f1f265d1adf7a99f265bcefc15 /init/main.c | |
parent | e8a9cbf6ae620d9e5ba9cb42001c033287a284a3 (diff) | |
parent | c59765042f53a79a7a65585042ff463b69cb248c (diff) |
Merge commit 'v2.6.29-rc1' into tracing/urgent
Diffstat (limited to 'init/main.c')
-rw-r--r-- | init/main.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/init/main.c b/init/main.c index 72a521c0da07..db7974ff7a0a 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -50,7 +50,6 @@ | |||
50 | #include <linux/rmap.h> | 50 | #include <linux/rmap.h> |
51 | #include <linux/mempolicy.h> | 51 | #include <linux/mempolicy.h> |
52 | #include <linux/key.h> | 52 | #include <linux/key.h> |
53 | #include <linux/unwind.h> | ||
54 | #include <linux/buffer_head.h> | 53 | #include <linux/buffer_head.h> |
55 | #include <linux/page_cgroup.h> | 54 | #include <linux/page_cgroup.h> |
56 | #include <linux/debug_locks.h> | 55 | #include <linux/debug_locks.h> |
@@ -63,6 +62,7 @@ | |||
63 | #include <linux/signal.h> | 62 | #include <linux/signal.h> |
64 | #include <linux/idr.h> | 63 | #include <linux/idr.h> |
65 | #include <linux/ftrace.h> | 64 | #include <linux/ftrace.h> |
65 | #include <linux/async.h> | ||
66 | #include <trace/boot.h> | 66 | #include <trace/boot.h> |
67 | 67 | ||
68 | #include <asm/io.h> | 68 | #include <asm/io.h> |
@@ -109,7 +109,7 @@ EXPORT_SYMBOL(system_state); | |||
109 | 109 | ||
110 | extern void time_init(void); | 110 | extern void time_init(void); |
111 | /* Default late time init is NULL. archs can override this later. */ | 111 | /* Default late time init is NULL. archs can override this later. */ |
112 | void (*late_time_init)(void); | 112 | void (*__initdata late_time_init)(void); |
113 | extern void softirq_init(void); | 113 | extern void softirq_init(void); |
114 | 114 | ||
115 | /* Untouched command line saved by arch-specific code. */ | 115 | /* Untouched command line saved by arch-specific code. */ |
@@ -448,7 +448,7 @@ static void __init setup_command_line(char *command_line) | |||
448 | * gcc-3.4 accidentally inlines this function, so use noinline. | 448 | * gcc-3.4 accidentally inlines this function, so use noinline. |
449 | */ | 449 | */ |
450 | 450 | ||
451 | static void noinline __init_refok rest_init(void) | 451 | static noinline void __init_refok rest_init(void) |
452 | __releases(kernel_lock) | 452 | __releases(kernel_lock) |
453 | { | 453 | { |
454 | int pid; | 454 | int pid; |
@@ -538,7 +538,6 @@ asmlinkage void __init start_kernel(void) | |||
538 | * Need to run as early as possible, to initialize the | 538 | * Need to run as early as possible, to initialize the |
539 | * lockdep hash: | 539 | * lockdep hash: |
540 | */ | 540 | */ |
541 | unwind_init(); | ||
542 | lockdep_init(); | 541 | lockdep_init(); |
543 | debug_objects_early_init(); | 542 | debug_objects_early_init(); |
544 | cgroup_init_early(); | 543 | cgroup_init_early(); |
@@ -560,7 +559,6 @@ asmlinkage void __init start_kernel(void) | |||
560 | setup_arch(&command_line); | 559 | setup_arch(&command_line); |
561 | mm_init_owner(&init_mm, &init_task); | 560 | mm_init_owner(&init_mm, &init_task); |
562 | setup_command_line(command_line); | 561 | setup_command_line(command_line); |
563 | unwind_setup(); | ||
564 | setup_per_cpu_areas(); | 562 | setup_per_cpu_areas(); |
565 | setup_nr_cpu_ids(); | 563 | setup_nr_cpu_ids(); |
566 | smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ | 564 | smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ |
@@ -603,7 +601,8 @@ asmlinkage void __init start_kernel(void) | |||
603 | sched_clock_init(); | 601 | sched_clock_init(); |
604 | profile_init(); | 602 | profile_init(); |
605 | if (!irqs_disabled()) | 603 | if (!irqs_disabled()) |
606 | printk("start_kernel(): bug: interrupts were enabled early\n"); | 604 | printk(KERN_CRIT "start_kernel(): bug: interrupts were " |
605 | "enabled early\n"); | ||
607 | early_boot_irqs_on(); | 606 | early_boot_irqs_on(); |
608 | local_irq_enable(); | 607 | local_irq_enable(); |
609 | 608 | ||
@@ -689,7 +688,7 @@ asmlinkage void __init start_kernel(void) | |||
689 | rest_init(); | 688 | rest_init(); |
690 | } | 689 | } |
691 | 690 | ||
692 | static int initcall_debug; | 691 | int initcall_debug; |
693 | core_param(initcall_debug, initcall_debug, bool, 0644); | 692 | core_param(initcall_debug, initcall_debug, bool, 0644); |
694 | 693 | ||
695 | int do_one_initcall(initcall_t fn) | 694 | int do_one_initcall(initcall_t fn) |
@@ -788,8 +787,10 @@ static void run_init_process(char *init_filename) | |||
788 | /* This is a non __init function. Force it to be noinline otherwise gcc | 787 | /* This is a non __init function. Force it to be noinline otherwise gcc |
789 | * makes it inline to init() and it becomes part of init.text section | 788 | * makes it inline to init() and it becomes part of init.text section |
790 | */ | 789 | */ |
791 | static int noinline init_post(void) | 790 | static noinline int init_post(void) |
792 | { | 791 | { |
792 | /* need to finish all async __init code before freeing the memory */ | ||
793 | async_synchronize_full(); | ||
793 | free_initmem(); | 794 | free_initmem(); |
794 | unlock_kernel(); | 795 | unlock_kernel(); |
795 | mark_rodata_ro(); | 796 | mark_rodata_ro(); |