On Die, 2002-09-03 at 16:12, Peter Johnson wrote:

> Figured that one out shortly after sending.  Still having what amounts to a
> system hang, when I try to run the DRI extension.  This happens with 1.3 GHz
> Athlon, running either kernel 2.4.20-pre5 or 2.4.18 and ATI Rage 128 Pro PP rev 0
> (Xpert/PCI).

One possible cause is that bus mastering is only enabled explicitly for
AGP cards. The attached patch fixes that as well as related hangs when
VT switching back to the server.


-- 
Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
XFree86 and DRI project member   /  CS student, Free Software enthusiast
Index: r128_dri.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c,v
retrieving revision 1.22
diff -p -u -r1.22 r128_dri.c
--- r128_dri.c	2001/12/28 15:49:11	1.22
+++ r128_dri.c	2002/09/03 14:24:24
@@ -601,8 +601,6 @@ static Bool R128DRIAgpInit(R128InfoPtr i
 
     OUTREG(R128_PCI_GART_PAGE, 1); /* Ensure AGP GART is used (for now) */
 
-    xf86EnablePciBusMaster(info->PciInfo, TRUE);
-
     return TRUE;
 }
 
@@ -1028,6 +1026,8 @@ Bool R128DRIScreenInit(ScreenPtr pScreen
 	R128DRICloseScreen(pScreen);
 	return FALSE;
     }
+
+    xf86EnablePciBusMaster(info->PciInfo, TRUE);
 
 				/* DRIScreenInit doesn't add all the
 				   common mappings.  Add additional
Index: r128_driver.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c,v
retrieving revision 1.57
diff -p -u -r1.57 r128_driver.c
--- r128_driver.c	2002/01/04 21:22:26	1.57
+++ r128_driver.c	2002/09/03 14:24:24
@@ -3415,6 +3427,7 @@ Bool R128EnterVT(int scrnIndex, int flag
 
 #ifdef XF86DRI
     if (info->directRenderingEnabled) {
+	xf86EnablePciBusMaster(info->PciInfo, TRUE);
 	R128CCE_START(pScrn, info);
 	DRIUnlock(pScrn->pScreen);
     }

Reply via email to