On Tue, May 13, 2014 at 11:59:38AM -0400, Alan Stern wrote: > > What about something like this instead? > > masked_status = status & (INTR_MASK | STS_FLR); > > /* Shared IRQ? */ > if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) { > + if (status & STS_RECL) { > + ehci_writel(ehci, STS_RECL, &ehci->regs->status); > + ehci_readl(ehci, &ehci->regs->status); > + } > spin_unlock_irqrestore(&ehci->lock, flags); > return IRQ_NONE; > } > > That should do about the same thing as your change, except for > returning IRQ_NONE rather than IRQ_HANDLED. I'll forward this to my home to try it out. It will take some time as my wife is also working on this system. Nevertheless I'm curious about it. > However, I don't see why writing the STS_RECL bit should fix anything. > It is a ReadOnly bit, after all. And returning IRQ_HANDLED wouldn't > fix anything either; it would merely cause your system to keep on > running while an interrupt storm occurred. That this is a ReadOnly bit is what I've read from the Intel specs http://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/ehci-v1-1-addendum.pdf Werner -- "Having a smoking section in a restaurant is like having a peeing section in a swimming pool." -- Edward Burr
Attachment:
pgpPIL1Ym75FT.pgp
Description: PGP signature