[[[ 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

Reply via email to