[comp.sys.ibm.pc] question for AT hardware gurus

buck@siswat.UUCP (A. Lester Buck) (12/20/88)

I have identified what I think is a hardware bug in my AT clone
and I would like to know if my conclusion makes sense.

My hardware is a 6 MHz AT clone pushed to 8 MHz with a new crystal
(installed by the manufacturer), age about 3 years.
I have been hacking on a Unix driver that does block I/O operations.
Everything works fine (but slow) using programmed I/O on a byte by
byte basis.  I turned on the DMA code and DMA input works fine.  But
certain DMA output would just hang and never generate the interrupt
on completion.  After tearing my hair for many hours, the exact symptom
is that DMA output from memory (RAM or ROM) on the system board
(lower 1 MByte) works fine, but any DMA output from RAM above
1 MByte (which is on a double decker expansion card) just hangs.
(I even decompiled and substituted the kernel dma routines so
I could monitor every byte sent to the hardware.)
Unix, of course, works just fine using the entire memory.
All RAM chips are 150ns, with 64K chips on the motherboard and
256K chips on the expansion card.  This behavior occurs with both
single byte and demand mode transfers.

Assume the expansion card is just too slow for the DMA
output (memory read).  Is this because memory needs to be
faster to do DMA output (memory read) than DMA input (memory write)?
Are 150ns chips fast enough in general for an 8 MHz AT bus?
Maybe I need a new (fast) bare expansion board and I can transfer the
chips to it (3.5 MBytes worth).  If I (yuk!) switch back to a
6 MHz crystal, would that have much chance of fixing things?
Does DMA push the memory subsystem more than normal operations?

Any other ideas what might be causing such behavior?

Thanks alot,

-- 
A. Lester Buck		...!uhnix1!moray!siswat!buck