Commit 218b5dcd authored by John Brooks's avatar John Brooks Committed by Alex Deucher

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: default avatarJohn Brooks <john@fastquake.com>
Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f9321cc4
...@@ -75,6 +75,7 @@ ...@@ -75,6 +75,7 @@
*/ */
extern int amdgpu_modeset; extern int amdgpu_modeset;
extern int amdgpu_vram_limit; extern int amdgpu_vram_limit;
extern int amdgpu_vis_vram_limit;
extern unsigned amdgpu_gart_size; extern unsigned amdgpu_gart_size;
extern int amdgpu_gtt_size; extern int amdgpu_gtt_size;
extern int amdgpu_moverate; extern int amdgpu_moverate;
......
...@@ -74,6 +74,7 @@ ...@@ -74,6 +74,7 @@
#define KMS_DRIVER_PATCHLEVEL 0 #define KMS_DRIVER_PATCHLEVEL 0
int amdgpu_vram_limit = 0; int amdgpu_vram_limit = 0;
int amdgpu_vis_vram_limit = 0;
unsigned amdgpu_gart_size = 256; unsigned amdgpu_gart_size = 256;
int amdgpu_gtt_size = -1; /* auto */ int amdgpu_gtt_size = -1; /* auto */
int amdgpu_moverate = -1; /* auto */ int amdgpu_moverate = -1; /* auto */
...@@ -121,6 +122,9 @@ int amdgpu_lbpw = -1; ...@@ -121,6 +122,9 @@ int amdgpu_lbpw = -1;
MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes"); MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes");
module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
MODULE_PARM_DESC(vis_vramlimit, "Restrict visible VRAM for testing, in megabytes");
module_param_named(vis_vramlimit, amdgpu_vis_vram_limit, int, 0444);
MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc.)"); MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc.)");
module_param_named(gartsize, amdgpu_gart_size, uint, 0600); module_param_named(gartsize, amdgpu_gart_size, uint, 0600);
......
...@@ -1099,6 +1099,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev) ...@@ -1099,6 +1099,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
{ {
uint64_t gtt_size; uint64_t gtt_size;
int r; int r;
u64 vis_vram_limit;
r = amdgpu_ttm_global_init(adev); r = amdgpu_ttm_global_init(adev);
if (r) { if (r) {
...@@ -1122,6 +1123,13 @@ int amdgpu_ttm_init(struct amdgpu_device *adev) ...@@ -1122,6 +1123,13 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
DRM_ERROR("Failed initializing VRAM heap.\n"); DRM_ERROR("Failed initializing VRAM heap.\n");
return r; return r;
} }
/* Reduce size of CPU-visible VRAM if requested */
vis_vram_limit = (u64)amdgpu_vis_vram_limit * 1024 * 1024;
if (amdgpu_vis_vram_limit > 0 &&
vis_vram_limit <= adev->mc.visible_vram_size)
adev->mc.visible_vram_size = vis_vram_limit;
/* Change the size here instead of the init above so only lpfn is affected */ /* Change the size here instead of the init above so only lpfn is affected */
amdgpu_ttm_set_active_vram_size(adev, adev->mc.visible_vram_size); amdgpu_ttm_set_active_vram_size(adev, adev->mc.visible_vram_size);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment