Hi, I've filed a bug at http://bugzilla.kernel.org/show_bug.cgi?id=13779
and was asked to bring it here for discussion.
The short of it is that I have a board that ends up with ehci and uhci on
the same interrupt, and in kernel 2.6.27 something changed that causes
these two to conflict in some way that causes a firmware upload to take
ridiculously long to complete on a USB 2.0 device.
Thanks for any/all help.
Here's the text of the bug, for convenience:
The 950Q TV tuner from Hauppauge uploads its firmware 64 bytes at a time
over
USB, when you tune a channel. In linux stock kernel 2.6.26 this works
fine,
but in 2.6.27 and later (tested up to .30) the firmware transfer takes 15
minutes, rendering the device unusable. This bug is motherboard
dependent, and
working with Mike Krufky at Hauppauge (a dvb/v4l contributor) we have
determined that it is a resource conflict between ehci and uhci drivers.
Our main diagnosis is that (using 2.6.30) by disabling the UHCI driver, the
firmware upload no longer exhibits the problem. Our main clue was that on
our
hardware, ehci and one instance of uhci were sharing an interrupt. They
were
also sharing an interrupt in 2.6.26, but did not have the slow transfer
problem
in that version of the kernel. The problem showed up in 2.6.27 and later.
Our platform is an embedded Intel Atom board. Other systems with 2.6.30
and
uchi enabled do not have this problem, however we have no other systems
where
ehci and uhci share an interrupt.
We are willing to help debug and test.
# uname -a
Linux 760t 2.6.30 #2 PREEMPT Tue Jul 14 18:59:30 EDT 2009 i686 GNU/Linux
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU N270 @ 1.60GHz
stepping : 2
cpu MHz : 1600.000
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc
arch_perfmon
pebs bts pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm lahf_lm
bogomips : 3200.25
clflush size : 64
power management:
With kernel 2.6.30 and uhci enabled (problem exists):
# cat /proc/interrupts
CPU0
0: 141 IO-APIC-edge timer
1: 4 IO-APIC-edge i8042
8: 0 IO-APIC-edge rtc0
9: 0 IO-APIC-fasteoi acpi
12: 5 IO-APIC-edge i8042
14: 1497 IO-APIC-edge ata_piix
15: 0 IO-APIC-edge ata_piix
16: 28974 IO-APIC-fasteoi i915, uhci_hcd:usb5, HDA Intel
18: 6292 IO-APIC-fasteoi uhci_hcd:usb4
19: 0 IO-APIC-fasteoi uhci_hcd:usb3
23: 3530150 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2
27: 5819 PCI-MSI-edge eth0
NMI: 0 Non-maskable interrupts
LOC: 3905153 Local timer interrupts
SPU: 0 Spurious interrupts
TRM: 0 Thermal event interrupts
ERR: 0
MIS: 0
With kernel 2.6.30 and uhci disabled (problem gone):
# cat /proc/interrupts
CPU0
0: 141 IO-APIC-edge timer
1: 4 IO-APIC-edge i8042
8: 0 IO-APIC-edge rtc0
9: 0 IO-APIC-fasteoi acpi
12: 5 IO-APIC-edge i8042
14: 1358 IO-APIC-edge ata_piix
15: 0 IO-APIC-edge ata_piix
16: 9828 IO-APIC-fasteoi i915, HDA Intel
23: 6461877 IO-APIC-fasteoi ehci_hcd:usb1
27: 63782 PCI-MSI-edge eth0
NMI: 0 Non-maskable interrupts
LOC: 55925030 Local timer interrupts
SPU: 0 Spurious interrupts
TRM: 0 Thermal event interrupts
ERR: 0
MIS: 0
--
Michael Conrad
IntelliTree Solutions llc.
513-552-6362
mconrad@xxxxxxxxxxxxxxx
--
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