Re: Reproducable crash under 2.1.86

Andrea Arcangeli (arcangeli@mbox.queen.it)
Wed, 18 Feb 1998 01:46:29 +0100 (CET)


On Tue, 17 Feb 1998, Tuomo Pyhala wrote:

>BTW. Which soundcard do you have, i'm also somewhat suspicious about GUS

You have still one hope. My patch only fixed code for AWE32 and GUS use
the ad1848 driver that does other disable/enable_dma() sequence. Try to
apply this patch over the last two one on 2.1.86.

Andrea[s] Arcangeli

--- /usr/src/linux/drivers/sound/ad1848.c Wed Jan 7 04:32:46 1998
+++ linux/drivers/sound/ad1848.c Wed Feb 18 01:43:33 1998
@@ -24,6 +24,11 @@
/*
* Thomas Sailer : ioctl code reworked (vmalloc/vfree removed)
*/
+/*
+ * Removed fast disable_dma()/enable_dma() cycles in order to avoid
+ * kernel locks on some motherboards.
+ * Andrea Arcangeli <arcangeli@mbox.queen.it>
+ */

#include <linux/config.h>
#include <linux/module.h>
@@ -1196,14 +1201,10 @@
{
int tmout;

- disable_dma(audio_devs[dev]->dmap_in->dma);
-
for (tmout = 0; tmout < 100000; tmout++)
if (ad_read(devc, 11) & 0x10)
break;
ad_write(devc, 9, ad_read(devc, 9) & ~0x02); /* Stop capture */
-
- enable_dma(audio_devs[dev]->dmap_in->dma);
devc->audio_mode &= ~PCM_ENABLE_INPUT;
}

@@ -1230,14 +1231,10 @@
{
int tmout;

- disable_dma(audio_devs[dev]->dmap_out->dma);
-
for (tmout = 0; tmout < 100000; tmout++)
if (ad_read(devc, 11) & 0x10)
break;
ad_write(devc, 9, ad_read(devc, 9) & ~0x01); /* Stop playback */
-
- enable_dma(audio_devs[dev]->dmap_out->dma);
devc->audio_mode &= ~PCM_ENABLE_OUTPUT;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu