This patch by Adam J. Richter. --- XFree86-4.1.0/xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c Tue May 29 15:51:52 2001 +++ XFree86-4.1.0/xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c Tue Jul 17 03:50:27 2001 @@ -1635,6 +1635,7 @@ VGAOUT8(vgaCRReg, cr66 | 0x80); VGAOUT8(vgaCRIndex, 0x3a); cr3a = VGAIN8(vgaCRReg); + save->CR3A = cr3a; VGAOUT8(vgaCRReg, cr3a | 0x80); /* VGA_SR_MODE saves mode info only, no fonts, no colormap */ @@ -1664,7 +1665,6 @@ VGAOUT8(vgaCRIndex, 0x36); save->CR36 = VGAIN8(vgaCRReg); VGAOUT8(vgaCRIndex, 0x3a); - save->CR3A = VGAIN8(vgaCRReg); if (!S3_TRIO_3D_SERIES(ps3v->Chipset)) { VGAOUT8(vgaCRIndex, 0x40); save->CR40 = VGAIN8(vgaCRReg); @@ -2093,8 +2093,7 @@ cr66 = VGAIN8(vgaCRReg); VGAOUT8(vgaCRReg, cr66 | 0x80); VGAOUT8(vgaCRIndex, 0x3a); - cr3a = VGAIN8(vgaCRReg); - VGAOUT8(vgaCRReg, cr3a | 0x80); + VGAOUT8(vgaCRReg, restore->CR3A | 0x80); /* And finally, we init the STREAMS processor if we have CR67 indicate 24bpp * We also restore FIFO and TIMEOUT memory controller registers. (later...) @@ -2157,7 +2156,7 @@ VGAOUT8(vgaCRIndex, 0x66); VGAOUT8(vgaCRReg, cr66); VGAOUT8(vgaCRIndex, 0x3a); - VGAOUT8(vgaCRReg, cr3a); + VGAOUT8(vgaCRReg, restore->CR3A); if (xf86GetVerbosity() > 1) { xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, VERBLEV,