Skip to content

Commit

Permalink
drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size
Browse files Browse the repository at this point in the history
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
  • Loading branch information
Alex Deucher authored and Dave Airlie committed Dec 4, 2009
1 parent 722f294 commit 0088dbd
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
9 changes: 6 additions & 3 deletions drivers/gpu/drm/radeon/rs600.c
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,7 @@ int rs600_mc_wait_for_idle(struct radeon_device *rdev)

void rs600_gpu_init(struct radeon_device *rdev)
{
/* FIXME: HDP same place on rs600 ? */
r100_hdp_reset(rdev);
/* FIXME: is this correct ? */
r420_pipes_init(rdev);
/* Wait for mc idle */
if (rs600_mc_wait_for_idle(rdev))
Expand All @@ -317,7 +315,6 @@ void rs600_gpu_init(struct radeon_device *rdev)

void rs600_vram_info(struct radeon_device *rdev)
{
/* FIXME: to do or is these values sane ? */
rdev->mc.vram_is_ddr = true;
rdev->mc.vram_width = 128;

Expand All @@ -326,6 +323,12 @@ void rs600_vram_info(struct radeon_device *rdev)

rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);

if (rdev->mc.mc_vram_size > rdev->mc.aper_size)
rdev->mc.mc_vram_size = rdev->mc.aper_size;

if (rdev->mc.real_vram_size > rdev->mc.aper_size)
rdev->mc.real_vram_size = rdev->mc.aper_size;
}

void rs600_bandwidth_update(struct radeon_device *rdev)
Expand Down
9 changes: 8 additions & 1 deletion drivers/gpu/drm/radeon/rs690.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ void rs690_vram_info(struct radeon_device *rdev)
fixed20_12 a;

rs400_gart_adjust_size(rdev);
/* DDR for all card after R300 & IGP */

rdev->mc.vram_is_ddr = true;
rdev->mc.vram_width = 128;

Expand All @@ -143,6 +143,13 @@ void rs690_vram_info(struct radeon_device *rdev)

rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);

if (rdev->mc.mc_vram_size > rdev->mc.aper_size)
rdev->mc.mc_vram_size = rdev->mc.aper_size;

if (rdev->mc.real_vram_size > rdev->mc.aper_size)
rdev->mc.real_vram_size = rdev->mc.aper_size;

rs690_pm_info(rdev);
/* FIXME: we should enforce default clock in case GPU is not in
* default setup
Expand Down

0 comments on commit 0088dbd

Please sign in to comment.