*BSD News Article 26057


Return to BSD News archive

Xref: sserve comp.os.386bsd.development:1686 comp.os.linux.development:4589
Newsgroups: comp.os.386bsd.development,comp.os.linux.development
Path: sserve!newshost.anu.edu.au!munnari.oz.au!sgiblab!sgigate.sgi.com!olivea!hal.com!decwrl!netcomsv!netcom.com!jmonroy
From: jmonroy@netcom.com (Jesus Monroy Jr)
Subject: The ###^%$ DMA problem from the EISA side.
Message-ID: <jmonroyCJo4rD.Gs1@netcom.com>
Followup-To:  comp.os.386bsd.development
Keywords: DMA EISA ISA overrun FDC QIC-40/80
Organization: NETCOM On-line Communication Services (408 241-9760 guest)
Date: Sat, 15 Jan 1994 11:18:48 GMT
Lines: 61

	PLEASE NOTE the followup line before you fire off
	another... you moron message.

===================================================================
 
                DRAM Refresh from the EISA side.
 
        This message was sent to me on the current DMA discussion.
        Your input is most welcome.
 
======================================================================
Newsgroups: comp.os.386bsd.development
Date: Wed, 12 Jan 94 18:34:33 -0800
 
I've completely lost the point of what this thread is about.  What is the
real problem that needs to be solved that is causing the debate about how
DRAM refresh is handled on an ISA PC and DMA channel 0?
 
There is a set of "problems" having to do with ISA bus masters and ISA
compatible DMA devices that can cause problems with DRAM refresh.  Is that
the orriginal point of this thread?  EISA systems (at least those using the
TI TACT 84544 EISA Peripheral Control Unit) have "solved" a set of problems
in this area.
 
In ISA systems, the system needs to have refresh cycles generated about every
15 microseconds.  This is a shared responcibility between the system's 
Interval Timer 1, Counter 1 and and 16 bit ISA bus mastering devices.
Any 16 bit bus mastering device is responcible for generating the REFRESH*
signal every 15 microseconds if they are in control of the bus for longer
than 15 usec.  Sadly, not all such devices followed the ISA spec. in this
regards.
 
EISA improves upon this in a couple of manners:
 
1) The maximum refresh cycle hold off interval is now 75 usec. maximum.
2) EISA bus master (not to be confused with EISA's support of a compatibility
   mode ISA bus master & DMA modes) devices can be pre-empted by the DRAM
   refresh cycles, no matter how long they hold the bus.
3) If an ISA compatibility bus mastering device doesn't allow a refresh 
   every 15 usec.,
   upto four occurances are "remembered" by the EPCU.  When the bus is finally
   released, it will "burst" a series of DRAM refresh cycles equal to the
   number missed (upto 4) while the ISA bus master failed to generate them.
 
Again, speculating on what the root cause of these thread's debate is, it
sounds as if a data corruption problem caused by DRAM refresh failure may
be occuring due to an improperly implemented ISA board not generating the
REFRESH* signal.  I would speculate that perhaps this wasn't noticed on DOS
because DMA was not used to communicate with the board, programmed I/O was.
So many of these improperly implemented ISA boards exist that the authors of
the EISA specifications worked hard to "work around" this problem so that such
boards would be more likely to work in an EISA system they they did in an ISA
system.
 
 

-- 
Jesus Monroy Jr                                          jmonroy@netcom.com
Zebra Research
/386BSD/device-drivers /fd /qic /clock /documentation
___________________________________________________________________________