Re: [linux-usb-devel] Re: USBDEVFS_RESET deadlocks USB bus.

From: Duncan Sands
Date: Mon Jun 07 2004 - 14:13:39 EST


> To give some background, the libusb backend of pilot-link is a slightly
> odd design, we do the init work, reset the device, and then setup a read
> thread, which basicly does a continuous loop of bulk no-timeout reads
> from USB.
>
> In the primary thread we do most of the work, including doing the USB
> bulk writes to do things like ask the pilot for information.
>
> Which, once I had things working again, sometimes resulted in the
> following issue:
>
> lt-pilot-xfer D 00000010 0 3351 3097 3398 (NOTLB)
> ca93dec0 00000082 00000001 00000010 cdaa434c caac11e8 cdaa43ec caac11a0
> ca93ded4 ce8b4318 c03a2fc0 00000000 3904f0c0 000f42ec cb7fe398 ca913c24
> 00000246 ca93c000 ca93defc c0336735 ca913c2c cb7fe1f0 00000001 cb7fe1f0
> Call Trace:
> [<c0336735>] __down+0x85/0x120
> [<c033692f>] __down_failed+0xb/0x14
> [<c0273245>] .text.lock.devio+0xe5/0x120
> [<c015a45d>] file_ioctl+0x5d/0x170
> [<c015a686>] sys_ioctl+0x116/0x250
> [<c0103f8f>] syscall_call+0x7/0xb
>
> lt-pilot-xfer D 00000001 0 3398 3351 (NOTLB)
> ca8ebe1c 00000082 00000000 00000001 0ca97854 ce5bca08 d7d85000 00000001
> ce5bca08 00000246 ca8ebe2c 00000000 38200f00 000f42ec cb7fe938 ca8ebeac
> ca8ea000 ca8ea000 ca8ebe70 c0336eb8 00000000 cb7fe790 c01146a0 00000000
> Call Trace:
> [<c0336eb8>] wait_for_completion+0x78/0xf0
> [<c026cc0a>] usb_start_wait_urb+0x7a/0xc0
> [<c0271866>] proc_bulk+0x116/0x220
> [<c0272f61>] usbdev_ioctl+0x581/0x710
> [<c015a45d>] file_ioctl+0x5d/0x170
> [<c015a686>] sys_ioctl+0x116/0x250
> [<c0103f8f>] syscall_call+0x7/0xb
>
> With the device not sending us any more data until it receives the
> write, and the write not getting to send until the bulk read finishes or
> the device goes away.
>
> With the predictable annoyance this causes, of course.

This is my fault. I will fix it.

Ciao,

Duncan.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/