[alsa-devel] ich10 usb_host vs snd_usb_audio Hercules - irq broadcast.

Alexey Fisher bug-track at fisher-privat.net
Thu Jul 23 20:00:13 CEST 2009


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


More information about the Alsa-devel mailing list