panic: uhci_abort_xfer: not in process context (was Re: uplcom / ucom problems on RELENG_5)

Hans Petter Selasky hselasky at c2i.net
Thu Mar 31 09:45:30 PST 2005


On Thursday 31 March 2005 14:49, Mike Tancsa wrote:
> Unfortunately the box coredumped overnight
>
>
> putc to a clist with no reserved cblocks
> putc to a clist with no reserved cblocks
> putc to a clist with no reserved cblocks
> putc to a clist with no reserved cblocks
> panic: uhci_abort_xfer: not in process context
> Uptime: 6h55m12s
> Dumping 254 MB
>   16 32 48 64 80 96 112 128 144 160 176 192 208 224 240
> Dump complete
> Automatic reboot in 15 seconds - press a key on the console to abort
> Rebooting...

If you are using FreeBSD5.x/6.x my USB driver will most likely fix your 
problem. The problem is that that the abort function, which can sleep, is 
called from the interrupt handler, which cannot sleep. My USB driver will 
allow this. This is a design problem in the existing USB system.

When one is designing a driver, it is very convenient if USB-transfers can be 
stopped/started from the callback of another USB-transfer. For example when 
one has got a modem and the modem receives the hangup signal, then it can 
stop the USB-data-transfers right away, not having to spawn another thread 
for it, which will lead to race conditions.

Download the three files below into a new directory and type 
"make install"  (to uninstall type "make deinstall")
http://home.c2i.net/hselasky/isdn4bsd/privat/usb/Makefile
http://home.c2i.net/hselasky/isdn4bsd/privat/usb/new_usb_1_5_4.diff.bz2
http://home.c2i.net/hselasky/isdn4bsd/privat/usb/new_usb_1_5_4.tar.bz2

Yours
--HPS


More information about the freebsd-usb mailing list