Commit 67dbb4ea authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Linus Torvalds

[PATCH] Fix more radeon GART start calculation cases

As reported by Jules Villard <jvillard@ens-lyon.fr> and some others, the
recent GART aperture start reconfiguration causes problems on some
setups.

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.
Acked-by: default avatarJules Villard <jvillard@ens-lyon.fr>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 5ab4a6c8
...@@ -1312,7 +1312,7 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on) ...@@ -1312,7 +1312,7 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)
static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
{ {
drm_radeon_private_t *dev_priv = dev->dev_private; drm_radeon_private_t *dev_priv = dev->dev_private;
unsigned int mem_size; unsigned int mem_size, aper_size;
DRM_DEBUG("\n"); DRM_DEBUG("\n");
...@@ -1527,7 +1527,9 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) ...@@ -1527,7 +1527,9 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE); mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE);
if (mem_size == 0) if (mem_size == 0)
mem_size = 0x800000; 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 __OS_HAS_AGP
if (!dev_priv->is_pci) if (!dev_priv->is_pci)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment