Felix Kühling wrote:
On 07 Dec 2002 02:07:03 +0100
Michel Dänzer <[EMAIL PROTECTED]> wrote:


On Die, 2002-12-03 at 23:17, Felix Kühling wrote:
I just tried glaxium myself. And it freezes the Xserver here too.
However, I don't have to move the window :-/ it always freezes about 3
seconds after I enter the game. I also tried it without TCL. Then it
seemed to run fine (at least a few seconds longer than usual) and locked
up as soon as I pushed a button.

I also get the error message about IrqWait. That probably means that the
hardware stops generating interrupts and is in some messed-up state.
Would it be helpful for a developer with Radeon specs to see the last
DMA buffer that was submitted to the card before it locked up?
Unfortunately, the specs are missing a section 'DMA command streams
which cause lockups'. ;)


I could dump DMA buffers to a file and insert a radeonWaitForIdle right after
submitting (and dumping) DMA buffers, so I'm sure I really get the last
one *before* the card locks up.
This sounds like a good plan for you to debug this though.

I think I tracked it down to a race condition. If state is emitted while
the card is still processing vertices this could be a potential problem,
especially if things like texture offsets and sizes are changed. As a
workaround I emit a RADEON_WAIT_3D into the cmd buffer before emitting
state in radeon_emit_state_list. A patch is attached.

This is really just a workaround. A proper fix would have to be in the
kernel since a malicious client could still exploit the race condition.
I think it's misleading to label this as a race - you don't know enough about what's happening inside the card to call it one thing or another.

What it is is a workaround for a unspecified failure that may be a hardware bug, or may be some unknown bug in the way we put together command streams, or in fact might be any one of a zillion other things.

I'd be interested to see if you can narrow down the circumstances in which it's necessary to emit this as it looks fairly heavy handed -- effectively disables all state pipelining in the hardware. Graphics cards not only know how to (normally) avoid statechanges scribbling on in-process vertices, they know how to handle statechanges without the overhead of a full pipeline flush.

It would be interesting to try and figure out which state changes are responsible for the lockups you're seeing...

Keith



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to