[alsa-devel] snd_vortex_dev_free() BUG: unable to handle kernel NULL pointer

Raymond Yau superquad.vortex2 at gmail.com
Fri Mar 16 03:24:34 CET 2012


2012/3/15, Andrew Vagin <avagin at gmail.com>:
> Hello,
>
> In this case I try to reload modules and get this bug.
> # killall pulseaudio; rmmod snd_au8830 snd_hda_intel snd_seq snd_ac97_codec
> ac97_bus snd_hda_codec snd_hwdep snd_mpu401_uart snd_pcm snd_rawmidi
> snd_seq_device snd_pcm snd_timer  snd_page_alloc snd
> # modprobe snd_au8830


> [   12.657863] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
> [   12.659223] snd_hda_intel 0000:00:1b.0: irq 48 for MSI/MSI-X
> [   12.660521] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
> [   12.670024] ALSA sound/pci/hda/hda_intel.c:2837 no codecs found!
> [   12.671307] snd_hda_intel 0000:00:1b.0: PCI INT A disabled

Does your hda-intel  work properly?

speaker-test -c 2 -t wav -Dhw:Intel

any error message in system log before you unload the module, your
output only show
the error after reload ?

does "aplay -l" alway show two cards for every reboot ?

if your on-board hda-intel can only be loaded randomly, pulseaudio
server may behave differently since default is on-board sound card

>>> https://bugzilla.redhat.com/show_bug.cgi?id=788978
>>
>> Sometimes my sound card hangs up (It do not produce sounds. Applications
>> which try to play something hangs).

As your au8830 have stac9708

Did you select surround40 or stereo analog output profile ?

> APLAY

> **** List of PLAYBACK Hardware Devices ****
> card 0: au8830 [Aureal Vortex au8830], device 0: Aureal Vortex 2 ADB [au8830 adb]
>  Subdevices: 32/32


http://git.alsa-project.org/?p=alsa-kernel.git&a=search&h=HEAD&st=commit&s=au88x0

since you still have 32 playback subdevices

did you have commit 	fb65c2dfe60d38be6b9193d0b85e66e780cd4373

without this patch, the front and rear can be played correct once and
swapped afterwards
on my au8830

speaker-test -c 4 -t wav -Dsurround40:au8830

Are you sure that pulseaudio server is still running ?

if pulseaudio server crash but you still have an application using hw:au8830

it won't respwan because is_card_busy() in commit
d6fb8d10819bebc1cee203de7330cceeafde9fed

udev: check busy status of alsa cards before loading alsa modules and
hence initiating profile probing

Try

speaker-test -c 2 -t wav -D hw:au8830

speaker-test -c 4 -t wav -D hw:au8830

Does you enable power saving or the computer enter suspend/resume cycle ?

https://bugzilla.redhat.com/show_bug.cgi?id=789156

Sound au8830 does not work after standby mode

