PCI64 Terminal (DMA) Block w/ Zero Length
wflawry <[email protected]> Mon, 24 Feb 2003 11:37:32 -0700
| Newsgroups | gmane.network.myrinet.general |
|---|---|
| Message-ID | <[email protected]> |
Hi All,
Does anyone have actual experience using DMA blocks with zero length?
Looking at the PCI64 Programmer's Documentation, the DMA
engine/controller does "nothing" for a non-terminal DMA block with zero
length except the "DMA advances to the next block." Is this behavior
well defined? Can one depend on the engine/controller setting the
terminal bit on such a block before advancing? Or is the terminal bit
always not set since there was no actual DMA for that block?
To shed some light, here is the specific scenario I am imagining: The
DMA engine has "gone to sleep" on a terminal block ("A") for some
channel; to make it simple here, all other DMA channels are inactive and
remain so. In the following order, the MCP a) changes block A to have
zero length, b) updates the address-part of A->next to point to a new
chain of previously set up blocks ending in a terminal block, c) clears
the terminal bit in A->next, d) reactivates the DMA engine. On the
surface, this seems like a reasonable sequence. Is it?
Bill
--
William Lawry, Dept. 9223 [email protected]
Scalable Computing Systems
Sandia National Laboratories
(505) 284-4206