Hi,

I recently updated my x.org, mesa and r300 trees to current code, but the machine would lock up if I moved the mouse when a 3d app was running. This used to happen a while ago too, but then Vladimir fixed it by calling RADEONWaitForIdleMMIO() in RADEONChooseCursorCRTC():

http://marc.theaimsgroup.com/?l=dri-devel&m=110877531523881

I reapplied Vladimir's fix and the machine doesn't lock up any more. Maybe the fix should be checked in to CVS again?

(Patch against current x.org cvs attached for convenience)


Cheers, Lorenzo
Index: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_mergedfb.c
===================================================================
RCS file: 
/cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_mergedfb.c,v
retrieving revision 1.9
diff -u -r1.9 radeon_mergedfb.c
--- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_mergedfb.c        20 Apr 
2005 12:25:22 -0000      1.9
+++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_mergedfb.c        16 May 
2005 19:41:05 -0000
@@ -1444,6 +1444,14 @@
         
((RADEONMergedDisplayModePtr)info->CurrentLayout.mode->Private)->CRT2Position;
     ScrnInfoPtr pScrn2 = info->CRT2pScrn;
     
+    /*
+       Note: we need WaitForIdle here because OUTREGP() involves an INREG() to 
obtain a previous
+       value. This fix is needed for RV350 + 3d driver (or we get a lockup 
otherwise).
+
+       It is also indicated by documentation (we should not be doing INREG if 
CP engine is active)
+    */
+    RADEONWaitForIdleMMIO(pScrn1);
+
     if (srel == radeonClone) {
        /* show cursor 2 */
        OUTREGP(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_CUR_EN,


Reply via email to