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);