]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - init/main.c
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux...
[mirror_ubuntu-artful-kernel.git] / init / main.c
index 9fc795fe4b3bcd2b6767773f9ebb698b9fc75802..8a914b758e5d9416ccfcffca4c1c9a3941142cf8 100644 (file)
@@ -51,7 +51,7 @@
 #include <linux/mempolicy.h>
 #include <linux/key.h>
 #include <linux/buffer_head.h>
-#include <linux/page_cgroup.h>
+#include <linux/page_ext.h>
 #include <linux/debug_locks.h>
 #include <linux/debugobjects.h>
 #include <linux/lockdep.h>
@@ -487,10 +487,10 @@ void __init __weak thread_info_cache_init(void)
 static void __init mm_init(void)
 {
        /*
-        * page_cgroup requires contiguous pages,
+        * page_ext requires contiguous pages,
         * bigger than MAX_ORDER unless SPARSEMEM.
         */
-       page_cgroup_init_flatmem();
+       page_ext_init_flatmem();
        mem_init();
        kmem_cache_init();
        percpu_init_late();
@@ -502,13 +502,13 @@ asmlinkage __visible void __init start_kernel(void)
 {
        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();
+       set_task_stack_end_magic(&init_task);
        smp_setup_processor_id();
        debug_objects_early_init();
 
@@ -545,7 +545,7 @@ asmlinkage __visible void __init start_kernel(void)
                                  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);
 
@@ -578,13 +578,13 @@ asmlinkage __visible void __init start_kernel(void)
                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();
+       rcu_init_nohz();
        init_timers();
        hrtimers_init();
        softirq_init();
@@ -628,7 +628,7 @@ asmlinkage __visible void __init start_kernel(void)
                initrd_start = 0;
        }
 #endif
-       page_cgroup_init();
+       page_ext_init();
        debug_objects_mem_init();
        kmemleak_init();
        setup_per_cpu_pageset();
@@ -844,7 +844,6 @@ static char *initcall_level_names[] __initdata = {
 
 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);
@@ -961,8 +960,13 @@ static int __ref kernel_init(void *unused)
                ret = run_init_process(execute_command);
                if (!ret)
                        return 0;
+#ifndef CONFIG_INIT_FALLBACK
+               panic("Requested init %s failed (error %d).",
+                     execute_command, ret);
+#else
                pr_err("Failed to execute %s (error %d).  Attempting defaults...\n",
-                       execute_command, ret);
+                      execute_command, ret);
+#endif
        }
        if (!try_to_run_init_process("/sbin/init") ||
            !try_to_run_init_process("/etc/init") ||