Re: Fwd: Fwd: EHCI driver problem

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

 



On 11/08/2011 05:40 AM, Alan Stern wrote:
> On Sat, 5 Nov 2011, Anton Alekseev wrote:
> 
>>> Here's the next thing to try: Boot a kernel that was built with
>>> CONFIG_USB_DEBUG enabled, and then mount a debugfs on
>>> /sys/kernel/debug.  While running the audio program, go into the
>>> /sys/kernel/debug/usb/ehci/0000:00:12.2 directory and make a copy of
>>> the files there (the only ones that really matter are the "registers"
>>> and "periodic" files).
>>>
>>> Also, get a copy of the /sys/kernel/debug/usb/devices file.  Let's see
>>> what all those files have to say.
>>
>> Greetings.
>> Logs in attachments
> 
> Unfortunately the information in those files didn't help.  It just 
> shows that everything was normal while the program was running.
> 
> Maybe Andiry Xu will be able to help figure this out.  I have no idea
> what's causing the problem, beyond the fact that there's obviously
> something wrong with the EHCI controller.
> 

I checked with HW guys, and they can't think of anything would cause
such long latency. It may take 1~2ms to respond to periodic disable
command, but should not extend to 8ms.

One thing to try: apply the patch attached, disable PLL quirk and see if
it makes any differences.

Since it only occur with special initialization parameters, maybe EHCI
is busying on with this special case, but hard to tell what cause the
latency without a PCIE trace.

Thanks,
Andiry
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 8311de7..7018fe7 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -114,9 +114,9 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
 		 * table. To avoid the issue, the frame list link pointer
 		 * should always contain a valid pointer to a inactive qh.
 		 */
-		ehci->use_dummy_qh = 1;
-		ehci_info(ehci, "applying AMD SB700/SB800/Hudson-2/3 EHCI "
-				"dummy qh workaround\n");
+//		ehci->use_dummy_qh = 1;
+//		ehci_info(ehci, "applying AMD SB700/SB800/Hudson-2/3 EHCI "
+//				"dummy qh workaround\n");
 	}
 
 	/* data structure init */
@@ -153,8 +153,8 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
 		break;
 	case PCI_VENDOR_ID_AMD:
 		/* AMD PLL quirk */
-		if (usb_amd_find_chipset_info())
-			ehci->amd_pll_fix = 1;
+//		if (usb_amd_find_chipset_info())
+//			ehci->amd_pll_fix = 1;
 		/* AMD8111 EHCI doesn't work, according to AMD errata */
 		if (pdev->device == 0x7463) {
 			ehci_info(ehci, "ignoring AMD8111 (errata)\n");
@@ -201,8 +201,8 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
 		break;
 	case PCI_VENDOR_ID_ATI:
 		/* AMD PLL quirk */
-		if (usb_amd_find_chipset_info())
-			ehci->amd_pll_fix = 1;
+//		if (usb_amd_find_chipset_info())
+//			ehci->amd_pll_fix = 1;
 		/* SB600 and old version of SB700 have a bug in EHCI controller,
 		 * which causes usb devices lose response in some cases.
 		 */

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

  Powered by Linux