Re: Callback not called on bulk out transfer with usbfs

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

 



On Wed, Jun 20, 2012 at 9:02 AM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> On Tue, 19 Jun 2012, Austin Schuh wrote:
>
>> Sorry for the delay.  I added a print in like you requested, and
>> here's a lot more context this time.  FYI, there might have been a
>> couple of lines of IAA watchdog that I missed here.
>>
>> $ dmesg | grep -C 10 "IAA watchdog"
>> [  336.474635] ehci_hcd 0000:00:1a.7: IRQ: status c009 cmd 10031
>> [  336.488135] ehci_hcd 0000:00:1a.7: start_unlink_async: IAAD
>> [  336.488243] ehci_hcd 0000:00:1a.7: IRQ: status c028 cmd 10031
>> [  336.593234] ehci_hcd 0000:00:1a.7: IRQ: status c009 cmd 10031
>> [  336.593253] ehci_hcd 0000:00:1a.7: start_unlink_async: IAAD
>> [  336.593326] ehci_hcd 0000:00:1a.7: IRQ: status c028 cmd 10031
>> [  336.596105] ehci_hcd 0000:00:1a.7: IRQ: status c009 cmd 10031
>> [  336.596365] ehci_hcd 0000:00:1a.7: IRQ: status c009 cmd 10021
>> [  336.597854] ehci_hcd 0000:00:1a.7: IRQ: status 8009 cmd 10021
>> [  336.597873] ehci_hcd 0000:00:1a.7: start_unlink_async: IAAD
>> [  336.597925] ehci_hcd 0000:00:1a.7: IAA watchdog: status 8028 cmd 10021
>
> That's good enough.  Unfortunately, it doesn't help solve our problem!

Bummer!

> The IAA interrupts aren't getting lost.  Instead we're seeing early
> timer expirations, probably caused by imprecise timer values.  What do
> you have CONFIG_HZ set to

CONFIG_HZ=100

> I have been working on using high-resolution timers in ehci-hcd, which
> ought to fix this problem.  But for now, this doesn't explain why your
> bulk-out completion interrupts don't occur on time.
>
> Tell you what...  Get rid of the IAAD: message, but keep the IRQ:
> message in ehci_irq().  Run your usbfs program, and let's see what the
> log shows for the time period when your completion is lost.
>
> To help synchronize your usbfs I/O with the EHCI debugging lines, leave
> usbfs snooping on while running the test.

Ok.  Here's the trace.  I might have an extra print or two in there
from some of my other debugging, but it should be pretty clean.

[  428.046218] ehci_hcd 0000:00:1a.7: IRQ: status c028 cmd 10031
[  428.056870] ehci_hcd 0000:00:1a.7: IRQ: status c028 cmd 10031
[  428.222555] ehci_hcd 0000:00:1a.7: IRQ: status 6009 cmd 10011
[  428.222567] usb 1-4: urb complete
[  428.222571] usb 1-4: userurb 00007f1c397374b0, ep3 int-in,
actual_length 16 status -121
[  428.222575] data: 10 00 00 00 04 00 01 c1 ff ff ff ff 00 00 00 00
                                               ................
[  428.222596] usb 1-4: usbdev_do_ioctl: REAPURBNDELAY
[  428.222715] usb 1-4: usbdev_do_ioctl: SUBMITURB
[  428.222721] usb 1-4: userurb 00007f1c3881e1e0, ep2 bulk-out, length 12
[  428.222724] data: 0c 00 00 00 01 00 16 91 24 00 00 00
                                               ........$...
