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: