alsa-driver-1.0.3 with Linux 2.6.4 always has a FATAL modprobe error
when loading the ALSA modules for the first time. However, if you remove
the ALSA modules and then immediately re-load them, there is never an error
and ALSA works ok. Is this a bug or a modprobe.conf problem?
Exactly the same modules are loaded both when ALSA fails and when ALSA works.
However, even though exactly the same modules are loaded,
the module usage-counts change for both snd-pcm-oss and snd-emu8000-synth
from u.count == 1 when ALSA fails to u.count == 2 when ALSA works.
This is the only visible difference.
When you load the ALSA modules and then immediately remove them,
the ALSA-module file images are kept in the kernel cache,
so the next time you try loading the ALSA modules the kernel does not have
to wait for any disk I/O because the file image is almost instantly available
from kernel cache. This difference in module loading times
seems to be the trigger for the problem.
Is there a race condition between the ALSA modules?
William
$ reboot
# After rebooting:
$ lsmod | sort # the initial modules
Module Size Used by
pcspkr 3422 0
$ alsamixer # causes ALSA modules to be loaded
# according to /etc/modprobe.conf (see below)
$ lsmod | sort > lsmod-alsa-failed # modules failed
$ rmmod-alsa.sh # script removes ALSA modules
# but kernel keeps module files in its cache
$ alsamixer
$ lsmod | sort > lsmod-alsa-worked (see below)
$ diff lsmod-alsa-failed lsmod-alsa-worked # only module usage-counts differ
Module Size Used by
25c25
< snd_mixer_oss 17312 1 snd_pcm_oss
---
> snd_mixer_oss 17312 2 snd_pcm_oss
36c36
< snd_sbawe 28928 1 snd_emu8000_synth
---
> snd_sbawe 28928 2 snd_emu8000_synth
$ grep -E sound\|snd /etc/modprobe.conf
alias char-major-14-* soundcore
alias char-major-116-* snd
alias snd-card-0 snd-sbawe
alias sound-slot-0 snd-sbawe
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
options snd major=116 cards_limit=1
options snd-sbawe index=0
install snd-sbawe /sbin/modprobe --first-time --ignore-install snd-sbawe && {
/sbin/modprobe snd-opl3-lib; /sbin/modprobe snd-timer; /sbin/modprobe snd-emux-synth;
/sbin/modprobe snd-emu8000-synth; /sbin/modprobe snd-seq-dummy; /sbin/modprobe
snd-pcm-oss; /sbin/modprobe snd-mixer-oss; /sbin/modprobe snd-seq-oss; /sbin/modprobe
snd-opl3-synth; /bin/true; }
install snd-seq-virmidi /sbin/modprobe --first-time --ignore-install snd-seq-virmidi
&& { /sbin/modprobe snd-virmidi; /bin/true; }
install snd-mixer-oss /sbin/modprobe --first-time --ignore-install snd-mixer-oss && {
/usr/sbin/aumix -f /usr/etc/aumixrc -L; /bin/true; }
remove snd-sbawe { /sbin/modprobe -r snd-pcm-oss; /sbin/modprobe -r snd-mixer-oss;
/sbin/modprobe -r snd-seq-oss; /sbin/modprobe -r snd-opl3-synth; } ; /sbin/modprobe -r
--first-time --ignore-remove snd-sbawe
$ cat lsmod-alsa-worked
Module Size Used by
pcspkr 3422 0
snd 52404 24
snd_pcm_oss,snd_mixer_oss,snd_seq_dummy,snd_emu8000_synth,snd_emux_synth,snd_virmidi,snd_seq_virmidi,snd_util_mem,snd_seq_oss,snd_seq_midi_event,snd_opl3_synth,snd_seq_instr,snd_seq,snd_sbawe,snd_opl3_lib,snd_sb16_dsp,snd_pcm,snd_timer,snd_sb16_csp,snd_sb_common,snd_hwdep,snd_mpu401_uart,snd_rawmidi,snd_seq_device
snd_ainstr_fm 2568 1 snd_opl3_synth
snd_emu8000_synth 14722 0
snd_emux_synth 34686 1 snd_emu8000_synth
snd_hwdep 8960 3 snd_emux_synth,snd_opl3_lib,snd_sb16_csp
snd_mixer_oss 17008 2 snd_pcm_oss
snd_mpu401_uart 7168 1 snd_sbawe
snd_opl3_lib 9888 2 snd_opl3_synth,snd_sbawe
snd_opl3_synth 14400 0
snd_page_alloc 11364 1 snd_pcm
snd_pcm 92604 3 snd_pcm_oss,snd_emu8000_synth,snd_sb16_dsp
snd_pcm_oss 48644 0
snd_rawmidi 23264 2 snd_seq_virmidi,snd_mpu401_uart
snd_sb16_csp 19322 1 snd_sbawe
snd_sb16_dsp 10710 1 snd_sbawe
snd_sb_common 14848 3 snd_sbawe,snd_sb16_dsp,snd_sb16_csp
snd_sbawe 28518 2 snd_emu8000_synth
snd_seq 50000 10
snd_seq_dummy,snd_emux_synth,snd_seq_virmidi,snd_seq_oss,snd_seq_midi_event,snd_opl3_synth,snd_seq_instr,snd_seq_midi_emul
snd_seq_device 7716 8
snd_emu8000_synth,snd_emux_synth,snd_seq_oss,snd_opl3_synth,snd_seq,snd_sbawe,snd_opl3_lib,snd_rawmidi
snd_seq_dummy 3072 0
snd_seq_instr 8352 1 snd_opl3_synth
snd_seq_midi_emul 7264 2 snd_emux_synth,snd_opl3_synth
snd_seq_midi_event 7296 2 snd_seq_virmidi,snd_seq_oss
snd_seq_oss 31104 0
snd_seq_virmidi 7072 2 snd_emux_synth,snd_virmidi
snd_timer 24222 3 snd_seq,snd_opl3_lib,snd_pcm
snd_util_mem 4610 2 snd_emu8000_synth,snd_emux_synth
snd_virmidi 3758 0
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel