[RFC PATCH 0/4] USB: HCD/EHCI: giveback of URB in tasklet context

Alan Stern stern at rowland.harvard.edu
Mon Jun 10 16:47:09 EDT 2013


On Mon, 10 Jun 2013, Steven Rostedt wrote:

> >  and why so many drivers
> > > are using tasklet/softirq?
> 
> Because it's easy to set up and device driver authors don't know any
> better ;-). Note, a lot of drivers are now using work queues today,
> which run as a task.
> 
> Yes, there's a little more overhead with a task than for a softirq, but
> the problem with softirqs and tasklets is that they can't be preempted,
> and they are more important than all tasks on the system. If you have a
> task that is critical, it must yield for your softirq. Almost!
> 
> That is, even if you have a softirq, it may not run in irq context at
> all. If you get too many softirqs at a time (one comes while another one
> is running), it will defer the processing to the ksoftirq thread. This
> not only runs as a task, but also runs as SCHED_OTHER, and must yield to
> other tasks like everyone else too.
> 
> Thus, adding it as a softirq does not guarantee that it will be
> processed quickly. It just means that most of the time it will prevent
> anything else from happening while your "most important handler in the
> world" is running.

>From this, it sounds like you generally advise using threaded interrupt 
handlers rather than tasklets/softirqs.

Alan Stern




More information about the linux-arm-kernel mailing list