Hi, On Wed, Nov 4, 2015 at 2:53 PM, Douglas Anderson <dianders@xxxxxxxxxxxx> wrote: > In commit 94dfd7edfd5c ("USB: HCD: support giveback of URB in tasklet > context") support was added to give back the URB in tasklet context. > Let's take advantage of this in dwc2. > > This speeds up the dwc2 interrupt handler considerably. > > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx> > --- > drivers/usb/dwc2/hcd.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c > index e79baf73c234..9e7988950c7a 100644 > --- a/drivers/usb/dwc2/hcd.c > +++ b/drivers/usb/dwc2/hcd.c > @@ -2273,9 +2273,7 @@ void dwc2_host_complete(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, > kfree(qtd->urb); > qtd->urb = NULL; > > - spin_unlock(&hsotg->lock); > usb_hcd_giveback_urb(dwc2_hsotg_to_hcd(hsotg), urb, status); > - spin_lock(&hsotg->lock); > } > > /* > @@ -2888,7 +2886,7 @@ static struct hc_driver dwc2_hc_driver = { > .hcd_priv_size = sizeof(struct wrapper_priv_data), > > .irq = _dwc2_hcd_irq, > - .flags = HCD_MEMORY | HCD_USB2, > + .flags = HCD_MEMORY | HCD_USB2 | HCD_BH, > > .start = _dwc2_hcd_start, > .stop = _dwc2_hcd_stop, In the ChromeOS gerrit <https://chromium-review.googlesource.com/#/c/310583/> Julius Werner points out that for EHCI it was good to take the optimization from commit 9118f9eb4f1e ("USB: EHCI: improve interrupt qh unlink") before this one. I'm still trying to learn USB / dwc2 so it's unclear to me whether we also need a similar change before landing. I'll see if I can do some investigation about this and also some benchmarking before and after. Certainly profiling the interrupt handler itself showed a huge improvement, but I'd hate to see a regression elsewhere. If anyone else knows better than I, please speak up! :) -Doug -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html