[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: XFree86 freeze after switching to console



On Fre, 2002-10-04 at 12:00, Christian Gennerat wrote:
> xserver-xfree86-dbg                   4.2.1-0pre1v2
> 
> (II) ATI: ATI driver (version 6.4.8) for chipsets: ati, ativga
> (--) RADEON(0): Chipset: "ATI Radeon Mobility LW (AGP)" (ChipID = 0x4c57)
> (II) RADEON(0): PLL parameters: rf=2700 rd=12 min=20000 max=35000;
> xclk=16600
> (==) RADEON(0): Using gamma correction (1.0, 1.0, 1.0)
> (--) RADEON(0): Virtual size is 1600x1200 (pitch 1632)
> (**) RADEON(0): Mode "1600x1200"
> (**) RADEON(0): Mode "1280x1024"
> (**) RADEON(0): Mode "1024x768"
> (==) RADEON(0): DPI set to (75, 75)
> (**) RADEON(0): Using AGP 4x mode
> (
> 
> Switching to console Ctl-Alt-F1
> OK
> Switching back to Xfree Alt-F7
> screen is weirdly refreshed, and keyboard is freezed.

This has been fixed in DRI and XFree86 CVS, the attached patch against
4.2 fixes it in the radeon and r128 drivers.


-- 
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);
     }
Index: radeon_dri.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c,v
retrieving revision 1.14
diff -p -u -r1.14 radeon_dri.c
--- radeon_dri.c	2001/10/01 13:44:03	1.14
+++ radeon_dri.c	2002/10/04 13:06:16
@@ -871,10 +871,6 @@ static Bool RADEONDRIAgpInit(RADEONInfoP
     /* Ring buffer is at AGP offset 0 */
     OUTREG(RADEON_AGP_BASE, info->ringHandle);
 
-				/* Enable bus mastering in PCI config
-				   space */
-    xf86EnablePciBusMaster(info->PciInfo, TRUE);
-
     return TRUE;
 }
 
@@ -1460,6 +1456,10 @@ Bool RADEONDRIScreenInit(ScreenPtr pScre
 	return FALSE;
     }
 #endif
+
+				/* Enable bus mastering in PCI config
+				   space */
+    xf86EnablePciBusMaster(info->PciInfo, TRUE);
 
 				/* DRIScreenInit doesn't add all the
                                    common mappings.  Add additional
Index: radeon_driver.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v
retrieving revision 1.50
diff -p -u -r1.50 radeon_driver.c
--- radeon_driver.c	2002/01/16 02:00:43	1.50
+++ radeon_driver.c	2002/10/04 13:06:23
@@ -4422,7 +4472,8 @@ Bool RADEONEnterVT(int scrnIndex, int fl
 	RADEONEngineRestore(pScrn);
 
 #ifdef XF86DRI
-    if (RADEONPTR(pScrn)->directRenderingEnabled) {
+    if (info->directRenderingEnabled) {
+	xf86EnablePciBusMaster(info->PciInfo, TRUE);
 	RADEONCP_START(pScrn, info);
 	DRIUnlock(pScrn->pScreen);
     }

Reply to: