Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
options RND_COM considered dangeous
I just got a locking-against-myself panic on an XScale pxa250 (ARM)
system running a -current from shortly before the creation of the
netbsd-5 branch while doing a build of some stuff from pkgsrc. The
trace (partially copied by hand because I over-wrote the log :() is
the following:
panic: lock error
Stopped in pid 12381.1 (ftp) at netbsd:cpu_Debugger+0x4: bx r14
db> tr
panic+0x10
lockdebug_abort+0xc
callout_reset+0xc
rnd_add_uint32+0xc
comintr+0xc
pxa2x0_irq_handler+0xc
callout_reset+0xc
dosetitimer+0xc
sys_setitimer+0xc
syscall+0xc
swi_handler+0xc
(The lock error in this case was a locking-against-myself panic; this is
a LOCKDEBUG/DIAGNOSTIC kernel).
It looks like the problem is that the callout data is protected by locks
at IPL_SCHED whereas com(4) interrupts at IPL_HIGH; the lock that is being
locked recursively is the callout lock.
I don't know if there are serial drivers that run at-or-below-IPL_SCHED,
but if not, it might make sense to remove the RND_COM option.
--rafal
--
Time is an illusion; lunchtime, doubly so. |/\/\| Rafal Boni
-- Ford Prefect |\/\/|
rafal%pobox.com@localhost
Home |
Main Index |
Thread Index |
Old Index