|
|
|
Re: Callback not called on bulk out transfer with usbfs | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
|
On Thu, 14 Jun 2012, Austin Schuh wrote:
> > Here's something to try. �In ehci-hcd.c:ehci_iaa_watchdog(), change the
> > ehci_vdbg() function call to ehci_warn(), leaving the arguments the
> > same. �This will log a message for each of the lost IAA interrupts, so
> > we'll be able to see a little bit of what's happening.
>
> Here's your dump. For completeness, I had ehci->need_io_watchdog = 1
> enabled, on the desktop machine, kernel 2.6.38.8.
> All the other entries look very similar to one of these two. I can
> give you more of them if you would like.
>
> Jun 14 13:41:35 aschuh kernel: [ 791.577643] usb 1-4: unlink
> qh64-0001/ffff88059fb92800 start 1 [1/0 us]
> Jun 14 13:41:35 aschuh kernel: [ 791.632975] ehci_hcd 0000:00:1a.7:
> reused qh ffff88059fb92800 schedule
> Jun 14 13:41:35 aschuh kernel: [ 791.632978] usb 1-4: link
> qh64-0001/ffff88059fb92800 start 1 [1/0 us]
Most of this log is all the same, and it is not relevant.
> Jun 14 13:41:36 aschuh kernel: [ 792.939975] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status 8028 cmd 10021
> Jun 14 14:01:23 aschuh kernel: [ 1977.839189] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
Those are the important entries.
> cat /var/log/syslog | IAA
>
> Jun 14 13:35:10 aschuh kernel: [ 407.168318] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
> Jun 14 13:41:36 aschuh kernel: [ 792.939975] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status 8028 cmd 10021
> Jun 14 13:41:54 aschuh kernel: [ 810.747858] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
> Jun 14 13:45:40 aschuh kernel: [ 1036.705444] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
> Jun 14 13:45:47 aschuh kernel: [ 1042.827822] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
> Jun 14 13:52:09 aschuh kernel: [ 1424.787116] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status 8028 cmd 10021
> Jun 14 13:56:10 aschuh kernel: [ 1665.323853] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
> Jun 14 13:57:38 aschuh kernel: [ 1753.762315] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status 8028 cmd 10021
> Jun 14 14:01:23 aschuh kernel: [ 1977.839189] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
> Jun 14 14:04:01 aschuh kernel: [ 2135.979125] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status c028 cmd 10031
> Jun 14 14:09:31 aschuh kernel: [ 2465.372666] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status 8028 cmd 10021
> Jun 14 14:18:32 aschuh kernel: [ 3005.369987] ehci_hcd 0000:00:1a.7:
> IAA watchdog: status e028 cmd 10031
Those indicate that IRQs are getting lost. I have no idea why, except
that it probably isn't a problem in the USB hardware. Maybe something
is wrong with interrupt-handling hardware. On the other hand, a
hardware problem is unlikely to affect multiple different computer
systems.
To confirm the diagnosis, apply the patch below along with your change
to the iaa_watchdog routine. It'll generate a lot of output; only the
entries that are close to the IAA watchdog messages will matter.
Alan Stern
Index: v/drivers/usb/host/ehci-hcd.c
===================================================================
--- v.orig/drivers/usb/host/ehci-hcd.c
+++ v/drivers/usb/host/ehci-hcd.c
@@ -851,6 +851,8 @@ static irqreturn_t ehci_irq (struct usb_
spin_lock (&ehci->lock);
status = ehci_readl(ehci, &ehci->regs->status);
+ ehci_info(ehci, "IRQ: status %x cmd %x\n", status,
+ ehci_readl(ehci, &ehci->regs->command));
/* e.g. cardbus physical eject */
if (status == ~(u32) 0) {
--
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

[Linux Media] [Video for Linux] [Linux Input] [Linux Audio Users] [Photo] [Yosemite News] [Yosemite Photos] [Free Online Dating] [Linux Kernel] [Linux SCSI] [Old Linux USB Devel Archive] [More Archives]
![]() |
![]() |