On Tue, May 04, 2010 at 09:39:36AM -0400, John Baldwin wrote: > On Monday 03 May 2010 3:55:38 pm Pyun YongHyeon wrote: > > On Mon, May 03, 2010 at 07:01:56AM -0700, Mark Atkinson wrote: > > > -----BEGIN PGP SIGNED MESSAGE----- > > > Hash: SHA1 > > > > > > I updated to current yesterday and got the following 'witness_warn' > > > panic upon executing 'reboot': > > > > > > suspending ithread with the following locks held: > > > exclusive sleep mutex mskc0 (network driver) r = 0 (0xc32c3690) locked _at_ > > > /usr/src/sys/dev/msk/if_msk.c:3589 > > > panic: witness_warn > > > cpuid = 0 > > > KDB: enter: panic > > > Physical memory: 495 MB > > > Dumping 80 MB: 65 49 33 17 1 > > > > > > > > > 3579 static void > > > 3580 msk_intr(void *xsc) > > > 3581 { > > > 3582 struct msk_softc *sc; > > > 3583 struct msk_if_softc *sc_if0, *sc_if1; > > > 3584 struct ifnet *ifp0, *ifp1; > > > 3585 uint32_t status; > > > 3586 int domore; > > > 3587 > > > 3588 sc = xsc; > > > 3589 MSK_LOCK(sc); > > > > It seems msk(4) didn't honor IFF_DRV_RUNNING in status block update > > check so it continued to process received packets. > > Would you try attached patch? > > Actually, this panic looks like a leaked lock. I think this might fix it: > > Index: if_msk.c > =================================================================== > --- if_msk.c (revision 207329) > +++ if_msk.c (working copy) > _at__at_ -3580,6 +3580,7 _at__at_ > (sc->msk_pflags & MSK_FLAG_SUSPEND) != 0 || > (status & sc->msk_intrmask) == 0) { > CSR_WRITE_4(sc, B0_Y2_SP_ICR, 2); > + MSK_UNLOCK(sc); > return; > } Nice catch! I guess I made mistake when I removed taskqueue based interrupt handler. Thanks!Received on Tue May 04 2010 - 14:39:21 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:03 UTC