RE: EHCI driver breaks at 6 endpoints

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

 



> -----Original Message-----
> From: Greg KH [mailto:gregkh@xxxxxxxxxxxxxxxxxxx]
> Sent: Tuesday, July 23, 2013 10:27 AM
> To: Stoddard, Nate (GE Healthcare)
> Cc: linux-usb@xxxxxxxxxxxxxxx
> Subject: Re: EHCI driver breaks at 6 endpoints
> 
> On Tue, Jul 23, 2013 at 01:33:25PM +0000, Stoddard, Nate (GE Healthcare)
> wrote:
> > Hello,
> >
> > We are attempting to create a system that will support 8 full speed
> > USB devices each sending a 64-byte transfer every 1ms via interrupt
> > endpoints.  When we connect 5 full speed USB devices our USB host use
> > 24% of the CPU, but when we connect a 6th device, the CPU goes to
> > 100%.  Has anyone else seen this type of CPU jump or know what could
> > be causing it?
> >
> > Devices	CPU	Total Throughput
> >  1		 7%	64  KB/s
> >  2		11%	128 KB/s
> >  3		15%	192 KB/s
> >  4		19%	256 KB/s
> >  5		24%	320 KB/s
> >  6		99%	(should be 384 KB/s, but the iMX535 misses sending
> IN tokens in some SOF periods)
> >
> > We are using a Freescale iMX535 board running at 800 MHz as the USB
> > host.  One of the iMX535 EHCI root controllers is connected to a high
> > speed USB hub which has two ports each connected to another high speed
> > USB hub (giving us 8 ports for USB devices).  Each hub has multi-TT
> > support.  The iMX535 is running Linux 2.6.35, and our test application
> > uses libUSB asynchronous I/O (v1.0.16).   The libUSB callback function
> > do not process the data; rather the function only resubmits the
> > transfer.
> 
> As you are using an old, obsolete, and unsupported-by-the-community
> kernel version, I am going to have to point you to the vendor that provided
> you with this kernel (that you are paying for), and ask that you get support
> from them, as there's really nothing we can do for you here.
> 
> And that hardware is not the "best".  What happens if you plug the same
> number of devices into a "real" EHCI host controller (i.e. a PCI one on a PC)?
> The EHCI driver should handle this just fine, odds are the issues are down in
> the iMX535 driver, or possibly, the silicon for that chip as I don't think it was
> designed to support that many devices (read the data sheet for specifics, but
> I thought I saw that years ago...)
> 

We cannot easily run 3.10.2 on our iMX535; however, we did run similar testing on an Ubuntu x86 PC running at 1.2 GHz (1 core no hyperthreading).  We connected 7 full speed USB devices to two USB 2.0 high speed hubs to the USB 2.0 ports on the PC.  Each USB device was sending an interrupt IN endpoint every 1ms.  Here are the results with the latest kernel versions:
   Linux 3.2     CPU = 37%
   Linux 3.5     CPU = 37%   (for most runs, but some were 99%)
   Linux 3.8     CPU = 8 %
   Linux 3.10   CPU = 8 %

Any ideas what would have changed between 3.5 and 3.8?  

Is there an easy way to find out if there were major changes to the EHCI driver between 3.5 and 3.8?  I started to look at the git logs; is there an alternative?

Also, if we connect the hubs to the USB 3.0 ports on the PC, in all the versions listed above, the CPU is 8%.  Is this because of the XHCI driver is used on USB 3.0 ports?

Thanks for the help,
-Nate
--
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