Odd code in sound/pcm/channel.c, help with PR?

Ariff Abdullah ariff at FreeBSD.org
Wed Apr 19 22:47:11 UTC 2006


On Tue, 18 Apr 2006 20:28:29 -0700
George Hartzell <hartzell at alerce.com> wrote:
> 
> I'm trying to get some traction and get sound to work on my ASUS
> A8V-MX.  I keep ending up with
> 
>   pcm0:play:0::dsp0.0: play interrupt timeout, channel dead
> 
> on my console.
> 
> I've filed a PR with more details:
> 
>   http://www.freebsd.org/cgi/query-pr.cgi?pr=95949
> 
> I've been looking around, trying to understand what might be going
> on. I came across the following piece of code in
> /usr/src/sys/device/sound/pcm/channel.com, around line 320
> 
> timeout = (hz * sndbuf_getblksz(bs)) / (sndbuf_getspd(bs) *
> sndbuf_getbps(bs)); if (timeout < 1)
>         timeout = 1;
> timeout = 1;
> ret = chn_sleep(c, "pcmwr", timeout);
> if (ret == EWOULDBLOCK) {
>         count -= timeout;
>         ret = 0;
> } else if (ret == 0)
>         count = hz;
> 
> It's funny that it goes to the trouble to figure out a timeout value
> then seems to unconditionally set it to 1.
> 
It is indeed, funny :)

> Removing that line doesn't seem to fix my problem, but it still
> seems weird.
> 
> 
> And, while I've got your attention, can anyone suggest where I might
> look to understand why the buffer doesn't seem to be being emptied?
> 
It's because the hardware DMA pointer is being lazy and need a good
spank on its face.

Replace your sys/dev/sound/pci/via8233.c with:

  http://people.freebsd.org/~ariff/test/via8233.c

As usual, recompile your kernel, or just the modules. If this doesn't
work, I still have few more other tricks.

Coincidently, I'm currently investigating DMA incoherency within few
drivers, notably this and few others.


--
Ariff Abdullah
FreeBSD
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-multimedia/attachments/20060419/ac6bfd6b/attachment.pgp


More information about the freebsd-multimedia mailing list