Success ! # diff -u if_fxp.c.orig if_fxp.c --- if_fxp.c.orig Sat Jul 5 11:23:44 2003 +++ if_fxp.c Fri Jul 11 09:35:54 2003 _at__at_ -1550,8 +1550,8 _at__at_ if (ether_poll_register(fxp_poll, ifp)) { /* disable interrupts */ CSR_WRITE_1(sc, FXP_CSR_SCB_INTRCNTL, FXP_SCB_INTR_DISABLE); - fxp_poll(ifp, 0, 1); FXP_UNLOCK(sc); + fxp_poll(ifp, 0, 1); return; } #endif > -----Original Message----- > From: John Baldwin [mailto:jhb_at_FreeBSD.org] > Sent: Friday, July 11, 2003 9:13 AM > To: Robin P. Blanchard > Cc: njl_at_FreeBSD.org > Subject: Re: Witness panic (fxp/polling related) > > > On Friday 11 July 2003 08:50 am, you wrote: > > Alright...Added WITNESS_DDB to the kernel. Here's (hopefully) more > > useful info. Again, this is using sources dated yesterday morning. > > > > recursed on non-recursive lock (sleep mutex) fxp0 _at_ > > /usr/src/sys/dev/fxp/if_fxp. c:1502 > > first acquired _at_ /usr/src/sys/dev/fxp/if_fxp.c:1539 > > This is perfect. > > if (ether_poll_register(fxp_poll, ifp)) { > /* disable interrupts */ > CSR_WRITE_1(sc, FXP_CSR_SCB_INTRCNTL, > FXP_SCB_INTR_DISABLE); > fxp_poll(ifp, 0, 1); > FXP_UNLOCK(sc); > return; > > Try moving the FXP_UNLOCK() up before the call to fxp_poll() > (it should be safe to do so). > > -- > > John Baldwin <jhb_at_FreeBSD.org> <>< > http://www.FreeBSD.org/~jhb/ "Power Users Use > the Power to > Serve!" - http://www.FreeBSD.org/ >Received on Fri Jul 11 2003 - 04:50:58 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:14 UTC