[last mail bounced (> 60KB), so I'm resending after two days] Hello all,
during a rather long time, I've been writing a driver for the Aztech PCI168 card. The reason it took so long is that I was unable to get any specs from Aztech ;-) I'd be happy if someone could give this driver a try and report any problems to me (it most certainly will have some problems). Would be even better if someone actually helped me with development ;-) Note that I updated to current CVS today (was using a version that's about 2 weeks old), but I was unable to use the module again so far (module versioning loading errors), so the driver has only been tested with a slightly less current ALSA. The diff needed to add the driver also contains some corrections of spelling etc. that I spotted. Note that I placed azt3328.c in the alsa-kernel/pci/ directory, which is probably not what you want when adding it to CVS. Current status: - mixer interface complete - playback fully working - recording working (?) - playback/recording working (??) - MIDI interface added (does it work ??) - missing: power management (CONFIG_PM), legacy sound hardware support, wave in switch Currently I'm still getting two different OOPSes, too: one OOPS happens after playing e.g. an MP3 file with alsaplayer: Oct 6 21:17:45 andi kernel: Unable to handle kernel paging request at virtual +address 00007dd0 Oct 6 21:17:45 andi kernel: printing eip: Oct 6 21:17:45 andi kernel: c026866d Oct 6 21:17:45 andi kernel: *pde = 00000000 Oct 6 21:17:45 andi kernel: Oops: 0002 Oct 6 21:17:45 andi kernel: CPU: 0 Oct 6 21:17:45 andi kernel: EIP: 0010:[rwsem_wake+10421/10482] Not +tainted Oct 6 21:17:45 andi kernel: EFLAGS: 00010246 Oct 6 21:17:45 andi kernel: eax: 00000000 ebx: 00000230 ecx: 00000230 +edx: 082a98f8 Oct 6 21:17:45 andi kernel: esi: 082a96c8 edi: 00007dd0 ebp: 00001f74 +esp: d7e8dcb4 Oct 6 21:17:45 andi kernel: ds: 0018 es: 0018 ss: 0018 Oct 6 21:17:45 andi kernel: Process alsaplayer (pid: 10398, +stackpage=d7e8d000)Oct 6 21:17:45 andi kernel: Stack: 00000000 00000230 +00000020 da4e1c00 dfa4e580 e0bf38cc 00007dd0 082a96c8 Oct 6 21:17:45 andi kernel: 00000230 0000008c 008ebf74 da4e1c00 +d13d6000+e0bf3bad dfa4e580 00001f74 Oct 6 21:17:45 andi kernel: 082a96c8 00000000 0000008c dfa4e580 +bf1ffa54+dfa4e580 00000000 d7e8dd24 Oct 6 21:17:45 andi kernel: Call Trace: [<e0bf38cc>] [<e0bf3bad>] +[<e0bf3d04>] [<e0bf386c>] [<e0bef73d>] Oct 6 21:17:45 andi kernel: [ide_set_handler+85/96] [sis5513_dmaproc+51/60] +[ide_dmaproc+434/632] [do_anonymous_page+186/212] [sis5513_dmaproc+51/60] +[do_rw_disk+734/1328] Oct 6 21:17:45 andi kernel: [start_request+326/544] [start_request+428/544] +[__alloc_pages+59/360] [_alloc_pages+22/24] [__get_free_pages+10/64] +[kmem_cache_alloc+173/188] Oct 6 21:17:45 andi kernel: [send_signal+44/240] [deliver_signal+73/80] +[send_sig_info+116/136] [kill_something_info+281/292] [sys_kill+77/88] +[8139too:__insmod_8139too_S.text_L8976+6284/9088] Oct 6 21:17:45 andi kernel: [handle_IRQ_event+52/96] [<e0befc9e>] +[sys_ioctl+362/388] [system_call+51/64] Oct 6 21:17:45 andi kernel: Oct 6 21:17:45 andi kernel: Code: f3 aa 58 59 e9 4e be ff ff ba f2 ff ff ff e9 83 be ff ff ba If I comment out the snd_pcm_lib_free_pages(substream); in snd_azf3328_hw_free(), then I avoid the OOPS, but of course this isn't exactly what I'm supposed to do. Any idea about that ? I really don't see why it should be crashing here... I thought that it might happen because the moment that it frees the substream, the interrupt handler gets one more interrupt (and possibly does a snd_pcm_period_elapsed() or so), but this is not the case (no interrupt at this time). The second crashes involves combined operation of snd-azt3328 and snd-intel8x0: [reboot, fresh box] modprobe snd-azt3328 rmmod snd-azt3328 modprobe snd-intel8x0 rmmod snd-intel8x0 modprobe snd-azt3328 <----- OOPS This results in: Oct 6 21:52:34 andi kernel: Unable to handle kernel paging request at virtual +address e0c05c20 Oct 6 21:52:34 andi kernel: printing eip: Oct 6 21:52:34 andi kernel: c021d4d8 Oct 6 21:52:34 andi kernel: *pde = 1c8db067 Oct 6 21:52:34 andi kernel: *pte = 00000000 Oct 6 21:52:34 andi kernel: Oops: 0002 Oct 6 21:52:34 andi kernel: CPU: 0 Oct 6 21:52:34 andi kernel: EIP: 0010:[pci_register_driver+28/96] Not +tainted Oct 6 21:52:34 andi kernel: EFLAGS: 00010282 Oct 6 21:52:34 andi kernel: eax: e0c05c20 ebx: e0c02000 ecx: d9b12000 +edx: dfe1eb20 Oct 6 21:52:34 andi kernel: esi: e0c04500 edi: 00000004 ebp: 00002544 +esp: d9b13f18 Oct 6 21:52:34 andi kernel: ds: 0018 es: 0018 ss: 0018 Oct 6 21:52:34 andi kernel: Process modprobe (pid: 1044, stackpage=d9b13000) Oct 6 21:52:34 andi kernel: Stack: e0c02000 00000004 00000004 e0c03275 +e0c04500+e0c02000 c011739d d9b12000 Oct 6 21:52:34 andi kernel: 0805315b 00002544 bfffc0ac 00001ce0 +d9b14000+00000060 d9b15000 ffffffea Oct 6 21:52:34 andi kernel: 0000000b da1f5700 00000060 e0bfb000 +e0c02060+00002544 00000000 00000000 Oct 6 21:52:34 andi kernel: Call Trace: [<e0c03275>] [<e0c04500>] +[sys_init_module+1285/1440] [<e0c02060>] [system_call+51/64] Oct 6 21:52:34 andi kernel: Oct 6 21:52:34 andi kernel: Code: 89 30 8b 1d 68 07 2e c0 31 ff 81 fb 68 07 2e c0 74 29 8d b6 So this is in pci_register_driver() (i.e.: at the beginning of pci_module_init()). I really don't see why it should crash here either. AFAICS both drivers manage the PCI (de)registration properly. I didn't find any omission at least. Any idea what's wrong here ? (yes, the traces are old, but the problems still persist, without any solution) I think I can crack down on the pci_register_driver crash, though, by adding traces to Linux. This driver has been developed on 2.4.19, BTW. If you have any questions, just let me know. Thanks for listening, Andreas Mohr
alsa.tar.bz2
Description: BZip2 compressed data