Re: [RFC PATCH] usb: hcd: complete URBs in threaded-IRQ context instead of tasklet
From: Alan Stern
Date: Thu Feb 22 2018 - 13:45:18 EST
On Thu, 22 Feb 2018, Sebastian Andrzej Siewior wrote:
> On 2018-02-16 16:46:41 [-0500], Alan Stern wrote:
> > > The theaded interrupt runs SCHED_FIFO priority 50 by default. The only
> > > thing that can interrupt it are interrupts, a softirq (not ksoftirqd)
> > > and other tasks with a higher priority than 50.
> > > There should be no downside performance wise.
> >
> > Maybe. It would be nice to see some real measurements.
>
> I had an usb3 flash stick behind the EHCI controller which was passed
> through from the host to a kvm guest. The performance numbers in the
> guest were equal (some noise was there) with and without the patch.
> The numbers with the patch were worse if lockdep was enabled which isn't
> much of a surprise.
> If you have anything specific requirements for a measurement then please
> let me know and I see what I can do.
No, I didn't have anything more specific in mind.
In principle then, using threaded-interrupt bottom halves instead of
tasklets should be fine. I don't object to making such a change.
However, using a work queue for root-hub URBs is pretty ugly. It would
be better to reinstate the code that dropped hcd_root_hub_lock around
root-hub givebacks, which was removed by commit 94dfd7edfd5c ("USB:
HCD: support giveback of URB in tasklet context"); then it would be
safe to give back those URBs in the bottom half.
Alan Stern