>> Can you try Taskashi 's patch and reply back to alsa-developer mailing
>> list
>
> The kernel doesn't panic with this patches, but a sound card doesn't work.
>
> The origin problem is that sometimes my sound card stops to play
> anything. I try to reload the module to fix that, but it doesn't help. I
> can provide any info which you need to investigate this problem.
>
> [root at dhcp-10-30-19-46 avagin]# rmmod snd_au8830
> [root at dhcp-10-30-19-46 avagin]# modprobe snd_au8830
> [root at dhcp-10-30-19-46 avagin]# dmesg
> [ 3669.934145] snd_au8830 0000:06:00.0: PCI INT A -> GSI 21 (level, low)
> -> IRQ 21
> [ 3669.934310] Vortex: init....
> [ 3670.251191] bad adb fifo reset!
> [ 3670.251221] bad adb fifo reset!
> [ 3670.251239] bad adb fifo reset!
> [ 3670.251257] bad adb fifo reset!
> [ 3670.251276] bad adb fifo reset!
> [ 3670.251294] bad adb fifo reset!
> [ 3670.251313] bad adb fifo reset!
> [ 3670.251330] bad adb fifo reset!
> [ 3670.251348] bad adb fifo reset!
> [ 3670.251366] bad adb fifo reset!
> [ 3670.251383] bad adb fifo reset!
> [ 3670.251401] bad adb fifo reset!
> [ 3670.251419] bad adb fifo reset!
> [ 3670.251437] bad adb fifo reset!
> [ 3670.251456] bad adb fifo reset!
> [ 3670.251473] bad adb fifo reset!
> [ 3670.251491] bad adb fifo reset!
> [ 3670.251509] bad adb fifo reset!
> [ 3670.251527] bad adb fifo reset!
> [ 3670.251545] bad adb fifo reset!
> [ 3670.251563] bad adb fifo reset!
> [ 3670.251581] bad adb fifo reset!
> [ 3670.251599] bad adb fifo reset!
> [ 3670.251617] bad adb fifo reset!
> [ 3670.251634] bad adb fifo reset!
> [ 3670.251653] bad adb fifo reset!
> [ 3670.251670] bad adb fifo reset!
> [ 3670.251688] bad adb fifo reset!
> [ 3670.251706] bad adb fifo reset!
> [ 3670.251723] bad adb fifo reset!
> [ 3670.251741] bad adb fifo reset!
> [ 3670.251758] bad adb fifo reset!
> [ 3670.251777] bad wt fifo reset (0x000160fc, 0xffffffff)!
> [ 3670.251797] bad wt fifo reset (0x000160f8, 0xffffffff)!
> [ 3670.251814] bad wt fifo reset (0x000160f4, 0xffffffff)!
> [ 3670.251832] bad wt fifo reset (0x000160f0, 0xffffffff)!
> [ 3670.251850] bad wt fifo reset (0x000160ec, 0xffffffff)!
> [ 3670.251868] bad wt fifo reset (0x000160e8, 0xffffffff)!
> [ 3670.251886] bad wt fifo reset (0x000160e4, 0xffffffff)!
> [ 3670.251904] bad wt fifo reset (0x000160e0, 0xffffffff)!
> [ 3670.251922] bad wt fifo reset (0x000160dc, 0xffffffff)!
> [ 3670.251941] bad wt fifo reset (0x000160d8, 0xffffffff)!
> [ 3670.251959] bad wt fifo reset (0x000160d4, 0xffffffff)!
> [ 3670.251977] bad wt fifo reset (0x000160d0, 0xffffffff)!
> [ 3670.251995] bad wt fifo reset (0x000160cc, 0xffffffff)!
> [ 3670.252024] bad wt fifo reset (0x000160c8, 0xffffffff)!
> [ 3670.252043] bad wt fifo reset (0x000160c4, 0xffffffff)!
> [ 3670.252062] bad wt fifo reset (0x000160c0, 0xffffffff)!
> [ 3670.252081] bad wt fifo reset (0x000160bc, 0xffffffff)!
> [ 3670.252100] bad wt fifo reset (0x000160b8, 0xffffffff)!
> [ 3670.252120] bad wt fifo reset (0x000160b4, 0xffffffff)!
> [ 3670.252139] bad wt fifo reset (0x000160b0, 0xffffffff)!
> [ 3670.252157] bad wt fifo reset (0x000160ac, 0xffffffff)!
> [ 3670.252175] bad wt fifo reset (0x000160a8, 0xffffffff)!
> [ 3670.252194] bad wt fifo reset (0x000160a4, 0xffffffff)!
> [ 3670.252212] bad wt fifo reset (0x000160a0, 0xffffffff)!
> [ 3670.252231] bad wt fifo reset (0x0001609c, 0xffffffff)!
> [ 3670.252249] bad wt fifo reset (0x00016098, 0xffffffff)!
> [ 3670.252267] bad wt fifo reset (0x00016094, 0xffffffff)!
> [ 3670.252285] bad wt fifo reset (0x00016090, 0xffffffff)!
> [ 3670.252303] bad wt fifo reset (0x0001608c, 0xffffffff)!
> [ 3670.252322] bad wt fifo reset (0x00016088, 0xffffffff)!
> [ 3670.252342] bad wt fifo reset (0x00016084, 0xffffffff)!
> [ 3670.252361] bad wt fifo reset (0x00016080, 0xffffffff)!
> [ 3670.252380] bad wt fifo reset (0x0001607c, 0xffffffff)!
> [ 3670.252398] bad wt fifo reset (0x00016078, 0xffffffff)!
> [ 3670.252416] bad wt fifo reset (0x00016074, 0xffffffff)!
> [ 3670.252434] bad wt fifo reset (0x00016070, 0xffffffff)!
> [ 3670.252452] bad wt fifo reset (0x0001606c, 0xffffffff)!
> [ 3670.252470] bad wt fifo reset (0x00016068, 0xffffffff)!
> [ 3670.252488] bad wt fifo reset (0x00016064, 0xffffffff)!
> [ 3670.252506] bad wt fifo reset (0x00016060, 0xffffffff)!
> [ 3670.252524] bad wt fifo reset (0x0001605c, 0xffffffff)!
> [ 3670.252542] bad wt fifo reset (0x00016058, 0xffffffff)!
> [ 3670.252560] bad wt fifo reset (0x00016054, 0xffffffff)!
> [ 3670.252578] bad wt fifo reset (0x00016050, 0xffffffff)!
> [ 3670.252596] bad wt fifo reset (0x0001604c, 0xffffffff)!
> [ 3670.252614] bad wt fifo reset (0x00016048, 0xffffffff)!
> [ 3670.252631] bad wt fifo reset (0x00016044, 0xffffffff)!
> [ 3670.252649] bad wt fifo reset (0x00016040, 0xffffffff)!
> [ 3670.252667] bad wt fifo reset (0x0001603c, 0xffffffff)!
> [ 3670.252686] bad wt fifo reset (0x00016038, 0xffffffff)!
> [ 3670.252704] bad wt fifo reset (0x00016034, 0xffffffff)!
> [ 3670.252722] bad wt fifo reset (0x00016030, 0xffffffff)!
> [ 3670.252740] bad wt fifo reset (0x0001602c, 0xffffffff)!
> [ 3670.252758] bad wt fifo reset (0x00016028, 0xffffffff)!
> [ 3670.252776] bad wt fifo reset (0x00016024, 0xffffffff)!
> [ 3670.252794] bad wt fifo reset (0x00016020, 0xffffffff)!
> [ 3670.252813] bad wt fifo reset (0x0001601c, 0xffffffff)!
> [ 3670.252831] bad wt fifo reset (0x00016018, 0xffffffff)!
> [ 3670.252851] bad wt fifo reset (0x00016014, 0xffffffff)!
> [ 3670.252868] bad wt fifo reset (0x00016010, 0xffffffff)!
> [ 3670.252886] bad wt fifo reset (0x0001600c, 0xffffffff)!
> [ 3670.252904] bad wt fifo reset (0x00016008, 0xffffffff)!
> [ 3670.252922] bad wt fifo reset (0x00016004, 0xffffffff)!
> [ 3670.252940] bad wt fifo reset (0x00016000, 0xffffffff)!
> [ 3670.254466] ALSA sound/core/control.c:344 control 3:0:0:Playback PCM
> advanced processing:0 is already present
> [ 3670.254580] done.
> [ 3670.356981] vortex: ac97 address never arrived
> [ 3670.457979] vortex: ac97 address never arrived
> [ 3670.559026] vortex: ac97 address never arrived
> [ 3670.660022] vortex: ac97 address never arrived
> [ 3670.761005] vortex: ac97 address never arrived
> [ 3670.861991] vortex: ac97 address never arrived
> [ 3670.962974] vortex: ac97 address never arrived
> [ 3671.063931] vortex: ac97 address never arrived
> [ 3671.164882] vortex: ac97 address never arrived
> [ 3671.265897] vortex: ac97 address never arrived
> [ 3671.367023] vortex: ac97 address never arrived
> [ 3671.468052] vortex: ac97 address never arrived
> [ 3671.569092] vortex: ac97 address never arrived
> [ 3671.670173] vortex: ac97 address never arrived
> [ 3671.771195] vortex: ac97 address never arrived
> [ 3671.772029] ALSA sound/pci/ac97/ac97_codec.c:2089 AC'97 0 does not
> respond - RESET
> [ 3671.872965] vortex: ac97 address never arrived
> [ 3671.973942] vortex: ac97 address never arrived
> [ 3671.973948] ALSA sound/pci/ac97/ac97_codec.c:2098 AC'97 0 access is
> not valid [0xffffffff], removing mixer.
> [ 3671.974774] vortex: IRQ fatal error
> [ 3671.974780] vortex: IRQ parity error
> [ 3671.974783] vortex: IRQ reg error
> [ 3671.974785] vortex: IRQ fifo error
> [ 3671.974787] vortex: IRQ dma error
> [ 3671.974792] Vortex: shutdown...
> [ 3671.974828] vortex: FATAL: ResManager: resource type 3 exhausted.
> [ 3671.974832] vortex: FATAL: ResManager: resource type 3 exhausted.
> [ 3671.974838] vortex_adb_delroutes: route not found! 0x24a0
> [ 3671.974854] vortex: srcdelWTD: error, lifeboat overflow
> [ 3671.974859] vortex_adb_delroutes: route not found! 0x24a1
> [ 3671.974874] vortex: srcdelWTD: error, lifeboat overflow
> [ 3671.974881] vortex_adb_delroutes: route not found! 0x7e88
> [ 3671.974885] vortex_adb_delroutes: route not found! 0x7f89
> [ 3671.974888] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974891] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974895] vortex_adb_delroutes: route not found! 0x7044
> [ 3671.974899] vortex_adb_delroutes: route not found! 0x7144
> [ 3671.974902] vortex: FATAL: ResManager: resource type 3 exhausted.
> [ 3671.974905] vortex: FATAL: ResManager: resource type 3 exhausted.
> [ 3671.974909] vortex_adb_delroutes: route not found! 0x2492
> [ 3671.974924] vortex: srcdelWTD: error, lifeboat overflow
> [ 3671.974930] vortex_adb_delroutes: route not found! 0x2493
> [ 3671.974945] vortex: srcdelWTD: error, lifeboat overflow
> [ 3671.974949] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974954] vortex_adb_delroutes: route not found! 0x6044
> [ 3671.974959] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974963] vortex_adb_delroutes: route not found! 0x6144
> [ 3671.974968] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974972] vortex_adb_delroutes: route not found! 0x6244
> [ 3671.974977] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974981] vortex_adb_delroutes: route not found! 0x6344
> [ 3671.974985] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974990] vortex_adb_delroutes: route not found! 0x6444
> [ 3671.974994] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.974999] vortex_adb_delroutes: route not found! 0x6544
> [ 3671.975001] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.975001] vortex_adb_delroutes: route not found! 0xa044
> [ 3671.975024] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.975030] vortex_adb_delroutes: route not found! 0xa144
> [ 3671.975035] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.975039] vortex_adb_delroutes: route not found! 0xa244
> [ 3671.975044] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.975050] vortex_adb_delroutes: route not found! 0xa344
> [ 3671.975055] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.975060] vortex_adb_delroutes: route not found! 0xa444
> [ 3671.975066] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.975071] vortex_adb_delroutes: route not found! 0xa544
> [ 3671.975090] vortex: FATAL: ResManager: resource type 2 exhausted.
> [ 3671.975094] vortex: vortex_Vort3D: ERROR: not enough free mixer
> resources.
> [ 3671.975099] bad adb fifo reset!
> [ 3671.975117] bad adb fifo reset!
> [ 3671.975135] bad adb fifo reset!
> [ 3671.975153] bad adb fifo reset!
> [ 3671.975172] bad adb fifo reset!
> [ 3671.975190] bad adb fifo reset!
> [ 3671.975207] bad adb fifo reset!
> [ 3671.975226] bad adb fifo reset!
> [ 3671.975246] bad adb fifo reset!
> [ 3671.975264] bad adb fifo reset!
> [ 3671.975283] bad adb fifo reset!
> [ 3671.975301] bad adb fifo reset!
> [ 3671.975319] bad adb fifo reset!
> [ 3671.975337] bad adb fifo reset!
> [ 3671.975355] bad adb fifo reset!
> [ 3671.975373] bad adb fifo reset!
> [ 3671.975390] bad adb fifo reset!
> [ 3671.975408] bad adb fifo reset!
> [ 3671.975428] bad adb fifo reset!
> [ 3671.975446] bad adb fifo reset!
> [ 3671.975464] bad adb fifo reset!
> [ 3671.975482] bad adb fifo reset!
> [ 3671.975500] bad adb fifo reset!
> [ 3671.975518] bad adb fifo reset!
> [ 3671.975536] bad adb fifo reset!
> [ 3671.975554] bad adb fifo reset!
> [ 3671.975571] bad adb fifo reset!
> [ 3671.975588] bad adb fifo reset!
> [ 3671.975607] bad adb fifo reset!
> [ 3671.975625] bad adb fifo reset!
> [ 3671.975643] bad adb fifo reset!
> [ 3671.975662] bad adb fifo reset!
> [ 3671.975681] bad wt fifo reset (0x000160fc, 0xffffffff)!
> [ 3671.975700] bad wt fifo reset (0x000160f8, 0xffffffff)!
> [ 3671.975718] bad wt fifo reset (0x000160f4, 0xffffffff)!
> [ 3671.975736] bad wt fifo reset (0x000160f0, 0xffffffff)!
> [ 3671.975754] bad wt fifo reset (0x000160ec, 0xffffffff)!
> [ 3671.975772] bad wt fifo reset (0x000160e8, 0xffffffff)!
> [ 3671.975790] bad wt fifo reset (0x000160e4, 0xffffffff)!
> [ 3671.975808] bad wt fifo reset (0x000160e0, 0xffffffff)!
> [ 3671.975826] bad wt fifo reset (0x000160dc, 0xffffffff)!
> [ 3671.975844] bad wt fifo reset (0x000160d8, 0xffffffff)!
> [ 3671.975861] bad wt fifo reset (0x000160d4, 0xffffffff)!
> [ 3671.975879] bad wt fifo reset (0x000160d0, 0xffffffff)!
> [ 3671.975897] bad wt fifo reset (0x000160cc, 0xffffffff)!
> [ 3671.975915] bad wt fifo reset (0x000160c8, 0xffffffff)!
> [ 3671.975933] bad wt fifo reset (0x000160c4, 0xffffffff)!
> [ 3671.975950] bad wt fifo reset (0x000160c0, 0xffffffff)!
> [ 3671.975968] bad wt fifo reset (0x000160bc, 0xffffffff)!
> [ 3671.975987] bad wt fifo reset (0x000160b8, 0xffffffff)!
> [ 3671.976012] bad wt fifo reset (0x000160b4, 0xffffffff)!
> [ 3671.976032] bad wt fifo reset (0x000160b0, 0xffffffff)!
> [ 3671.976051] bad wt fifo reset (0x000160ac, 0xffffffff)!
> [ 3671.976070] bad wt fifo reset (0x000160a8, 0xffffffff)!
> [ 3671.976089] bad wt fifo reset (0x000160a4, 0xffffffff)!
> [ 3671.976107] bad wt fifo reset (0x000160a0, 0xffffffff)!
> [ 3671.976127] bad wt fifo reset (0x0001609c, 0xffffffff)!
> [ 3671.976144] bad wt fifo reset (0x00016098, 0xffffffff)!
> [ 3671.976163] bad wt fifo reset (0x00016094, 0xffffffff)!
> [ 3671.976181] bad wt fifo reset (0x00016090, 0xffffffff)!
> [ 3671.976199] bad wt fifo reset (0x0001608c, 0xffffffff)!
> [ 3671.976217] bad wt fifo reset (0x00016088, 0xffffffff)!
> [ 3671.976236] bad wt fifo reset (0x00016084, 0xffffffff)!
> [ 3671.976255] bad wt fifo reset (0x00016080, 0xffffffff)!
> [ 3671.976274] bad wt fifo reset (0x0001607c, 0xffffffff)!
> [ 3671.976292] bad wt fifo reset (0x00016078, 0xffffffff)!
> [ 3671.976310] bad wt fifo reset (0x00016074, 0xffffffff)!
> [ 3671.976328] bad wt fifo reset (0x00016070, 0xffffffff)!
> [ 3671.976346] bad wt fifo reset (0x0001606c, 0xffffffff)!
> [ 3671.976364] bad wt fifo reset (0x00016068, 0xffffffff)!
> [ 3671.976382] bad wt fifo reset (0x00016064, 0xffffffff)!
> [ 3671.976400] bad wt fifo reset (0x00016060, 0xffffffff)!
> [ 3671.976418] bad wt fifo reset (0x0001605c, 0xffffffff)!
> [ 3671.976436] bad wt fifo reset (0x00016058, 0xffffffff)!
> [ 3671.976454] bad wt fifo reset (0x00016054, 0xffffffff)!
> [ 3671.976472] bad wt fifo reset (0x00016050, 0xffffffff)!
> [ 3671.976490] bad wt fifo reset (0x0001604c, 0xffffffff)!
> [ 3671.976508] bad wt fifo reset (0x00016048, 0xffffffff)!
> [ 3671.976526] bad wt fifo reset (0x00016044, 0xffffffff)!
> [ 3671.976546] bad wt fifo reset (0x00016040, 0xffffffff)!
> [ 3671.976564] bad wt fifo reset (0x0001603c, 0xffffffff)!
> [ 3671.976582] bad wt fifo reset (0x00016038, 0xffffffff)!
> [ 3671.976600] bad wt fifo reset (0x00016034, 0xffffffff)!
> [ 3671.976618] bad wt fifo reset (0x00016030, 0xffffffff)!
> [ 3671.976636] bad wt fifo reset (0x0001602c, 0xffffffff)!
> [ 3671.976654] bad wt fifo reset (0x00016028, 0xffffffff)!
> [ 3671.976672] bad wt fifo reset (0x00016024, 0xffffffff)!
> [ 3671.976690] bad wt fifo reset (0x00016020, 0xffffffff)!
> [ 3671.976708] bad wt fifo reset (0x0001601c, 0xffffffff)!
> [ 3671.976727] bad wt fifo reset (0x00016018, 0xffffffff)!
> [ 3671.976745] bad wt fifo reset (0x00016014, 0xffffffff)!
> [ 3671.976763] bad wt fifo reset (0x00016010, 0xffffffff)!
> [ 3671.976781] bad wt fifo reset (0x0001600c, 0xffffffff)!
> [ 3671.976799] bad wt fifo reset (0x00016008, 0xffffffff)!
> [ 3671.976817] bad wt fifo reset (0x00016004, 0xffffffff)!
> [ 3671.976835] bad wt fifo reset (0x00016000, 0xffffffff)!
> [ 3671.983010] done.
> [ 3671.983097] snd_au8830 0000:06:00.0: PCI INT A disabled
> [ 3671.983110] snd_au8830: probe of 0000:06:00.0 failed with error -5
>
>
> On 02/28/2012 12:36 PM, Raymond Yau wrote:
>>
>>
>> At Tue, 28 Feb 2012 11:04:07 +0800,
>> Raymond Yau wrote:
>>> 2012/1/16, Takashi Iwai<tiwai at suse.de>:
>>>> At Fri, 13 Jan 2012 18:47:45 +0800,
>>>> Raymond Yau wrote:
>>>>> [PATCH - ALSA 1/2] Au88x0 - Support 4 channels playback when AC97
>>>>> codecs has SDAC bit
>>>>>
>>>>> - Check SDAC bit of AC97 codec for supporting 4 channels playback.
>>>>>
>>>>>
>>>>> [PATCH - ALSA 2/2] Au88x0 - Reduce the number of playback subdevices
>>>>> of au8830 from 32 to 16
>>>>>
>>>>> - The maximum number of playback streams depend on the number of sample
>>>>>    rate conveters (16) and the number of DMA channels (32).
>>>> Applied both patches.  Thanks.
>>>>
>>>>
>>> Does alsa require the driver to provide private_free for ac97_bus and
>>> ac97 ?
>> No, and it must be irrelevant.
>>
>>> There is a bug report
>>>
>>> snd_vortex_dev_free() BUG: unable to handle kernel NULL pointer
>>>
>>> https://bugzilla.redhat.com/show_bug.cgi?id=788978
>>>
>>> It seem that snd_ac97_bus() fail
>> Or something else.  au88x0 is built in a strange way, sourcing all
>> *.c files into one, so we can't see the exact point.
>>
>> In anyway, the Oops isn't because the probing fails but due to
>> concurrent accesses while removing irq, etc.
>> Maybe a patch like below can help.
>>

