Messages in this thread Patch in this message | | | Date | Fri, 14 Aug 1998 19:07:23 +0200 (CEST) | From | Andrea Arcangeli <> | Subject | Re: TX-PRO chipset (Was: !!Warning!! UDMA and Fujitsu |
| |
On 14 Aug 1998, Vadim Gouterman wrote:
>I have Epox EP-51MVP3E-M motherboard (VIA chipset) and AMD K2-2/300. >Symptoms are: general instability, core dumps, crashes, etc. The
If you are using dma it' s normal that the Epox lock. It' s buggy hardware. Here my two old patches against 2.1.86 that fixed the sound drivers for my rejected Epox motherboard. I just got one recent report (2.1.11x) of success of these patches from one guy that was suffering of the Epox lock using the sound drivers.
--- /usr/src/linux/drivers/sound/dmabuf.c Tue Jan 27 19:30:52 1998 +++ linux/drivers/sound/dmabuf.c Tue Feb 17 16:33:47 1998 @@ -10,6 +10,13 @@ * Version 2 (June 1991). See the "COPYING" file distributed with this software * for more info. */ + +/* + * 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> #define BE_CONSERVATIVE @@ -1128,9 +1135,7 @@ { int chan = dmap->dma, pos, n; clear_dma_ff(chan); - disable_dma(dmap->dma); pos = dmap->bytes_in_use - get_dma_residue(chan); - enable_dma(dmap->dma); pos = pos / dmap->fragment_size; /* Actual qhead */ if (pos < 0 || pos >= dmap->nbufs) pos = 0; @@ -1249,9 +1254,7 @@ int chan = dmap->dma, pos, n; clear_dma_ff(chan); - disable_dma(dmap->dma); pos = dmap->bytes_in_use - get_dma_residue(chan); - enable_dma(dmap->dma); pos = pos / dmap->fragment_size; /* Actual qhead */ --- /usr/src/linux/drivers/sound/dmabuf.c Tue Feb 17 16:55:08 1998 +++ linux/drivers/sound/dmabuf.c Tue Feb 17 19:19:17 1998 @@ -659,7 +659,6 @@ { int chan = dmap->dma; clear_dma_ff(chan); - disable_dma(dmap->dma); pos = get_dma_residue(chan); pos = dmap->bytes_in_use - pos; @@ -682,7 +681,6 @@ pos = 0; if (pos >= dmap->bytes_in_use) pos = 0; - enable_dma(dmap->dma); } restore_flags(flags); /* printk( "%04x ", pos); */ if (pos < 0 || pos >= dmap->nbufs)
>only solution in my case was to disable external cache and enable only >16M of RAM.
I was not able to fix the locks without change the software at that time.
Andrea[s] Arcangeli
- 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.altern.org/andrebalsa/doc/lkml-faq.html
| |