Le mar, 27 déc 2005 12:49:33 +1100, Benjamin Herrenschmidt a écrit :> Also, while we are at it, can you try this patch on top of current> -git ? What I _think_ might be happening is that the X server is also> trying to muck around with the card memory map and is forcing it back> into a wrong setting that also happens to no longer match what the DRM> wants to do and blows up. There are bugs all over the place in that code> (and still some bugs in the DRM as well anyway). This patch attempts to> avoid that by using the largest of the 2 values, which I think will> cause it to behave as it used to for you and will still fix the problem> with machines that have an aperture size smaller than the video memory.> > That might be good enough until I fully fix X and the DRM (work in progress> but there are other "issues").> > Index: linux-work/drivers/char/drm/radeon_cp.c> ===================================================================> --- linux-work.orig/drivers/char/drm/radeon_cp.c 2005-12-24 10:07:22.000000000 +1100> +++ linux-work/drivers/char/drm/radeon_cp.c 2005-12-27 12:48:02.000000000 +1100> @@ -1312,7 +1312,7 @@> static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)> {> drm_radeon_private_t *dev_priv = dev->dev_private;> - unsigned int mem_size;> + unsigned int mem_size, aper_size;> > DRM_DEBUG("\n");> > @@ -1527,7 +1527,9 @@> mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE);> if (mem_size == 0)> mem_size = 0x800000;> - dev_priv->gart_vm_start = dev_priv->fb_location + mem_size;> + aper_size = max(RADEON_READ(RADEON_CONFIG_APER_SIZE), mem_size);> +> + dev_priv->gart_vm_start = dev_priv->fb_location + aper_size;> > #if __OS_HAS_AGP> if (!dev_priv->is_pci)>