Re: start_kernel(): bug: interrupts were enabled early

Russell King
2010-03-31T21:07:45Z

On Wed, Mar 31, 2010 at 01:47:23PM -0700, Yinghai Lu wrote:
> On 03/31/2010 01:40 PM, Andrew Morton wrote:
> > We have two checks in start_kernel():
> >
> > if (!irqs_disabled()) {
> > printk(KERN_WARNING "start_kernel(): bug: interrupts were "
> > "enabled *very* early, fixing it\n");
> > local_irq_disable();
> > }
> > rcu_init();
> > radix_tree_init();
> > /* init some links before init_ISA_irqs() */
> > early_irq_init();
> > init_IRQ();
> > prio_tree_init();
> > init_timers();
> > hrtimers_init();
> > softirq_init();
> > timekeeping_init();
> > time_init();
> > profile_init();
> > if (!irqs_disabled())
> > printk(KERN_CRIT "start_kernel(): bug: interrupts were "
> > "enabled early\n");
> >
> > perhaps the second one isn't needed? Perhaps no architecture requires
> > that local interrupts be disabled across the above initialisations?
>
> spin_unlock_irq from arm is different from other archs?

We use the standard generic kernel implementation. Is x86 different? ;)

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/