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,