[alsa-devel] ich10 usb_host vs snd_usb_audio Hercules - irq broadcast.
Hallo,
i found some time to investigate the issue with my "Hercules USB 5.1 Cannel Audio Adapter". The issue is pretty tricky and depend to host hardware, in my situation this is Intel DG45ID board.
Symptoms are: if i use this sound adapter after some time i'll get: irq 16: nobody cared ... Disabling IRQ #16. After closer look i found, it depend on usb port. And if i use one "wrong" usb port on IRQ 18 it will broadcast interrupts to two IRQs 18 and 16, until IRQ 16 will die.
The problem is... this happens only with this sound card. So this is not easy to locate bug. And it's working fine on Win Vista and on Mac OS on same hardware.. so it should be software issue.
Here is a copy of my post on http://bugzilla.kernel.org/show_bug.cgi?id=13816
If use any usb connector located on irq 18 for usb soundcard it will cause "irq 16: nobody cared", so every thing connected (usb mouse, keyboard ) to irq 16 will be broken. If i connect devices with less traffic (like mouse or keyboard) to irq 18, and usb soundcard to irq 16 or 21 ... every thing will be fine. irqpoll do not do any difference.
/ irq16|uhci-3 (mouse, keyboard) irq18|ehci-1- irq21|uhci-4 (sound work fine normal) \ irq18|uhci-5 (sound will brake uhci-3)
/ irq23|uhci-6 (not used) irq23|ehci-2- irq19|uhci-7 (not used) \ irq18|uhci-8 (not used)
========================================================================= [ 315.056793] irq 16: nobody cared (try booting with the "irqpoll" option) [ 315.056799] Pid: 0, comm: swapper Not tainted 2.6.31-rc3-00216-gea11951-dirty #98 [ 315.056802] Call Trace: [ 315.056804] <IRQ> [<ffffffff8109d666>] __report_bad_irq+0x26/0xa0 [ 315.056814] [<ffffffff8109d86c>] note_interrupt+0x18c/0x1d0 [ 315.056819] [<ffffffff8106a373>] ? sched_clock_tick+0x73/0xb0 [ 315.056823] [<ffffffff8109deb5>] handle_fasteoi_irq+0xb5/0xe0 [ 315.056827] [<ffffffff8100dffd>] handle_irq+0x1d/0x30 [ 315.056830] [<ffffffff8100d527>] do_IRQ+0x67/0xe0 [ 315.056834] [<ffffffff8100c013>] ret_from_intr+0x0/0xa [ 315.056837] <EOI> [<ffffffff812822e1>] ? acpi_idle_enter_bm+0x256/0x288 [ 315.056844] [<ffffffff812822de>] ? acpi_idle_enter_bm+0x253/0x288 [ 315.056849] [<ffffffff813a480b>] ? cpuidle_idle_call+0x9b/0xf0 [ 315.056853] [<ffffffff8100a59c>] ? cpu_idle+0xac/0x100 [ 315.056858] [<ffffffff81496825>] ? rest_init+0x65/0x70 [ 315.056862] [<ffffffff8172ed35>] ? start_kernel+0x3ba/0x3c5 [ 315.056866] [<ffffffff8172e315>] ? x86_64_start_reservations+0x125/0x129 [ 315.056870] [<ffffffff8172e3fd>] ? x86_64_start_kernel+0xe4/0xeb [ 315.056872] handlers: [ 315.056874] [<ffffffff8134bdb0>] (usb_hcd_irq+0x0/0x70) [ 315.056878] Disabling IRQ #16 ==================================================================
I did smole script to test haw interrupts are used:
$for i in $(seq 1 1000); do cat /proc/interrupts >> test; sleep 10s; done $grep usb[3,4,5] test
there is no connections on usb3. on usb4 are keyboard an mouse. on usb5 is the soundcard.
====================================================================== -------after boot. there is too match interrupts on 16, -------there is nothing connected. 16: 4276 4520 IO-APIC-fasteoi uhci_hcd:usb3 18: 2732 2598 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 856 816 IO-APIC-fasteoi uhci_hcd:usb4
-------here i begin to play to usb sound card on usb5. 16: 12162 10987 IO-APIC-fasteoi uhci_hcd:usb3 18: 8070 7134 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 887 875 IO-APIC-fasteoi uhci_hcd:usb4
16: 20097 17784 IO-APIC-fasteoi uhci_hcd:usb3 18: 13539 11674 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 1003 958 IO-APIC-fasteoi uhci_hcd:usb4
------- count of interrupts on irq 16 is almost double of irq18 16: 28083 24881 IO-APIC-fasteoi uhci_hcd:usb3 18: 19091 16130 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 1005 968 IO-APIC-fasteoi uhci_hcd:usb4
...... ......
16: 94758 81082 IO-APIC-fasteoi uhci_hcd:usb3 18: 61430 53863 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 1389 1539 IO-APIC-fasteoi uhci_hcd:usb4
16: 103141 87919 IO-APIC-fasteoi uhci_hcd:usb3 18: 66678 58625 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 1389 1539 IO-APIC-fasteoi uhci_hcd:usb4
------- irq 16: nobody cared, Disabling IRQ #16. 16: 107840 92161 IO-APIC-fasteoi uhci_hcd:usb3 18: 71854 63458 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 1389 1539 IO-APIC-fasteoi uhci_hcd:usb4
16: 107840 92161 IO-APIC-fasteoi uhci_hcd:usb3 18: 76498 68823 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8 21: 1389 1539 IO-APIC-fasteoi uhci_hcd:usb4
Alexey Fisher wrote:
i found some time to investigate the issue with my "Hercules USB 5.1 Cannel Audio Adapter". The issue is pretty tricky and depend to host hardware, in my situation this is Intel DG45ID board.
Symptoms are: if i use this sound adapter after some time i'll get: irq 16: nobody cared ... Disabling IRQ #16.
The USB audio driver does not manage USB interrupts; this is probably a problem with the USB controller driver or, more likely, with the interrupt routing.
HTH Clemens
Clemens Ladisch schrieb:
Alexey Fisher wrote:
i found some time to investigate the issue with my "Hercules USB 5.1 Cannel Audio Adapter". The issue is pretty tricky and depend to host hardware, in my situation this is Intel DG45ID board.
Symptoms are: if i use this sound adapter after some time i'll get: irq 16: nobody cared ... Disabling IRQ #16.
The USB audio driver does not manage USB interrupts; this is probably a problem with the USB controller driver or, more likely, with the interrupt routing.
Ok, i found how to reproduse it withous sound card... this is about lowspeed devices.. thank you, Alexey
participants (2)
-
Alexey Fisher
-
Clemens Ladisch