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: pgpPWh1o9elc8.pgp
Description: PGP signature

Reply via email to