Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Kernel panic in "subr_xcall.c"
On Mon, 19 Oct 2009 09:05:43 +0100, Matthias Scheler
<tron%zhadum.org.uk@localhost>
wrote:
> On Mon, Oct 19, 2009 at 07:28:26AM +0100, Matthias Scheler wrote:
>> Here is the stack trace of the panic (copied of the console):
>>
>> xc_lowpri
>> pool_cache_invalidate
>> pmap_growkernel
>>
>> I wonder whether it is related this change:
>>
>> http://mail-index.netbsd.org/source-changes/2009/10/15/msg001938.html
>
> Ok, I think I found the problem:
>
> 1.) pool_cache_invalidate() calls xc_broadcast() with ci = NULL.
> 2.) xc_broadcast() calls xc_lowpri() with ci = NULL.
> 3.) xc_lowpri() iterates over all CPUs but doesn't fine any
> running CPU and therefore doesn't schedule any cross calls.
> 4.) The KASSERT() at the end of loop in xc_lowpri() triggers
> because "xc_tailp" and "xc_headp" are both zero.
Looks like we hit the same problem:
http://mail-index.netbsd.org/tech-kern/2009/10/14/msg006268.html
Apparently, the check against ncpu is not enough, the kernel ends calling
pmap_growkernel() with ncpu > 1 but without any CPU considered as "running"
(SPCF_RUNNING flag set).
Which element in the boot process requires a call to pmap_growkernel()
early during boot? (full stack trace if possible).
--
Jean-Yves Migeon
jeanyves.migeon%free.fr@localhost
Home |
Main Index |
Thread Index |
Old Index