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

Bug#374986: xserver-xorg-video-ati: [2.6.17/radeon] Xserver and console dead, rt_sigaction looping, not killable



On Wed, 2006-06-28 at 10:26 +0200, Eduard Bloch wrote: 
> 
> Without loading the DRI module, it works.

So the problem was avoided previously because the DRI wasn't supported
with your card yet. As you may have noticed in the log file, r300 DRI is
still considered experimental, but you can try the attached patch which
was recently merged in xf86-video-ati git upstream.


-- 
Earthling Michel Dänzer           |          http://tungstengraphics.com
Libre software enthusiast         |          Debian, X and DRI developer

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 2381831..149cb2e 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -133,6 +133,7 @@ static void RADEONInitDispBandwidth(Scrn
 static void RADEONGetMergedFBOptions(ScrnInfoPtr pScrn);
 static int RADEONValidateMergeModes(ScrnInfoPtr pScrn);
 static void RADEONSetDynamicClock(ScrnInfoPtr pScrn, int mode);
+static void RADEONForceSomeClocks(ScrnInfoPtr pScrn);
 static void RADEONUpdatePanelSize(ScrnInfoPtr pScrn);
 static void RADEONSaveMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save);
 
@@ -5738,6 +5739,9 @@ #endif
         }
     }
 
+    if ((!info->IsSecondary) && (IS_R300_VARIANT || IS_RV100_VARIANT))
+      RADEONForceSomeClocks(pScrn);
+
     if (info->allowColorTiling && (pScrn->virtualX > info->MaxSurfaceWidth)) {
 	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
 		   "Color tiling not supported with virtual x resolutions larger than %d, disabling\n",
@@ -9751,6 +9757,16 @@ RADEONGetMergedFBOptions(ScrnInfoPtr pSc
     }
 }
 
+static void RADEONForceSomeClocks(ScrnInfoPtr pScrn)
+{
+    /* It appears from r300 and rv100 may need some clocks forced-on */
+     CARD32 tmp;
+
+     tmp = INPLL(pScrn, RADEON_SCLK_CNTL);
+     tmp |= RADEON_SCLK_FORCE_CP | RADEON_SCLK_FORCE_VIP;
+     OUTPLL(pScrn, RADEON_SCLK_CNTL, tmp);
+}
+
 static void RADEONSetDynamicClock(ScrnInfoPtr pScrn, int mode)
 {
     RADEONInfoPtr  info       = RADEONPTR(pScrn);

Reply to: