On Fri, 25 Jan 2013, Alan Stern wrote: > This isn't a software problem. I don't know of any way to fix it or > work around it in the driver. The only thing to do is stop using that > controller. Spoke too soon. Try this patch; maybe it will help. (You'll have to remove the debugging patch first.) Alan Stern Index: usb-3.8/drivers/usb/host/ohci-hcd.c =================================================================== --- usb-3.8.orig/drivers/usb/host/ohci-hcd.c +++ usb-3.8/drivers/usb/host/ohci-hcd.c @@ -794,6 +794,9 @@ static irqreturn_t ohci_irq (struct usb_ return IRQ_HANDLED; } + /* Clear the pending status bits */ + ohci_writel(ohci, ints, ®s->intrstatus); + /* We only care about interrupts that are enabled */ ints &= ohci_readl(ohci, ®s->intrenable); @@ -846,7 +849,6 @@ static irqreturn_t ohci_irq (struct usb_ */ else if (ints & OHCI_INTR_RD) { ohci_vdbg(ohci, "resume detect\n"); - ohci_writel(ohci, OHCI_INTR_RD, ®s->intrstatus); set_bit(HCD_FLAG_POLL_RH, &hcd->flags); if (ohci->autostop) { spin_lock (&ohci->lock); @@ -903,9 +905,8 @@ static irqreturn_t ohci_irq (struct usb_ spin_unlock (&ohci->lock); if (ohci->rh_state == OHCI_RH_RUNNING) { - ohci_writel (ohci, ints, ®s->intrstatus); ohci_writel (ohci, OHCI_INTR_MIE, ®s->intrenable); - // flush those writes + // flush the write (void) ohci_readl (ohci, &ohci->regs->control); } -- 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