aboutsummaryrefslogtreecommitdiffstats
path: root/init/main.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-01-10 21:43:52 -0500
committerIngo Molnar <mingo@elte.hu>2009-01-10 21:43:52 -0500
commit99cd7074891f87c49660e3b2880564324a4733ac (patch)
tree903d2665bcb445f1f265d1adf7a99f265bcefc15 /init/main.c
parente8a9cbf6ae620d9e5ba9cb42001c033287a284a3 (diff)
parentc59765042f53a79a7a65585042ff463b69cb248c (diff)
Merge commit 'v2.6.29-rc1' into tracing/urgent
Diffstat (limited to 'init/main.c')
-rw-r--r--init/main.c17
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
110extern void time_init(void); 110extern 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. */
112void (*late_time_init)(void); 112void (*__initdata late_time_init)(void);
113extern void softirq_init(void); 113extern 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
451static void noinline __init_refok rest_init(void) 451static 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
692static int initcall_debug; 691int initcall_debug;
693core_param(initcall_debug, initcall_debug, bool, 0644); 692core_param(initcall_debug, initcall_debug, bool, 0644);
694 693
695int do_one_initcall(initcall_t fn) 694int 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 */
791static int noinline init_post(void) 790static 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();