[  428.222912] ehci_hcd 0000:00:1a.7: IRQ: status c009 cmd 10021
[  428.222919] usb 1-4: urb complete
[  428.222922] usb 1-4: userurb 00007f1c3881e1e0, ep2 bulk-out,
actual_length 12 status 0
[  428.222939] usb 1-4: usbdev_do_ioctl: REAPURBNDELAY
[  428.222969] usb 1-4: usbdev_do_ioctl: SUBMITURB
[  428.222976] usb 1-4: userurb 00007f1c398845c0, ep1 bulk-in, length 16384
[  428.222982] usb 1-4: usbdev_do_ioctl: SUBMITURB
[  428.222986] usb 1-4: userurb 00007f1c398845f8, ep1 bulk-in, length 16384
[  428.228277] ehci_hcd 0000:00:1a.7: IRQ: status 8009 cmd 10021
[  428.228286] usb 1-4: urb complete
[  428.228290] usb 1-4: userurb 00007f1c398845c0, ep1 bulk-in,
actual_length 56 status -121
[  428.228294] data: 38 00 00 00 02 00 16 91 24 00 00 00 14 00 00 00
8a c1 00 00 d4 d1 00 00 07 00 00 00 00 00 00 00
8.......$.......................
[  428.228298] data: 10 00 00 00 89 c1 00 00 c3 d1 00 00 00 00 00 00
08 00 00 00 00 00 00 00
........................
[  428.228308] usb 1-4: urb complete
[  428.228312] usb 1-4: userurb 00007f1c398845f8, ep1 bulk-in,
actual_length 0 status -104
[  428.228328] usb 1-4: usbdev_do_ioctl: REAPURBNDELAY
[  428.228333] usb 1-4: usbdev_do_ioctl: DISCARDURB
[  428.228344] usb 1-4: usbdev_do_ioctl: REAPURBNDELAY
[  428.228362] ehci_hcd 0000:00:1a.7: IRQ: status 8028 cmd 10021
[  428.228391] usb 1-4: usbdev_do_ioctl: SUBMITURB
[  428.228397] usb 1-4: userurb 00007f1c388e62a0, ep1 bulk-in, length 16384
[  428.228403] usb 1-4: usbdev_do_ioctl: SUBMITURB
[  428.228407] usb 1-4: userurb 00007f1c388e62d8, ep1 bulk-in, length 16384
[  428.229153] ehci_hcd 0000:00:1a.7: IRQ: status 8009 cmd 10021
[  428.229162] usb 1-4: urb complete
[  428.229166] usb 1-4: userurb 00007f1c388e62a0, ep1 bulk-in,
actual_length 12 status -121
[  428.229170] data: 0c 00 00 00 03 00 01 20 24 00 00 00
                                               ....... $...
[  428.229180] usb 1-4: urb complete
[  428.229183] usb 1-4: userurb 00007f1c388e62d8, ep1 bulk-in,
actual_length 0 status -104
[  428.229199] usb 1-4: usbdev_do_ioctl: REAPURBNDELAY
[  428.229205] usb 1-4: usbdev_do_ioctl: DISCARDURB
[  428.229216] usb 1-4: usbdev_do_ioctl: REAPURBNDELAY
[  428.229235] ehci_hcd 0000:00:1a.7: IRQ: status 8028 cmd 10021
[  428.229290] usb 1-4: usbdev_do_ioctl: SUBMITURB
[  428.229295] usb 1-4: userurb 00007f1c397379f0, ep3 int-in, length 32
[  428.229302] usb 1-4: link qh64-0001/ffff880522e86c00 start 1 [1/0 us]
[  428.246634] ehci_hcd 0000:00:1a.7: IRQ: status c028 cmd 10031
[  430.267963] ehci_hcd 0000:00:1a.7: IRQ: status 6009 cmd 10011
[  430.267976] usb 1-4: urb complete
[  430.267980] usb 1-4: userurb 00007f1c397379f0, ep3 int-in,
actual_length 16 status -121
[  430.267984] data: 10 00 00 00 04 00 01 c1 ff ff ff ff 00 00 00 00
                                               ................
[  430.268008] usb 1-4: usbdev_do_ioctl: REAPURBNDELAY
[  430.268189] usb 1-4: usbdev_do_ioctl: SUBMITURB
[  430.268196] usb 1-4: userurb 00007f1c3881e250, ep2 bulk-out, length 12
[  430.268199] data: 0c 00 00 00 01 00 16 91 25 00 00 00
                                               ........%...
[  430.268324] ehci_hcd 0000:00:1a.7: IRQ: status c009 cmd 10021

$ cat 0000\:00\:1a.7/async
qh/ffff88055e366980 dev7 hs ep2 42002207 40000000 (00008c00  data0 nak4)
	ffff880037801240 out len=0 00008c00 urb ffff880522de5c80

Austin Schuh
--
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