Alan Based on your patch, I add two lines code to clear the OHCI_INTR_SO bit of the intrstatus register if the OHCI_INTR_SO is set by HC. /drivers/usb/host/ohci-hcd.c ints = ohci_readl(ohci, ®s->intrstatus); ++ if((ints & OHCI_INTR_SO) == OHCI_INTR_SO){ ++ ohci_writel(ohci, OHCI_INTR_SO, ®s->intrstatus); Thanks, Frank -----Original Message----- From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx] Sent: Wednesday, December 30, 2009 11:06 PM To: Huang, FrankR Cc: USB list Subject: RE: A question about ohci_irq() On Wed, 30 Dec 2009, Huang, FrankR wrote: > Alan, > > Although this method can solve the usb mouse hang, but I found Which method are you talking about? Your patch or my patch? > that from the debug log, the SO bit(SchedulingOverrun) in > HcInterruptStatus register is always set after a period of time. Is it > matter? Or any modification to avoid this? SO should not be set. > I noticed that in kernel code, there is no code to handle the > SchedulingOverrun interrupt. That's because nothing can be done. > In the OHCI spec, it suggests me to lower > the bandwidth. Do I need add some code to this? No. The driver already works correctly. The problem is that you have bad hardware. You need to figure out what's wrong with the hardware and how to work around the bugs. Alan Stern -- 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