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

Re: Bug#369167: DRI probably broken: where to reportbug



On Sun, 2006-06-11 at 00:54 +0200, Wolfgang Pfeiffer wrote:
> 
> On Sat, Jun 10, 2006 at 10:57:52AM +1000, Benjamin Herrenschmidt wrote:
> > On Thu, 2006-06-08 at 11:48 +0200, Michel Dänzer wrote:
>  
> > > (II) RADEON(0): [dri] Found DRI library version 1.2.0 and kernel module
> > > version 1.25.0
> > > 
> > > Ben, any idea how this can result in the DRM using the old memory map,
> > > as seen above? Do you agree that the breakage might be related to this?
> > 
> > I don't know about the breakage cause but yeah.. I would have expected
> > this to be the new memory map, maybe it's a bug with UseFBDev ?
> 
> Yes. It looks like switching off 'UseFBDev' in xorg.conf helps getting
> DRI running: I restarted the system, restarted the xserver from the
> KDM login menu, a few times: No crashes so far with DRI being enabled:

Does the attached patch help with Option "UseFBDev"?


> So is it a buggy kernel and/or buggy xserver-xorg-video-fbdev?

The former seems to be working as intended, and the latter isn't
involved. This is quite clearly a bug in the X radeon driver.


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

Index: src/radeon_driver.c
===================================================================
RCS file: /cvs/xorg/driver/xf86-video-ati/src/radeon_driver.c,v
retrieving revision 1.117
diff -p -u -r1.117 radeon_driver.c
--- src/radeon_driver.c	3 May 2006 04:25:27 -0000	1.117
+++ src/radeon_driver.c	11 Jun 2006 11:31:50 -0000
@@ -2489,6 +2491,7 @@ static Bool RADEONPreInitVRAM(ScrnInfoPt
     GDevPtr        dev    = pEnt->device;
     unsigned char *RADEONMMIO = info->MMIO;
     MessageType    from = X_PROBED;
+    CARD32         accessible, bar_size;
 
     if (info->FBDev)
 	pScrn->videoRam      = fbdevHWGetVidmem(pScrn) / 1024;
@@ -2502,35 +2505,32 @@ static Bool RADEONPreInitVRAM(ScrnInfoPt
 
 	OUTREG(RADEON_CONFIG_MEMSIZE, pScrn->videoRam * 1024);
     } else {
-	CARD32 accessible;
-	CARD32 bar_size;
-
 	/* Read VRAM size from card */
         pScrn->videoRam      = INREG(RADEON_CONFIG_MEMSIZE) / 1024;
+    }
 
-	/* Some production boards of m6 will return 0 if it's 8 MB */
-	if (pScrn->videoRam == 0) {
-	    pScrn->videoRam = 8192;
-	    OUTREG(RADEON_CONFIG_MEMSIZE, 0x800000);
-	}
+    /* Some production boards of m6 will return 0 if it's 8 MB */
+    if (pScrn->videoRam == 0) {
+	pScrn->videoRam = 8192;
+	OUTREG(RADEON_CONFIG_MEMSIZE, 0x800000);
+    }
 
-	/* Get accessible memory */
-	accessible = RADEONGetAccessibleVRAM(pScrn);
-
-	/* Crop it to the size of the PCI BAR */
-	bar_size = (1ul << info->PciInfo->size[0]) / 1024;
-	if (bar_size == 0)
-	    bar_size = 0x20000;
-	if (accessible > bar_size)
-	    accessible = bar_size;
+    /* Get accessible memory */
+    accessible = RADEONGetAccessibleVRAM(pScrn);
+
+    /* Crop it to the size of the PCI BAR */
+    bar_size = (1ul << info->PciInfo->size[0]) / 1024;
+    if (bar_size == 0)
+	bar_size = 0x20000;
+    if (accessible > bar_size)
+	accessible = bar_size;
 
-	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
 	       "Detected total video RAM=%dK, accessible=%dK "
-		   "(PCI BAR=%dK)\n",
+	       "(PCI BAR=%dK)\n",
 	       pScrn->videoRam, accessible, bar_size);
-	if (pScrn->videoRam > accessible)
-	    pScrn->videoRam = accessible;
-    }
+    if (pScrn->videoRam > accessible)
+	pScrn->videoRam = accessible;
 
     info->MemCntl            = INREG(RADEON_SDRAM_MODE_REG);
     info->BusCntl            = INREG(RADEON_BUS_CNTL);

Reply to: