On Thu, 23 Jan 2014, Josh Bendavid wrote:
> Hi Alan,
> Is it understood why/how this always happens when the interrupt counter for
> this device reaches exactly 200001? I would have assumed that this was a
> software counter in the kernel, in which case I don't see how this could
> correlate to a hardware bug.
The kernel keeps track of unhandled interrupts, and you get that
"nobody cared" error when the number exceeds 99900 in a 0.1-second
period. But the test for this condition occurs only at intervals of
100000 interrupts.
In any case, you can try applying the patch below. It should print out
some relevant information for the 100 interrupts before and after
number 200001. In particular, we should be able to tell whether or not
each interrupt was handled by ohci-hcd.
Alan Stern
Index: usb-3.13/drivers/usb/host/ohci-hcd.c
===================================================================
--- usb-3.13.orig/drivers/usb/host/ohci-hcd.c
+++ usb-3.13/drivers/usb/host/ohci-hcd.c
@@ -784,6 +784,7 @@ static irqreturn_t ohci_irq (struct usb_
struct ohci_hcd *ohci = hcd_to_ohci (hcd);
struct ohci_regs __iomem *regs = ohci->regs;
int ints;
+ static int alancnt;
/* Read interrupt status (and flush pending writes). We ignore the
* optimization of checking the LSB of hcca->done_head; it doesn't
@@ -791,6 +792,11 @@ static irqreturn_t ohci_irq (struct usb_
*/
ints = ohci_readl(ohci, ®s->intrstatus);
+ if (++alancnt >= 199900 && alancnt < 200100)
+ ohci_info(ohci, "IRQ %d status %x enable %x\n",
+ alancnt, ints,
+ ohci_readl(ohci, ®s->intrenable));
+
/* Check for an all 1's result which is a typical consequence
* of dead, unclocked, or unplugged (CardBus...) devices
*/
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html