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

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

 



For some reason that patch didn't work, but I manually made your changes to the code and it seems to be working fine.  Here's the dmesg output after the 12 camera test

-Thanks!
Jason

----- Original Message -----
From: "Alan Stern" <stern@xxxxxxxxxxxxxxxxxxx>
To: "Jason N Pitt" <jpitt@xxxxxxxxx>
Cc: "USB list" <linux-usb@xxxxxxxxxxxxxxx>
Sent: Tuesday, September 27, 2011 9:06:09 AM
Subject: Re: uvcvideo: Failed to resubmit video URB (-27)

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


-- 
/*
Jason Pitt PhD                                   206.667.5603
Roth Lab                                      jpitt@xxxxxxxxx
Basic Sciences Division 
Fred Hutchinson Cancer Research Center
1100 Fairview Ave N A3-135
Seattle, WA 98109
*/

Attachment: patched
Description: Binary data


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux