6.0-BETA2: taskqueue_drain for if_xl.c:2796
John Baldwin
jhb at FreeBSD.org
Thu Aug 11 22:03:08 GMT 2005
On Thursday 11 August 2005 05:41 pm, John Baldwin wrote:
> On Thursday 11 August 2005 04:09 pm, Joerg Pulz wrote:
> > Hi,
> >
> > with a fresh installed 6.0-BETA2 i get this when xl(4) gets configured at
> > the system startup.
> > System is P3-800MHz SMP. dmesg is attached.
>
> I'm working on fixes for this. Ping me in a day or so for a patch.
Ok, I've got a patch. I added a taskqueue_stop() function to bring
taskqueue's a bit closer inline with the callout*() API and use
taskqueue_stop() in xl_stop() as it is ok to be called with locks held and
doesn't block. The xl task handler function now bails if IFF_DRV_RUNNING is
clear, and I added a taskqueue_drain() in detach to make sure we were
finished with the mutex and function before detach finishes. Unfortunately,
the patch is to HEAD, but you can probably get it to work on 6.x by changing
if_drv_flags to if_flags and IFF_DRV_RUNNING to IFF_RUNNING on 6.x.
http://www.FreeBSD.org/~jhb/patches/xl_locking.patch
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-current
mailing list