summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/si.c
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-12-26 10:31:33 -0800
committerOlof Johansson <olof@lixom.net>2013-12-26 10:31:33 -0800
commit509633c8366a0df239297c89689e87aaf6625781 (patch)
tree887622d77f0f2dc3886f52fdbe3f389df337dca1 /drivers/gpu/drm/radeon/si.c
parentbb748890d13232dba4a3975368bfeea6896368ae (diff)
parent319e2e3f63c348a9b66db4667efa73178e18b17d (diff)
downloadlinux-509633c8366a0df239297c89689e87aaf6625781.tar.gz
linux-509633c8366a0df239297c89689e87aaf6625781.tar.bz2
linux-509633c8366a0df239297c89689e87aaf6625781.zip
Merge tag 'v3.13-rc4' into next/cleanup
Linux 3.13-rc4
Diffstat (limited to 'drivers/gpu/drm/radeon/si.c')
-rw-r--r--drivers/gpu/drm/radeon/si.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 6a64ccaa0695..a36736dab5e0 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -3882,8 +3882,15 @@ static int si_mc_init(struct radeon_device *rdev)
rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0);
rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0);
/* size in MB on si */
- rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL;
- rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL;
+ tmp = RREG32(CONFIG_MEMSIZE);
+ /* some boards may have garbage in the upper 16 bits */
+ if (tmp & 0xffff0000) {
+ DRM_INFO("Probable bad vram size: 0x%08x\n", tmp);
+ if (tmp & 0xffff)
+ tmp &= 0xffff;
+ }
+ rdev->mc.mc_vram_size = tmp * 1024ULL * 1024ULL;
+ rdev->mc.real_vram_size = rdev->mc.mc_vram_size;
rdev->mc.visible_vram_size = rdev->mc.aper_size;
si_vram_gtt_location(rdev, &rdev->mc);
radeon_update_bandwidth_info(rdev);