]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - init/main.c
net/irda/irnet/irnet_irda.c needs unaligned.h
[linux-2.6-omap-h63xx.git] / init / main.c
index 624266b524d41e98c7012a2b2b84d4793744970b..f406fefa626cadc74871e36c954c9781a4dc795f 100644 (file)
@@ -52,6 +52,7 @@
 #include <linux/unwind.h>
 #include <linux/buffer_head.h>
 #include <linux/debug_locks.h>
+#include <linux/debugobjects.h>
 #include <linux/lockdep.h>
 #include <linux/pid_namespace.h>
 #include <linux/device.h>
@@ -459,7 +460,7 @@ static void noinline __init_refok rest_init(void)
        kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
        numa_default_policy();
        pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);
-       kthreadd_task = find_task_by_pid(pid);
+       kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns);
        unlock_kernel();
 
        /*
@@ -543,6 +544,7 @@ asmlinkage void __init start_kernel(void)
         */
        unwind_init();
        lockdep_init();
+       debug_objects_early_init();
        cgroup_init_early();
 
        local_irq_disable();
@@ -600,6 +602,7 @@ asmlinkage void __init start_kernel(void)
        softirq_init();
        timekeeping_init();
        time_init();
+       sched_clock_init();
        profile_init();
        if (!irqs_disabled())
                printk("start_kernel(): bug: interrupts were enabled early\n");
@@ -638,6 +641,7 @@ asmlinkage void __init start_kernel(void)
        enable_debug_pagealloc();
        cpu_hotplug_init();
        kmem_cache_init();
+       debug_objects_mem_init();
        idr_init_cache();
        setup_per_cpu_pageset();
        numa_policy_init();
@@ -698,7 +702,6 @@ static void __init do_initcalls(void)
 
        for (call = __initcall_start; call < __initcall_end; call++) {
                ktime_t t0, t1, delta;
-               char *msg = NULL;
                char msgbuf[40];
                int result;
 
@@ -720,22 +723,23 @@ static void __init do_initcalls(void)
                                (unsigned long long) delta.tv64 >> 20);
                }
 
-               if (result && result != -ENODEV && initcall_debug) {
-                       sprintf(msgbuf, "error code %d", result);
-                       msg = msgbuf;
-               }
+               msgbuf[0] = 0;
+
+               if (result && result != -ENODEV && initcall_debug)
+                       sprintf(msgbuf, "error code %d ", result);
+
                if (preempt_count() != count) {
-                       msg = "preemption imbalance";
+                       strncat(msgbuf, "preemption imbalance ", sizeof(msgbuf));
                        preempt_count() = count;
                }
                if (irqs_disabled()) {
-                       msg = "disabled interrupts";
+                       strncat(msgbuf, "disabled interrupts ", sizeof(msgbuf));
                        local_irq_enable();
                }
-               if (msg) {
+               if (msgbuf[0]) {
                        print_fn_descriptor_symbol(KERN_WARNING "initcall %s()",
                                        (unsigned long) *call);
-                       printk(" returned with %s\n", msg);
+                       printk(" returned with %s\n", msgbuf);
                }
        }
 
@@ -802,6 +806,8 @@ static int noinline init_post(void)
        (void) sys_dup(0);
        (void) sys_dup(0);
 
+       current->signal->flags |= SIGNAL_UNKILLABLE;
+
        if (ramdisk_execute_command) {
                run_init_process(ramdisk_execute_command);
                printk(KERN_WARNING "Failed to execute %s\n",