Hi; I have noticed the following problem today, and I hope I can get
some hints on how to proceed.
Environment: I am running on an ARM926EJ@333MHz board. Right now I am
stuck with Linux 2.6.27, porting to the latest kernel is going on, but
it is not operational at the moment.
I have a device (an I2S interface) that generates something like 5000+
interrupts per second. All is good - until I plug a USB 2.0 hub in a USB
port with a mouse and/or a keyboard attached. At that point, my I2S
interface suffers massive buffer underruns. Note that when I actually
move the mouse or use the keyboard there are *less* underruns, the
situation gets better!
With kernel 2.6.19 I did *not* have any of these problems.
After some trial and error, I found out that commenting out the
following code, the underruns are virtually gone AND USB is functional,
even if performance (ie copying data from a memory stick) are 4 times
worse. The piece of code is:
v2.6.27 drivers/usb/host/ehci-q.c qh_completions() lines 403-410
if (last_status == -EINPROGRESS) {
last_status = qtd_copy_status(ehci, urb,
qtd->length, token);
if (last_status == -EREMOTEIO
&& (qtd->hw_alt_next
& EHCI_LIST_END(ehci)))
last_status = -EINPROGRESS;
}
Any idea what can it be?
Thank you very much.
bye!
Alessio
--
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