Skip to content

Commit

Permalink
[PATCH] time initialisation fix
Browse files Browse the repository at this point in the history
We're not reay to take a timer interrupt until timekeeping_init() has run.
But time_init() will start the time interrupt and if it is called with
local interrupts enabled we'll immediately take an interrupt and die.

Fix that by running timekeeping_init() prior to time_init().

We don't know _why_ local interrupts got enabled on Jesse Brandeburg's
machine.  That's a separate as-yet-unsolved problem.  THe patch adds a little
bit of debugging to detect that.

This whole requirement that local interrupts be held off during early boot
keeps on biting us.

Signed-off-by: John Stultz <[email protected]>
Cc: Jesse Brandeburg <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
john stultz authored and Linus Torvalds committed Jul 3, 2006
1 parent 29454dd commit 88fecaa
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion init/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -496,8 +496,8 @@ asmlinkage void __init start_kernel(void)
init_timers();
hrtimers_init();
softirq_init();
time_init();
timekeeping_init();
time_init();

/*
* HACK ALERT! This is early. We're enabling the console before
Expand All @@ -508,6 +508,8 @@ asmlinkage void __init start_kernel(void)
if (panic_later)
panic(panic_later, panic_param);
profile_init();
if (!irqs_disabled())
printk("start_kernel(): bug: interrupts were enabled early\n");
local_irq_enable();
#ifdef CONFIG_BLK_DEV_INITRD
if (initrd_start && !initrd_below_start_ok &&
Expand Down

0 comments on commit 88fecaa

Please sign in to comment.