At Mon, 14 Apr 2008 23:48:15 +0300, Risto Suominen wrote: > > I'd like to bring up a problem with using alsa-driver on older > kernels. I already made a bug report regarding snd-powermac: > https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3883. It's > possible that other drivers suffer from this, too. > > If I've understood it right, 1.0.16 should be usable on 2.2 kernels > and newer. Well, it woudn't compile on 2.6.15-26-powerpc (Ubuntu > 6.06.1 Dapper) without some patching. > > However, the real problem began, when I tried to unload the module. It > seems that something has changed (when?) in the kernel's IRQ > interface, and ALSA tries to make old code compatible with it by > introducing snd_request/free_irq, to be used with older kernels. The > idea is to distuingish between IRQs by the last parameter, usually > chip's address. This leads to trouble when several IRQs come from the > same chip, as is the case with snd-powermac. > > My conclusion: the drivers suffering from this should be identified, > and some alternative way of handling IRQs correctly on different > kernel versions should be developed. Does the patch below work? Takashi --- diff -r 9bd27001c3e6 acore/wrappers.c --- a/acore/wrappers.c Thu Mar 13 11:41:30 2008 +0100 +++ b/acore/wrappers.c Tue Apr 15 12:12:54 2008 +0200 @@ -250,6 +250,7 @@ typedef int (*snd_irq_handler_t)(int, vo typedef int (*snd_irq_handler_t)(int, void *); struct irq_list { snd_irq_handler_t handler; + int irq; void *data; struct list_head list; }; @@ -289,6 +290,7 @@ int snd_request_irq(unsigned int irq, sn if (!list) return -ENOMEM; list->handler = handler; + list->irq = irq; list->data = data; err = request_irq(irq, irq_redirect, irq_flags, str, list); if (err) { @@ -309,7 +311,7 @@ void snd_free_irq(unsigned int irq, void mutex_lock(&irq_list_mutex); list_for_each(p, &irq_list_head) { struct irq_list *list = list_entry(p, struct irq_list, list); - if (list->data == data) { + if (list->irq == irq && list->data == data) { free_irq(irq, list); list_del(p); kfree(list); _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel