camera rk30/rk2928: add support cif pingpong mode , the driver version is v0.4.15
[firefly-linux-kernel-4.4.55.git] / init / main.c
index d2f1e086bf337d064aaeef6baa0865ca6ba5fd31..841e344d366ee9ad3c32e486fdbb300e1cc81c9c 100644 (file)
@@ -487,6 +487,7 @@ asmlinkage void __init start_kernel(void)
        printk(KERN_NOTICE "%s", linux_banner);
        setup_arch(&command_line);
        mm_init_owner(&init_mm, &init_task);
+       mm_init_cpumask(&init_mm);
        setup_command_line(command_line);
        setup_nr_cpu_ids();
        setup_per_cpu_areas();
@@ -510,7 +511,6 @@ asmlinkage void __init start_kernel(void)
        sort_main_extable();
        trap_init();
        mm_init();
-       BUG_ON(mm_init_cpumask(&init_mm, 0));
 
        /*
         * Set up the scheduler prior starting any interrupts (such as the
@@ -542,15 +542,13 @@ asmlinkage void __init start_kernel(void)
        timekeeping_init();
        time_init();
        profile_init();
+       call_function_init();
        if (!irqs_disabled())
                printk(KERN_CRIT "start_kernel(): bug: interrupts were "
                                 "enabled early\n");
        early_boot_irqs_disabled = false;
        local_irq_enable();
 
-       /* Interrupts are enabled now so all GFP allocations are safe. */
-       gfp_allowed_mask = __GFP_BITS_MASK;
-
        kmem_cache_init_late();
 
        /*
@@ -782,6 +780,10 @@ static int __init kernel_init(void * unused)
         * Wait until kthreadd is all set-up.
         */
        wait_for_completion(&kthreadd_done);
+
+       /* Now the scheduler is fully set up and can do blocking allocations */
+       gfp_allowed_mask = __GFP_BITS_MASK;
+
        /*
         * init can allocate pages on any node
         */