Port-sparc64 archive

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

Re: 10_BETA panic on Ultra 1



On Thu, 24 Aug 2023 20:52:43 +0200
Martin Husemann <martin%duskware.de@localhost> wrote:

> On Thu, Aug 24, 2023 at 06:56:38PM +0200, Martin Husemann wrote:
> > entropy_softintr(0, 102068040, ff070000000001, 0, 200, 101ed4090) at netbsd:entr
> > opy_softintr+0x64
> > softint_dispatch(13b07a8, 4, 137d288, 101bd1140, 1a2178178, 1a2178540) at netbsd
> > :softint_dispatch+0x120
> > softint_fastintr(101bd1140, 4, ff070000000001, 101eb0c90, 101eb0c90, 101e9c0e0) 
> > at netbsd:softint_fastintr+0x84
> > ncr53c9x_done(f005eaf0, 1509118, fffb1c88, 1, fffb1b88, 0) at netbsd:ncr53c9x_do
> > ne+0x13c
> 
> There is (at least one) frame missing here, ncr53c9x_done calls scsipi_done:
> 
> (gdb) list *(ncr53c9x_done+0x13c)
> 0x107bb3c is in ncr53c9x_done (../../../../dev/ic/ncr53c9x.c:1284).
> 1279            }
> 1280    
> 1281            ncr53c9x_free_ecb(sc, ecb);
> 1282            ti->cmds++;
> 1283            mutex_exit(&sc->sc_lock);
> 1284            scsipi_done(xs);
> 1285            mutex_enter(&sc->sc_lock);
> 1286    }
> 
> The interrupt handler is established with IPL_BIO in esp_sbus.c:505
> 
>         /* Establish interrupt channel */
>         bus_intr_establish(esc->sc_bustag, esc->sc_pri, IPL_BIO,
>             ncr53c9x_intr, sc);
> 
> and while that has not returned, curcpu()->ci_idepth will indicate
> we are in interrupt context.
> 
> But I don't see how we get from scsipi_done to softint_fastintr.

No idea, but something caught my eye.
ncr53c9x_free_ecb() and ncr53c9x_get_ecb() do mess with directly with
spl. I don't think that's necessary since they are called with sc_lock
held which should already have raised the IPL to IPL_BIO.

This of course should not matter -- unless there is some bug that
makes splx() followed by mutex_exit() lower the IPL too much.


Home | Main Index | Thread Index | Old Index