Re: [PATCH] USB: EHCI: go back to using the system clock for QH unlinks

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

 



On Tue, 20 Mar 2012, Ming Lei wrote:

> On Wed, Jul 6, 2011 at 12:34 AM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> > This patch (as1477) fixes a problem affecting a few types of EHCI
> > controller. �Contrary to what one might expect, these controllers
> > automatically stop their internal frame counter when no ports are
> > enabled. �Since ehci-hcd currently relies on the frame counter for
> > determining when it should unlink QHs from the async schedule, those
> > controllers run into trouble: The frame counter stops and the QHs
> > never get unlinked.
> >
> > Some systems have also experienced other problems traced back to
> > commit b963801164618e25fbdc0cd452ce49c3628b46c8 (USB: ehci-hcd unlink
> > speedups), which made the original switch from using the system clock
> > to using the frame counter. �It never became clear what the reason was
> > for these problems, but evidently it is related to use of the frame
> > counter.

...

> Interesting, this may fix a possible performance bug[1] too.
> 
> I guess that if the HC hw doesn't obey the rule of Interrupt Threshold
> Control, then two sequential scan_async may be called in same uframe, the
> qh_completions for the 2nd URB will be missed and io watchdog will be
> triggered, so degrade performance a lot.
> 
> [1], https://bugs.launchpad.net/bugs/624510

It's hard to know exactly what went wrong here; to find out would 
require some serious testing on the affected system.  Anyway, I'm glad 
the patch fixed your problem.

Alan Stern

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