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 ================================================================== cat /proc/interrupts CPU0 CPU1 0: 193087 197372 IO-APIC-edge timer 1: 1 1 IO-APIC-edge i8042 8: 1 0 IO-APIC-edge rtc0 9: 0 0 IO-APIC-fasteoi acpi 12: 2 2 IO-APIC-edge i8042 16: 104204 95797 IO-APIC-fasteoi uhci_hcd:usb1 18: 183175 186261 IO-APIC-fasteoi uhci_hcd:usb3, uhci_hcd:usb6, ehci_hcd:usb7 19: 0 0 IO-APIC-fasteoi ata_piix, uhci_hcd:usb5 21: 15978 18213 IO-APIC-fasteoi uhci_hcd:usb2 23: 0 0 IO-APIC-fasteoi uhci_hcd:usb4, ehci_hcd:usb8 24: 16592 16908 PCI-MSI-edge i915 25: 46695 46109 PCI-MSI-edge ahci 26: 4024 4084 PCI-MSI-edge eth0 27: 47331 46566 PCI-MSI-edge HDA Intel NMI: 0 0 Non-maskable interrupts LOC: 255352 264704 Local timer interrupts SPU: 0 0 Spurious interrupts CNT: 0 0 Performance counter interrupts PND: 0 0 Performance pending work RES: 115360 106519 Rescheduling interrupts CAL: 88 175 Function call interrupts TLB: 1571 1806 TLB shootdowns TRM: 0 0 Thermal event interrupts THR: 0 0 Threshold APIC interrupts MCE: 0 0 Machine check exceptions MCP: 9 9 Machine check polls ERR: 0 MIS: 0
Created attachment 22465 [details] dmesg
Created attachment 22466 [details] lsusb
Created attachment 22467 [details] lspci
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
One day more and i lerned some 1/8 byte more. This is not about sound card low and hi speed usb devices. Normally i attach hi speed device for example to uhci_hcd:usb3 it will route connection to ehci_hcd:usb1 and all interrupts will got to IRQ 18 (on this pc).. if i attach low speed device to uhci_hcd:usb3 it no need to route some where, so it will use IRQ 16... i hope i understand it correctly. the bug is: if i attach low speed device to uhci_hcd:usb5 it will sort of broadcast connection to uhci_hcd:usb5 and uhci_hcd:usb3. And use both IRQs, 16 and 18. I can reproduce it with any low speed device attached on "ehci_hcd:usb1, uhci_hcd:usb5"