This patch (as1298) fixes a bug in the new scatter-gather URB facility. If an URB uses a scatterlist then it should not have the URB_NO_INTERRUPT flag set; otherwise the system won't be notified when the transfer completes. Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> CC: David Vrabel <david.vrabel@xxxxxxx> CC: Sarah Sharp <sarah.a.sharp@xxxxxxxxx> --- Unless David or Sarah thinks otherwise, this patch can wait until 2.6.33. It affects only HCDs with scatter-gather support, which currently means only WHCI and xHCI. I'm a little surprised the bug hasn't shown up in testing on those controllers, however. Is it hidden by an I/O watchdog timer? Or do they simply not support URB_NO_INTERRUPT? Index: usb-2.6/drivers/usb/core/message.c =================================================================== --- usb-2.6.orig/drivers/usb/core/message.c +++ usb-2.6/drivers/usb/core/message.c @@ -403,7 +403,7 @@ int usb_sg_init(struct usb_sg_request *i if (!io->urbs) goto nomem; - urb_flags = URB_NO_INTERRUPT; + urb_flags = 0; if (dma) urb_flags |= URB_NO_TRANSFER_DMA_MAP; if (usb_pipein(pipe)) @@ -435,6 +435,7 @@ int usb_sg_init(struct usb_sg_request *i io->urbs[0]->num_sgs = io->entries; io->entries = 1; } else { + urb_flags |= URB_NO_INTERRUPT; for_each_sg(sg, sg, io->entries, i) { unsigned len; -- 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