Messages in this thread Patch in this message | | | Date | Mon, 20 Feb 2006 17:54:53 +0100 | From | Rene Herman <> | Subject | snd-cs4236 (possibly all isa-pnp cards or all alsa isa-pnp cards) broken in 2.6.16-rc4 |
| |
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.
| |