when multiple DMA clients are connected to to a single DMA server, data-dependencies between the channels can introduce head-of-line blocking if read/write requests are issued speculatively (before a full write burst has been accumulated or read-buffer capacity has been vacated).  The initial implementation of the DMAServer used levelFIFOs internally to guard against this behavior.  With the removal of this functionality, the example/memcpy was deadlocking precisely due to this problem.  I have reintroduced the use of  levelfifos in mkDMAReadBuffer and mkDMAWriteBuffer.  If the programmer decides to use the BsimDMAServer without the read/write buffers, they do so at their own peril.