[r200] Lockups...

Vladimir Dergachev volodya at mindspring.com
Mon Mar 14 19:12:13 PST 2005


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


More information about the xorg mailing list