Re: i810_audio driver v0.19 still freezes machine

Andris Pavenis
2002-01-11T18:26:17Z

On Friday 11 January 2002 17:54, Doug Ledford wrote:
> Andris Pavenis wrote:
> > Tried. I haven't been able to freeze box after some not very long
> > torturing with artsd, but there is another new trouble:
> >
> > For test I'm letting artsd to play some WAV file and after that give some
> > time for it to close /dev/dsp. After some times there is no more sound
> > and I'm getting a message that /dev/dsp is busy when trying to restart
> > artsd. Anyway I can reload i810_audio driver and restart artsd to get
> > sound working again. 'fuser /dev/dsp' also doesn't show that it is opened
>
> Actually, as a couple people have pointed out to me, the version on my site
> was somehow a .19 version. I've placed the real .20 on my site as of a few
> minutes ago, so please try with it (and the real .20 should solve the
> problem you are related Andris in that it won't allow the driver to accept
> signals during close, which is why /dev/dsp would quit working for you).

Thanks

Earlier today I didn't take v0.19 today from You're page, but patched
previous v0.19 with Your patch posted to linux-kernel mailing list yesterday
evening.

Now about v0.20. Seems that it survives following torture:

- setup artsd to close /dev/dsp after 1 second idle

- running something like
while true; do artsplay beep.wav; sleep 3s; done

Kernel version 2.4.18-pre3

Only one purely cosmetical patch to avoid unnecessary warning from gcc
(I used gcc-2.95.3):

--- i810_audio.c-0.20 Fri Jan 11 15:48:32 2002
+++ i810_audio.c Fri Jan 11 19:54:05 2002
@@ -1739,7 +1739,7 @@
#endif
if (dmabuf->enable != DAC_RUNNING || file->f_flags & O_NONBLOCK)
return 0;
- if(val = drain_dac(state, 1))
+ if((val = drain_dac(state, 1)))
return val;
dmabuf->total_bytes = 0;
return 0;

Andris