lkml.org 
[lkml]   [1998]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 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

\
 
 \ /
  Last update: 2005-03-22 13:44    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site