| From 51964e9e12d0a054002a1a0d1dec4f661c7aaf28 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com> |
| Date: Mon, 30 Jan 2017 12:06:35 +0900 |
| Subject: drm/radeon: Fix vram_size/visible values in DRM_RADEON_GEM_INFO ioctl |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Michel Dänzer <michel.daenzer@amd.com> |
| |
| commit 51964e9e12d0a054002a1a0d1dec4f661c7aaf28 upstream. |
| |
| vram_size is supposed to be the total amount of VRAM that can be used by |
| userspace, which corresponds to the TTM VRAM manager size (which is |
| normally the full amount of VRAM, but can be just the visible VRAM when |
| DMA can't be used for BO migration for some reason). |
| |
| The above was incorrectly used for vram_visible before, resulting in |
| generally too large values being reported. |
| |
| Reviewed-by: Christian König <christian.koenig@amd.com> |
| Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> |
| Reviewed-by: Alex Deucher <alexander.deucher@amd.com> |
| Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/radeon/radeon_drv.c | 3 ++- |
| drivers/gpu/drm/radeon/radeon_gem.c | 4 ++-- |
| 2 files changed, 4 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/gpu/drm/radeon/radeon_drv.c |
| +++ b/drivers/gpu/drm/radeon/radeon_drv.c |
| @@ -97,9 +97,10 @@ |
| * 2.46.0 - Add PFP_SYNC_ME support on evergreen |
| * 2.47.0 - Add UVD_NO_OP register support |
| * 2.48.0 - TA_CS_BC_BASE_ADDR allowed on SI |
| + * 2.49.0 - DRM_RADEON_GEM_INFO ioctl returns correct vram_size/visible values |
| */ |
| #define KMS_DRIVER_MAJOR 2 |
| -#define KMS_DRIVER_MINOR 48 |
| +#define KMS_DRIVER_MINOR 49 |
| #define KMS_DRIVER_PATCHLEVEL 0 |
| int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); |
| int radeon_driver_unload_kms(struct drm_device *dev); |
| --- a/drivers/gpu/drm/radeon/radeon_gem.c |
| +++ b/drivers/gpu/drm/radeon/radeon_gem.c |
| @@ -220,8 +220,8 @@ int radeon_gem_info_ioctl(struct drm_dev |
| |
| man = &rdev->mman.bdev.man[TTM_PL_VRAM]; |
| |
| - args->vram_size = rdev->mc.real_vram_size; |
| - args->vram_visible = (u64)man->size << PAGE_SHIFT; |
| + args->vram_size = (u64)man->size << PAGE_SHIFT; |
| + args->vram_visible = rdev->mc.visible_vram_size; |
| args->vram_visible -= rdev->vram_pin_size; |
| args->gart_size = rdev->mc.gtt_size; |
| args->gart_size -= rdev->gart_pin_size; |