Date: Wed, 19 Apr 2006 17:03:00 -0700 From: George Hartzell <hartzell@alerce.com> To: Ariff Abdullah <ariff@FreeBSD.org> Cc: freebsd-multimedia@FreeBSD.org Subject: Re: Odd code in sound/pcm/channel.c, help with PR? Message-ID: <17478.53172.814200.467979@satchel.alerce.com> In-Reply-To: <20060420064700.48c63e27.ariff@FreeBSD.org> References: <17477.44637.316536.583639@satchel.alerce.com> <20060420064700.48c63e27.ariff@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ariff Abdullah writes: > On Tue, 18 Apr 2006 20:28:29 -0700 > George Hartzell <hartzell@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. I think that you need to get a bigger stick. I did a buildkernel/installkernel and still no sound when I cat to /dev/dsp0.0 and I still get the timeouts. Thanks for the help! g.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?17478.53172.814200.467979>