Re: [BUG] kernel BUG at arch/x86/kernel/tlb_32.c:130!

From: Ingo Molnar
Date: Tue Jan 20 2009 - 03:18:30 EST



* Ingo Molnar <mingo@xxxxxxx> wrote:

>
> * Li Zefan <lizf@xxxxxxxxxxxxxx> wrote:
>
> > I was using mmotm 2009-01-16-16-18, and I ran into this BUG,
> > the line is:
> > BUG_ON(cpumask_empty(cpumask));
> >
> > I suspect it is caused by:
> >
> > commit 4595f9620cda8a1e973588e743cf5f8436dd20c6
> > Author: Rusty Russell <rusty@xxxxxxxxxxxxxxx>
> > Date: Sat Jan 10 21:58:09 2009 -0800
> >
> > x86: change flush_tlb_others to take a const struct cpumask
> >
> > Impact: reduce stack usage, use new cpumask API.
>
> Jaswinder reported a similar crash.
>
> Mike, Rusty, what's going on with this commit? Why does this code:
>
> + if (cpumask_any_but(&mm->cpu_vm_mask, smp_processor_id()) < nr_cpu_ids)
> + flush_tlb_others(&mm->cpu_vm_mask, mm, TLB_FLUSH_ALL);
>
> Assume that mm->cpu_vm_mask wont change? TLB flushes go async and the
> MM's schedulability is not locked during that. I.e. mm->cpu_vm_mask can
> change under you while the TLB flush IPIs are flying around - while when
> the cpumask was passed on-stack this wouldnt happen.

okay, a testsystem of mine just triggered this crash too.

Li Zefan, Jaswinder, does the patch below fix it for you?

Ingo

--------------->