From owner-freebsd-multimedia Tue Mar 21 17:34:29 2000 Delivered-To: freebsd-multimedia@freebsd.org Received: from oberon.dnai.com (oberon.dnai.com [207.181.194.97]) by hub.freebsd.org (Postfix) with ESMTP id A290137BA61 for ; Tue, 21 Mar 2000 17:34:25 -0800 (PST) (envelope-from kmarx@bigshed.com) Received: from bigshed.com (dnai-216-15-97-193.cust.dnai.com [216.15.97.193]) by oberon.dnai.com (8.9.3/8.9.3) with ESMTP id RAA17662; Tue, 21 Mar 2000 17:34:24 -0800 (PST) Message-ID: <38D823E1.87FDA291@bigshed.com> Date: Tue, 21 Mar 2000 17:37:37 -0800 From: Ken Marx X-Mailer: Mozilla 4.5 [en] (X11; I; FreeBSD 2.2.8-RELEASE i386) X-Accept-Language: en MIME-Version: 1.0 To: freebsd-multimedia@FreeBSD.ORG Cc: Ken Marx Subject: Lost interrupts in snd0 ? Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-multimedia@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Hi, I'm seeing intermitent long (> 10 sec) pauses in the snd (voxware) driver, that look to be possibly due to lost interrupts. This is on 3.2 and 3.4 hosts, AMD K6-III and K7, respectively. Both use a Creative AWE64 isa soundcard. It is easy to reproduce, but not strictly deterministic. I can make it happen by using waveplay on a .wav file, or also in my own code that calls a third party package. It occurs when i386/isa/dmabuf.c's dma_sync() calls DO_SLEEP1(). Usually the sleep is woken up via interrupt in DMAbuf_outputintr(), but on some occasions it times out after about 10 (!) seconds. For waveplay it seems to happen when close() is called on the /dev/dsp device. For my app, I can see the package invoking the sync via a SNDCTL_DSP_SYNC ioctl. (To reproduce, try % repeat 200 waveplay some_short_file.wav. That usually produces the problem 2-10 or more times.) Using truss, ktrace and a bunch of hacky debug in the driver code, I can't see anything significantly different between the cases where everything is fine and those where the timeout occurs. I have pretty much convinced myself that none of the code there actually sees an interrupt and mistakenly ignores it. I haven't put a scope on the board or anything, so I don't know if it truly is/isn't trying to intuerrupt. Just to make matters more confusing, a friend in the UK is also running 3.2 on an AMDK6-III, same soundcard, and can't reproduce this problem. Can anyone please help? I'm pretty week on how the sound stuff is supposed to work, and am kind of running low on ideas? Is the AWE64 known for this kind of behavior? (If so, any better alternatives that will work with 3.x voxware driver?) Could it be something with the motherboard, dma controller, bus? I'm really grasping at straws here... Any thoughts? Thanks much for any assistance! k. -- Ken Marx, kmarx@bigshed.com It's a tough road to hoe, but we have to leverage our critical resources and determine the right amount of effort with respect to the methodology assets. - http://cgi.bigshed.com/~kmarx/cgi-bin/speak.cgi To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-multimedia" in the body of the message