Merge tag 'v3.18' into p/abusse/merge_upgrade
[projects/modsched/linux.git] / init / main.c
index a1b52b6..749e69f 100644 (file)
@@ -501,13 +501,13 @@ asmlinkage __visible void __init start_kernel(void)
 {
        char *command_line;
        char *after_dashes;
 {
        char *command_line;
        char *after_dashes;
-       extern const struct kernel_param __start___param[], __stop___param[];
 
        /*
         * Need to run as early as possible, to initialize the
         * lockdep hash:
         */
        lockdep_init();
 
        /*
         * Need to run as early as possible, to initialize the
         * lockdep hash:
         */
        lockdep_init();
+       set_task_stack_end_magic(&init_task);
        smp_setup_processor_id();
        debug_objects_early_init();
 
        smp_setup_processor_id();
        debug_objects_early_init();
 
@@ -544,7 +544,7 @@ asmlinkage __visible void __init start_kernel(void)
                                  static_command_line, __start___param,
                                  __stop___param - __start___param,
                                  -1, -1, &unknown_bootoption);
                                  static_command_line, __start___param,
                                  __stop___param - __start___param,
                                  -1, -1, &unknown_bootoption);
-       if (after_dashes)
+       if (!IS_ERR_OR_NULL(after_dashes))
                parse_args("Setting init args", after_dashes, NULL, 0, -1, -1,
                           set_init_arg);
 
                parse_args("Setting init args", after_dashes, NULL, 0, -1, -1,
                           set_init_arg);
 
@@ -577,13 +577,13 @@ asmlinkage __visible void __init start_kernel(void)
                local_irq_disable();
        idr_init_cache();
        rcu_init();
                local_irq_disable();
        idr_init_cache();
        rcu_init();
-       tick_nohz_init();
        context_tracking_init();
        radix_tree_init();
        /* init some links before init_ISA_irqs() */
        early_irq_init();
        init_IRQ();
        tick_init();
        context_tracking_init();
        radix_tree_init();
        /* init some links before init_ISA_irqs() */
        early_irq_init();
        init_IRQ();
        tick_init();
+       rcu_init_nohz();
        init_timers();
        hrtimers_init();
        softirq_init();
        init_timers();
        hrtimers_init();
        softirq_init();
@@ -844,7 +844,6 @@ static char *initcall_level_names[] __initdata = {
 
 static void __init do_initcall_level(int level)
 {
 
 static void __init do_initcall_level(int level)
 {
-       extern const struct kernel_param __start___param[], __stop___param[];
        initcall_t *fn;
 
        strcpy(initcall_command_line, saved_command_line);
        initcall_t *fn;
 
        strcpy(initcall_command_line, saved_command_line);