Created attachment 17831 [details]
The end of kern.log that seems to happen just before it hangs
I compiled mach64 drm module from git, libopengl and the dri xorg module (still mach64).
After playing a little with an opengl app, the screen goes black and nothing responds. The machine seems not completely hang, but X prevents any further action but rebooting.
The kernel log ends with the following message:
Jul 23 07:55:04 chibchas kernel: [ 451.014390] [drm:mach64_freelist_get] *ERROR* timeout waiting for buffers: ring head_addr: 0x50000e80 head: 928 tail: 1440
Jul 23 07:55:04 chibchas kernel: [ 451.014400] [drm:mach64_dma_dispatch_vertex] *ERROR* couldn't get buffer
My dist/level is an unstable debian freshly dist-upgraded.
I use EXA.
The card is a "ATI Technologies Inc Rage Mobility P/M AGP 2x (rev 64)"
I'll try to give a X log.
I said screen goes black... I was wrong, it just freezes and I still see the last image of my game.
It happens even using XAA.
There is nothing special at the end of the X log (it seems to really hang and never realize it).
I located the failing condition in shared-core/mach64_dma.c:1652, from what I understand, the code waits up to 1 second to acquire a free message structure from a ring. But in my case this sometimes fails.
Then I tried to give a true value to MACH64_EXTRA_CHECKING in shared-core/mach64_drv.h, and since then, I was unable to make it freeze again.
Which looks quite insane since this flag is intended to detect problems and when it detects one, at least prints a message. But there is no message !
So this sounds like it fixes by "adding a delay" or by side effects !