Re: percpu related boot crash on x86 (was: Linux 2.6.38-rc1)

From: Ingo Molnar
Date: Wed Jan 19 2011 - 15:54:32 EST



* Tejun Heo <tj@xxxxxxxxxx> wrote:

> Hello,
>
> On Wed, Jan 19, 2011 at 02:56:23PM +0200, Pekka Enberg wrote:
> > Is vmalloc() and vfree() supposed to work with interrupts disabled? I
> > always thought they weren't which would mean something in
> > pcpu_mem_alloc() needs changing...
>
> They aren't but percpu allocator doesn't call them with interrupts
> disabled normally. It only happens during early boot before it's
> enabled for the first time but this is an allowed exception. We'll
> probably need to update the WARN_ON to consider the rare call path.
> It also looks like something in that path is turning off/on IRQ
> instead of saving/restoring it, so that probably needs to be changed
> too but both aren't really critical.
>
> I think the real problem is a lot of unsigned int percpu allocations
> added by 6c9ae009 (irq: use per_cpu kstat_irqs). percpu allocator
> should be able to cope but it assumes that it would always be able to
> allocate contiguous allocation map using vmalloc and that might be
> failing, although I cannot readily see how or why that would happen
> frequently on a 64bit machine.

Btw., based on Peter's suggestion i tried the limit-bumping hack below - but it did
not help, the crash still triggers on 5%-10% of all randconfig bootups.

Thanks,

Ingo