aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Brooks <john@fastquake.com>2017-06-27 22:33:17 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-07-14 11:06:32 -0400
commit218b5dcde4d30e071eec4201a36af665ccfa7e1c (patch)
tree0889785bfbeed0e0342c41feb9852e9c9bc6785d
parentf9321cc4408bd90bb0adcd929c04322aaf6afdcc (diff)
drm/amdgpu: Add vis_vramlimit module parameter
Allow specifying a limit on visible VRAM via a module parameter. This is helpful for testing performance under visible VRAM pressure. v2: Add cast to 64-bit (Christian König) Signed-off-by: John Brooks <john@fastquake.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c8
3 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 019a4b73e5f5..0d6b0617cdf0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -75,6 +75,7 @@
75 */ 75 */
76extern int amdgpu_modeset; 76extern int amdgpu_modeset;
77extern int amdgpu_vram_limit; 77extern int amdgpu_vram_limit;
78extern int amdgpu_vis_vram_limit;
78extern unsigned amdgpu_gart_size; 79extern unsigned amdgpu_gart_size;
79extern int amdgpu_gtt_size; 80extern int amdgpu_gtt_size;
80extern int amdgpu_moverate; 81extern int amdgpu_moverate;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index ed760f477542..3c83fe6c5db8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -74,6 +74,7 @@
74#define KMS_DRIVER_PATCHLEVEL 0 74#define KMS_DRIVER_PATCHLEVEL 0
75 75
76int amdgpu_vram_limit = 0; 76int amdgpu_vram_limit = 0;
77int amdgpu_vis_vram_limit = 0;
77unsigned amdgpu_gart_size = 256; 78unsigned amdgpu_gart_size = 256;
78int amdgpu_gtt_size = -1; /* auto */ 79int amdgpu_gtt_size = -1; /* auto */
79int amdgpu_moverate = -1; /* auto */ 80int amdgpu_moverate = -1; /* auto */
@@ -121,6 +122,9 @@ int amdgpu_lbpw = -1;
121MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes"); 122MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes");
122module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); 123module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
123 124
125MODULE_PARM_DESC(vis_vramlimit, "Restrict visible VRAM for testing, in megabytes");
126module_param_named(vis_vramlimit, amdgpu_vis_vram_limit, int, 0444);
127
124MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc.)"); 128MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc.)");
125module_param_named(gartsize, amdgpu_gart_size, uint, 0600); 129module_param_named(gartsize, amdgpu_gart_size, uint, 0600);
126 130
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index b5420b20c2f5..e238084b7142 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1099,6 +1099,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
1099{ 1099{
1100 uint64_t gtt_size; 1100 uint64_t gtt_size;
1101 int r; 1101 int r;
1102 u64 vis_vram_limit;
1102 1103
1103 r = amdgpu_ttm_global_init(adev); 1104 r = amdgpu_ttm_global_init(adev);
1104 if (r) { 1105 if (r) {
@@ -1122,6 +1123,13 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
1122 DRM_ERROR("Failed initializing VRAM heap.\n"); 1123 DRM_ERROR("Failed initializing VRAM heap.\n");
1123 return r; 1124 return r;
1124 } 1125 }
1126
1127 /* Reduce size of CPU-visible VRAM if requested */
1128 vis_vram_limit = (u64)amdgpu_vis_vram_limit * 1024 * 1024;
1129 if (amdgpu_vis_vram_limit > 0 &&
1130 vis_vram_limit <= adev->mc.visible_vram_size)
1131 adev->mc.visible_vram_size = vis_vram_limit;
1132
1125 /* Change the size here instead of the init above so only lpfn is affected */ 1133 /* Change the size here instead of the init above so only lpfn is affected */
1126 amdgpu_ttm_set_active_vram_size(adev, adev->mc.visible_vram_size); 1134 amdgpu_ttm_set_active_vram_size(adev, adev->mc.visible_vram_size);
1127 1135