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

Reply via email to