Hi Alan; Am Donnerstag, den 13.02.2014, 15:55 -0500 schrieb Alan Stern: > Stefani, please try the patch below, with "threadirq" and the plain > vanilla kernel. It ought to fix your problem, but let's make certain. I tried the patch on 3.13.2 together with the commit 88ed9fd50e57 and it seems that it solves the problem. I also tried the current 3.14.0-rc2-00271-g4675348 without any modifications and without our patch... and it also works. Both are tested with the kernel parameter "threadirqs". - Stefani > > > Index: usb-3.14/drivers/usb/host/ehci-hcd.c > =================================================================== > --- usb-3.14.orig/drivers/usb/host/ehci-hcd.c > +++ usb-3.14/drivers/usb/host/ehci-hcd.c > @@ -683,10 +683,11 @@ EXPORT_SYMBOL_GPL(ehci_setup); > static irqreturn_t ehci_irq (struct usb_hcd *hcd) > { > struct ehci_hcd *ehci = hcd_to_ehci (hcd); > + unsigned long flags; > u32 status, masked_status, pcd_status = 0, cmd; > int bh; > > - spin_lock (&ehci->lock); > + spin_lock_irqsave(&ehci->lock, flags); > > status = ehci_readl(ehci, &ehci->regs->status); > > @@ -704,7 +705,7 @@ static irqreturn_t ehci_irq (struct usb_ > > /* Shared IRQ? */ > if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) { > - spin_unlock(&ehci->lock); > + spin_unlock_irqrestore(&ehci->lock, flags); > return IRQ_NONE; > } > > @@ -815,7 +816,7 @@ dead: > > if (bh) > ehci_work (ehci); > - spin_unlock (&ehci->lock); > + spin_unlock_irqrestore(&ehci->lock, flags); > if (pcd_status) > usb_hcd_poll_rh_status(hcd); > return IRQ_HANDLED; > -- 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