drm/radeon: fixup bad vram size on SI
Some boards seem to have garbage in the upper 16 bits of the vram size register. Check for this and clamp the size properly. Fixes boards reporting bogus amounts of vram. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
b7bc799903
commit
0ca223b029
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue