Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88fecaa2 authored by John Stultz's avatar John Stultz Committed by Linus Torvalds
Browse files

[PATCH] time initialisation fix



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: default avatarJohn Stultz <johnstul@us.ibm.com>
Cc: Jesse Brandeburg <jesse.brandeburg@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 29454dde
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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
@@ -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 &&