Re: 10_BETA panic on Ultra 1
Tobias Nygren <[email protected]> Thu, 24 Aug 2023 21:44:56 +0200
| Newsgroups | gmane.os.netbsd.ports.sparc64 |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 24 Aug 2023 20:52:43 +0200 Martin Husemann <[email protected]> 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.