update Documentation/filesystems/Locking
[pandora-kernel.git] / init / main.c
index 0e7aede..4870dfe 100644 (file)
@@ -642,6 +642,10 @@ asmlinkage void __init start_kernel(void)
                                 "enabled early\n");
        early_boot_irqs_on();
        local_irq_enable();
+
+       /* Interrupts are enabled now so all GFP allocations are safe. */
+       set_gfp_allowed_mask(__GFP_BITS_MASK);
+
        kmem_cache_init_late();
 
        /*
@@ -674,7 +678,6 @@ asmlinkage void __init start_kernel(void)
 #endif
        page_cgroup_init();
        enable_debug_pagealloc();
-       cpu_hotplug_init();
        kmemtrace_init();
        kmemleak_init();
        debug_objects_mem_init();
@@ -720,6 +723,17 @@ asmlinkage void __init start_kernel(void)
        rest_init();
 }
 
+/* Call all constructor functions linked into the kernel. */
+static void __init do_ctors(void)
+{
+#ifdef CONFIG_CONSTRUCTORS
+       ctor_fn_t *call = (ctor_fn_t *) __ctors_start;
+
+       for (; call < (ctor_fn_t *) __ctors_end; call++)
+               (*call)();
+#endif
+}
+
 int initcall_debug;
 core_param(initcall_debug, initcall_debug, bool, 0644);
 
@@ -800,6 +814,7 @@ static void __init do_basic_setup(void)
        usermodehelper_init();
        driver_init();
        init_irq_proc();
+       do_ctors();
        do_initcalls();
 }