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: