Re: uvcvideo: Failed to resubmit video URB (-27)

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

 



On Mon, 26 Sep 2011, Pitt, Jason N wrote:

> I built/booted the 3.1rc7 kernel (I had to use the one off of
> github.com since kernel.org is down, I hope that doesn't make a
> difference).  I repeated the test and had the same result....I've
> attached the dmesg, sys/kernel/debug/usb/usbmon/0u, and lsusb.

Yep, I see the same problem.

> -I've never patched the kernel before so any guidance would be appreciated!

It's easy enough.  Extract this email message to a plain text file.  
Then go into the top-level directory of your 3.1-rc7 kernel source and
run

	patch -p1 <email-file-name

That will apply the patch.  Then all you have to do is recompile and
install the kernel, which should be fairly quick since only one source
file will have changed since your previous build.

For this test I won't need the lsusb or usbmon output; the dmesg log
will be enough.  And I only need to see the log from the start of the
test.  You can erase the beginning part by running

	dmesg -c >/dev/null

before the test begins.

Alan Stern



Index: usb-3.1/drivers/usb/host/ehci-sched.c
===================================================================
--- usb-3.1.orig/drivers/usb/host/ehci-sched.c
+++ usb-3.1/drivers/usb/host/ehci-sched.c
@@ -2293,6 +2293,7 @@ scan_periodic (struct ehci_hcd *ehci)
 		union ehci_shadow	q, *q_p;
 		__hc32			type, *hw_p;
 		unsigned		incomplete = false;
+int oclock = -1;
 
 		frame = now_uframe >> 3;
 
@@ -2373,6 +2374,15 @@ restart:
 					*hw_p = ehci->dummy->qh_dma;
 				type = Q_NEXT_TYPE(ehci, q.itd->hw_next);
 				wmb();
+
+if (q.itd->hw_transaction[7] & ITD_ACTIVE(ehci)) {
+	ehci_info(ehci, "Bad iTD frame %u uf %u index0,7 %u %u startf %d\n",
+		frame, uf, q.itd->index[0], q.itd->index[7],
+		q.itd->urb->start_frame);
+	ehci_info(ehci, "  clockf %u clockuf %u nowuf %u oclock %d",
+		clock_frame, clock, now_uframe, oclock);
+}
+
 				modified = itd_complete (ehci, q.itd);
 				q = *q_p;
 				break;
@@ -2460,6 +2470,7 @@ restart:
 				break;
 
 			/* rescan the rest of this frame, then ... */
+oclock = clock;
 			clock = now;
 			clock_frame = clock >> 3;
 			if (ehci->clock_frame != clock_frame) {

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