tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: 5.99.30 sparc panic during startup



On Sat, Jun 19, 2010 at 06:28:48PM +0100, Mindaugas Rasiukevicius wrote:
> David Young <dyoung%pobox.com@localhost> wrote:
> > > <...>
> > > config_alldevs_lock(0x0, 0x700, 0x0, 0x0, 0x0, 0xf416c660) at
> > > netbsd:device_lookup+0x4
> > > device_lookup(0xf0335ebc, 0x0, 0x37f, 0xf0307208, 0x0, 0x0) at
> > > netbsd:device_lookup_private+0x8
> > > device_lookup_private(0xf0335ebc, 0x0, 0x0, 0xf0307000, 0xffffffff,
> > > 0xf416c478) at netbsd:zshard+0x28
> > > zshard(0x0, 0xf028fc0c, 0xf00, 0x408000e3, 0xf0002000, 0x0) at
> > > netbsd:sparc_interrupt44c+0x1a4
> > > sparc_interrupt44c(0xf036b8c8, 0xf01d803c, 0x0, 0x0, 0xf036b8c8, 0x0) at
> > > <...>
> > 
> > Supposing the lock involved (0x00000000f036b8c8) is alldevs_mtx (is
> > it?), and the lower device_lookup() on the call stack holds it, then
> > interrupt priorities IPL_VM and lower should be blocked, and zshard()
> > should not appear where it does on that call stack.
> 
> Seems the case where device_lookup_private() is called from interrupt
> context running at IPL_HIGH.

You're right, it's IPL_HIGH.  I'd been mislead by this code in
sys/dev/ic/comvar.h:

#ifndef IPL_SERIAL
#define IPL_SERIAL      IPL_TTY
#define splserial()     spltty()
#endif  

Why is that even there?  I would like to take it out.  Will there be any
problem?

AFAICT, IPL_SERIAL is always defined.  In <sys/intr.h>, we have:

#define IPL_SERIAL      IPL_HIGH

Somebody should fix the driver so that zshard() does not call
device_lookup_private().  It seems entirely unnecessary.

Dave

-- 
David Young             OJC Technologies
dyoung%ojctech.com@localhost      Urbana, IL * (217) 278-3933


Home | Main Index | Thread Index | Old Index