aboutsummaryrefslogtreecommitdiffstats
path: root/init/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'init/main.c')
-rw-r--r--init/main.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c
index fc73e1cd8614..fc473d4b56fd 100644
--- a/init/main.c
+++ b/init/main.c
@@ -48,6 +48,7 @@
48#include <linux/unwind.h> 48#include <linux/unwind.h>
49#include <linux/buffer_head.h> 49#include <linux/buffer_head.h>
50#include <linux/debug_locks.h> 50#include <linux/debug_locks.h>
51#include <linux/lockdep.h>
51 52
52#include <asm/io.h> 53#include <asm/io.h>
53#include <asm/bugs.h> 54#include <asm/bugs.h>
@@ -457,6 +458,15 @@ asmlinkage void __init start_kernel(void)
457 458
458 smp_setup_processor_id(); 459 smp_setup_processor_id();
459 460
461 /*
462 * Need to run as early as possible, to initialize the
463 * lockdep hash:
464 */
465 lockdep_init();
466
467 local_irq_disable();
468 early_boot_irqs_off();
469
460/* 470/*
461 * Interrupts are still disabled. Do necessary setups, then 471 * Interrupts are still disabled. Do necessary setups, then
462 * enable them 472 * enable them
@@ -502,6 +512,7 @@ asmlinkage void __init start_kernel(void)
502 profile_init(); 512 profile_init();
503 if (!irqs_disabled()) 513 if (!irqs_disabled())
504 printk("start_kernel(): bug: interrupts were enabled early\n"); 514 printk("start_kernel(): bug: interrupts were enabled early\n");
515 early_boot_irqs_on();
505 local_irq_enable(); 516 local_irq_enable();
506 517
507 /* 518 /*
@@ -512,6 +523,9 @@ asmlinkage void __init start_kernel(void)
512 console_init(); 523 console_init();
513 if (panic_later) 524 if (panic_later)
514 panic(panic_later, panic_param); 525 panic(panic_later, panic_param);
526
527 lockdep_info();
528
515 /* 529 /*
516 * Need to run this when irqs are enabled, because it wants 530 * Need to run this when irqs are enabled, because it wants
517 * to self-test [hard/soft]-irqs on/off lock inversion bugs 531 * to self-test [hard/soft]-irqs on/off lock inversion bugs