Sound Oops (2.1.130, PAS16, SB mode)

Paul Gortmaker (paul@rasty.ph.unimelb.edu.au)
Tue, 1 Dec 1998 04:18:35 +1100 (EST)


Sound dies a horrible death when trying to use the /dev/audio1 provided by
the 8 bit soundblaster emulation of the PAS16. IF you feed it a big enough
file it will explode with a divide error & kill the IRQ handler. Giving
it a smaller file results in lots of:

Sound: Error. Audio interrupt (0) after freeing buffers.

(I counted 16 of these per SB interrupt, and still no audible output)

In v2.0 I can send a .au file to dev/audio0 (PAS16) and /dev/audio1 (8 bit
SB provided by the PAS16) and hear them both at the same time.

The following patch stops the oops/panic but obviously doesn't fix the
real problem. The /dev/audio0 of the PAS16 works fine btw. (2.1.130, UP,
driver compiled in, modules disabled)

Paul.

--- linux-21130/drivers/sound/dmabuf.c Sat Nov 21 17:44:50 1998
+++ linux/drivers/sound/dmabuf.c Sun Nov 29 15:19:43 1998
@@ -1022,7 +1022,13 @@
enable_dma(dmap->dma);
release_dma_lock(f);

- pos = pos / dmap->fragment_size; /* Actual qhead */
+ if (dmap->fragment_size == 0) {
+ restore_flags(flags);
+ printk(KERN_ERR "dmabuf.c: zero size frag! Sound card on fire?\n");
+ return;
+ } else
+ pos = pos / dmap->fragment_size; /* Actual qhead */
+
if (pos < 0 || pos >= dmap->nbufs)
pos = 0;
n = 0;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/