Re: USB Device stops working after 200001 interrupts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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, &regs->intrstatus);
 
+	if (++alancnt >= 199900 && alancnt < 200100)
+		ohci_info(ohci, "IRQ %d status %x enable %x\n",
+				alancnt, ints,
+				ohci_readl(ohci, &regs->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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux