snd-cs4236 (possibly all isa-pnp cards or all alsa isa-pnp cards) broken in 2.6.16-rc4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Takashi.

I noticed on 2.6.16-rc4 that my MPU-401 wasn't functional, due to a simple copy & paste error in sound/isa/cs423x/cs4236.c:

Index: local/sound/isa/cs423x/cs4236.c
===================================================================
--- local.orig/sound/isa/cs423x/cs4236.c 2006-02-11 00:34:12.000000000 +0100
+++ local/sound/isa/cs423x/cs4236.c     2006-02-20 04:01:29.000000000 +0100
@@ -414,7 +414,7 @@ static int __devinit snd_card_cs423x_pnp
        }
        /* MPU initialization */
        if (acard->mpu && mpu_port[dev] > 0) {
-               if (snd_cs423x_pnp_init_mpu(dev, acard->ctrl, cfg) < 0)
+               if (snd_cs423x_pnp_init_mpu(dev, acard->mpu, cfg) < 0)
                        goto error;
        }
        kfree(cfg);

Please apply. However, when I tested it (mpu works fine again after this) I noticed that modprobe -r snd-cs4236 didn't release things -- specifically that the fixed index=1 I have for the card failed on a subsequent modprobe since ALSA believes that index is still taken.

I stuck a few printks in cs4236.c. From "snd_cs423x_unregister_all", "pnp_unregister_card_driver(&cs423x_pnpc_driver)" is indeed being called but the card driver's own remove method, snd_cs423x_pnpc_remove, is not.

I started looking, but ran into the next issue again -- when snd-cs4236 is not card1 but card0, modprobe -r oopses in snd_timer_free (attached) meaning debugging this wants someone with more of an overview of recent damage done^W^Wchanges made.

Given that calling pnp_unregister_card_driver() is not cs4236 specific, I assume the problem is more general. Possibly all ALSA ISA-PnP drivers. Or, given that pnp_unregister_card_driver is not an ALSA function, maybe even all ISA-PnP drivers using the card_driver interface.

The more general this problem turns out, the more reason there would be for fixing this pre 2.6.16, obviously. I can test patches...

Rene.


pnp: Device 01:01.03 disabled.
pnp: Device 01:01.02 disabled.
ALSA sound/isa/cs423x/cs4231_lib.c:208: in: auto calibration time out - reg = 0x18
ALSA sound/isa/cs423x/cs4231_lib.c:187: out: auto calibration time out - reg = 0x10, value = 0x80
ALSA sound/isa/cs423x/cs4231_lib.c:149: outm: auto calibration time out - reg = 0x18, value = 0x0
pnp: Device 01:01.00 disabled.
pnp: the driver 'cs4236_isapnp' has been unregistered
ALSA sound/core/seq/seq_device.c:574: drivers not released (2)
Unable to handle kernel paging request at virtual address f09c6058
 printing eip:
f09c6058
*pde = 016d6067
*pte = 00000000
Oops: 0000 [#1]
PREEMPT 
Modules linked in: snd_timer snd soundcore snd_page_alloc mga amd_k7_agp drm agpgart nfsd exportfs lockd sunrpc nls_iso8859_1 nls_cp437 vfat fat nls_base
CPU:    0
EIP:    0060:[<f09c6058>]    Not tainted VLI
EFLAGS: 00010282   (2.6.16-rc4-local #8) 
EIP is at 0xf09c6058
eax: ec20f400   ebx: ec20f400   ecx: ec20f4e8   edx: f09c6058
esi: b7f0417c   edi: 00000000   ebp: e627a000   esp: e627af54
ds: 007b   es: 007b   ss: 0068
Process modprobe (pid: 1359, threadinfo=e627a000 task=e8291ad0)
Stack: <0>f09b20f2 e62610e8 f09b3c20 f09b5bc0 c0126529 00000000 5f646e73 656d6974 
       c0130072 ffffffff e65d322c b7f14000 c0137f6c b7f13000 b7f14000 b7f14000 
       e65d33e4 ef12cae0 ef12cb10 ffff0001 0027a000 c0137fae 0805c3f8 b7f0417c 
Call Trace:
 [<f09b20f2>] snd_timer_free+0x3b/0x46 [snd_timer]
 [<f09b3c20>] alsa_timer_exit+0x27/0x42 [snd_timer]
 [<c0126529>] sys_delete_module+0x12b/0x155
 [<c0130072>] __pdflush+0x196/0x1ac
 [<c0137f6c>] do_munmap+0xe2/0xef
 [<c0137fae>] sys_munmap+0x35/0x4d
 [<c0102551>] syscall_call+0x7/0xb
Code:  Bad EIP value.

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux