On Tue, Apr 17, 2012 at 4:51 PM, <j.glisse at gmail.com> wrote: > From: Jerome Glisse <jglisse at redhat.com> > > If AGP is placed in the middle, the size_af is off-by-one, it results > in VRAM being placed at 0x7fffffff instead of 0x8000000. > > v2: fix the vram_start setup. > v3: also fix r7xx & newer ASIC > > Reported-by: russiane39 on #radeon > > Signed-off-by: Dave Airlie <airlied at redhat.com> > Signed-off-by: Jerome Glisse <jglisse at redhat.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com> Should also go to stable. > --- > ?drivers/gpu/drm/radeon/r600.c ?| ? ?4 ++-- > ?drivers/gpu/drm/radeon/rv770.c | ? ?4 ++-- > ?2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c > index 391bd26..96e3fa3 100644 > --- a/drivers/gpu/drm/radeon/r600.c > +++ b/drivers/gpu/drm/radeon/r600.c > @@ -1135,7 +1135,7 @@ static void r600_vram_gtt_location(struct radeon_device > *rdev, struct radeon_mc > ? ? ? ?} > ? ? ? ?if (rdev->flags & RADEON_IS_AGP) { > ? ? ? ? ? ? ? ?size_bf = mc->gtt_start; > - ? ? ? ? ? ? ? size_af = 0xFFFFFFFF - mc->gtt_end + 1; > + ? ? ? ? ? ? ? size_af = 0xFFFFFFFF - mc->gtt_end; > ? ? ? ? ? ? ? ?if (size_bf > size_af) { > ? ? ? ? ? ? ? ? ? ? ? ?if (mc->mc_vram_size > size_bf) { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dev_warn(rdev->dev, "limiting VRAM\n"); > @@ -1149,7 +1149,7 @@ static void r600_vram_gtt_location(struct radeon_device > *rdev, struct radeon_mc > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mc->real_vram_size = size_af; > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mc->mc_vram_size = size_af; > ? ? ? ? ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ? ? ? ? mc->vram_start = mc->gtt_end; > + ? ? ? ? ? ? ? ? ? ? ? mc->vram_start = mc->gtt_end + 1; > ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ?mc->vram_end = mc->vram_start + mc->mc_vram_size - 1; > ? ? ? ? ? ? ? ?dev_info(rdev->dev, "VRAM: %lluM 0x%08llX - 0x%08llX (%lluM > used)\n", > diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c > index c62ae4b..cdab1ae 100644 > --- a/drivers/gpu/drm/radeon/rv770.c > +++ b/drivers/gpu/drm/radeon/rv770.c > @@ -969,7 +969,7 @@ void r700_vram_gtt_location(struct radeon_device *rdev, > struct radeon_mc *mc) > ? ? ? ?} > ? ? ? ?if (rdev->flags & RADEON_IS_AGP) { > ? ? ? ? ? ? ? ?size_bf = mc->gtt_start; > - ? ? ? ? ? ? ? size_af = 0xFFFFFFFF - mc->gtt_end + 1; > + ? ? ? ? ? ? ? size_af = 0xFFFFFFFF - mc->gtt_end; > ? ? ? ? ? ? ? ?if (size_bf > size_af) { > ? ? ? ? ? ? ? ? ? ? ? ?if (mc->mc_vram_size > size_bf) { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dev_warn(rdev->dev, "limiting VRAM\n"); > @@ -983,7 +983,7 @@ void r700_vram_gtt_location(struct radeon_device *rdev, > struct radeon_mc *mc) > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mc->real_vram_size = size_af; > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mc->mc_vram_size = size_af; > ? ? ? ? ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ? ? ? ? mc->vram_start = mc->gtt_end; > + ? ? ? ? ? ? ? ? ? ? ? mc->vram_start = mc->gtt_end + 1; > ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ?mc->vram_end = mc->vram_start + mc->mc_vram_size - 1; > ? ? ? ? ? ? ? ?dev_info(rdev->dev, "VRAM: %lluM 0x%08llX - 0x%08llX (%lluM > used)\n", > -- > 1.7.9.3 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel