[[[ I am also cross posting to xorg mailing list.
The e-mail below discusses a RADEONWaitForIdleMMIO() call I put in radeon_mergedfb.c before OUTREGP() calls in cursor functions.
The call was needed as OUTREGP() calls INREG() implicitly.
However, it turns out that this call breaks on SMP systems with DRI enabled.
]]]
On Mon, 14 Mar 2005, Michel [ISO-8859-1] Dänzer wrote:
On Mon, 2005-03-14 at 18:05 -0500, Vladimir Dergachev wrote:
I am unsure of how to fix it though, as the call *is* needed, we should not be reading from registers with engine busy.
Something may be needed, but probably not a wait for idle (which may never succeed on an SMP system). Other things you could try:
* Keep track of the hardware state in the driver, so you don't have to read the registers all the time.
This is probably the easiest. I am unlikely to find time to work on this
until the following weekend (have a conference during this one), so I am proposing to comment out the WaitForIdle call in X.org CVS, with appropriate comment and put the fix in later.
Of course, if someone beats me to it, I would not complain :)
Adam - thank you for patient testing :))
best
Vladimir Dergachev
* Read/write the registers via MM_INDEX/MM_DATA instead of directly.
I'm curious if either of this helps.
-- Earthling Michel Dänzer | Debian (powerpc), X and DRI developer Libre software enthusiast | http://svcs.affero.net/rm.php?r=daenzer