Leif, As I was restructuring part of the DMA submission code I realized that there is a fault in the NO_BATCH_DISPATCH path. You don't guarantee that the card doesn't stop at any momment because you've chosen not check if a change in the last buffer continuation flag is sucessful or not, and wait for idle & restart if not. This means that in _every_ wait loop we have to account for possibility of the card to stop in result of that (this include e.g., _wait_ring, but many others).
I tried to make quick fix to this, but it didn't solve anything (I can reproduce the bug everytime I want by runing TO - a Mod to UT), so I stopped trying to concentrate on what I was doing before. I just wanted to tell you because you're probably looking at that too. Regarding the restructuring I'm doing, is basically a simplification to bring more closely what I had previously in mind. I'm making the RING_* macros to commit the buffers immediately, and the DMA_* macros to fire up one buffer (also commiting immediately). After seeing this problem I'm not sure if it won't be better to wait for idle when commiting a buffer to ring too late, because this would allow to assume that the card is either running or finished, and would lessen the chances of bugs. This is gonna take some days, but I'll come back with a diff for you to comment as soon as I have it running minimally. Regards, Jos� Fonseca _______________________________________________________________ Don't miss the 2002 Sprint PCS Application Developer's Conference August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel
