panic: uhci_abort_xfer: not in process context

Warner Losh imp at bsdimp.com
Fri Apr 1 14:06:08 PST 2005


> > The solution is to use DELAY() instead of tsleep() and usb_delay_ms().
> 
> This is wrong either way - wasting cycles in interrupt context is bad.
> IMO the timeout function should trigger a softint doing the real job.
> Maybe Ian has an idea about this - he did a lot in respect to timeout
> and aborting xfers lately and should be familar with this point.
> To be shure it still exists you should verify with latest code.

I have a set of patches that convert the bridge interrupt routines
into a taskqueue.  I did that so that we can mark them as non-giant
holding ISRs.  This would be a reasonable context to do things like
sleeping from.  However, you'd want to avoid that as much as possible
because sleeping for one request would block all the others in the
queue....

Warner


More information about the freebsd-usb mailing list