when there is more than one sound card and I need to specify index to
all sound cards
in order to let them loaded in the specified order especially when I
have my usb webcam plugged

just specify index=0 in one sound card is not enough and
some of them may failed at snd_card_create() without any error mesasge
in system log



>>
>>> However  I cannot reproduce the bug in 2.6 kernel,
>>>
>>> Do 3.x kernel require mixer created after pcm devices ?
>> No.
>>
>>
>> Takashi
>>
>>> :Call Trace:
>>> : [<ffffffff810dec3d>] __free_irq+0x17d/0x220
>>> : [<ffffffff810dee65>] free_irq+0x55/0xd0
>>> : [<ffffffffa04e2d64>] snd_vortex_dev_free+0x44/0x80 [snd_au8830]
>>> : [<ffffffffa01c0aa1>] snd_device_free+0x71/0x170 [snd]
>>> : [<ffffffffa01c0f51>] snd_device_free_all+0x61/0xb0 [snd]
>>> : [<ffffffffa01b9908>] snd_card_do_free+0x58/0x140 [snd]
>>> : [<ffffffffa01badf3>] snd_card_free+0xa3/0xc0 [snd]
>>> : [<ffffffffa0261b8f>] ? snd_ac97_bus+0xaf/0x130 [snd_ac97_codec]
>>> : [<ffffffffa04e6a9f>] snd_vortex_probe+0x1c40/0x1d09 [snd_au8830]
>>> : [<ffffffff812db37c>] local_pci_probe+0x5c/0xd0
>>> : [<ffffffff812dcc19>] pci_device_probe+0x109/0x130
>>> : [<ffffffff813932cc>] driver_probe_device+0x9c/0x300
>>> : [<ffffffff813935db>] __driver_attach+0xab/0xb0
>>> : [<ffffffff81393530>] ? driver_probe_device+0x300/0x300
>>> : [<ffffffff81393530>] ? driver_probe_device+0x300/0x300
>>> : [<ffffffff8139214c>] bus_for_each_dev+0x5c/0x90
>>> : [<ffffffff81392ede>] driver_attach+0x1e/0x20
>>> : [<ffffffff81392ae0>] bus_add_driver+0x1b0/0x2a0
>>> : [<ffffffffa04ed000>] ? 0xffffffffa04ecfff
>>> : [<ffffffff81393b36>] driver_register+0x76/0x140
>>> : [<ffffffff815e554d>] ? notifier_call_chain+0x4d/0x70
>>> : [<ffffffffa04ed000>] ? 0xffffffffa04ecfff
>>> : [<ffffffff812dc8f6>] __pci_register_driver+0x56/0xd0
>>> : [<ffffffff81041673>] ? set_memory_nx+0x43/0x50
>>> : [<ffffffffa04ed01e>] alsa_card_vortex_init+0x1e/0x1000 [snd_au8830]
>>> : [<ffffffff81002042>] do_one_initcall+0x42/0x180
>>> : [<ffffffff810ac970>] sys_init_module+0xc0/0x230
>>> : [<ffffffff815e9782>] system_call_fastpath+0x16/0x1b
>> ---
>> diff --git a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c
>> index f13ad53..506d2fc 100644
>> --- a/sound/pci/au88x0/au88x0.c
>> +++ b/sound/pci/au88x0/au88x0.c
>> @@ -123,10 +123,10 @@ static int snd_vortex_dev_free(struct snd_device
>> *device)
>>   {
>>   	vortex_t *vortex = device->device_data;
>>
>> +	free_irq(vortex->irq, vortex);
>>   	vortex_gameport_unregister(vortex);
>>   	vortex_core_shutdown(vortex);
>>   	// Take down PCI interface.
>> -	free_irq(vortex->irq, vortex);
>>   	iounmap(vortex->mmio);
>>   	pci_release_regions(vortex->pci_dev);
>>   	pci_disable_device(vortex->pci_dev);
>> diff --git a/sound/pci/au88x0/au88x0_core.c
>> b/sound/pci/au88x0/au88x0_core.c
>> index 1181c5e..525f881 100644
>> --- a/sound/pci/au88x0/au88x0_core.c
>> +++ b/sound/pci/au88x0/au88x0_core.c
>> @@ -2477,7 +2477,7 @@ static irqreturn_t vortex_interrupt(int irq, void
>> *dev_id)
>>   		hwread(vortex->mmio, VORTEX_IRQ_STAT);
>>   		handled = 1;
>>   	}
>> -	if (source&  IRQ_MIDI) {
>> +	if ((source&  IRQ_MIDI)&&  vortex->rmidi) {
>>   		snd_mpu401_uart_interrupt(vortex->irq,
>>   					  vortex->rmidi->private_data);
>>   		handled = 1;
>
>


More information about the Alsa-devel mailing list