Commit db63042b authored by Alex Deucher's avatar Alex Deucher

drm/amdgpu: add automatic per asic settings for gart_size

We need a larger gart for asics that do not support GPUVM on all
engines (e.g., MM) to make sure we have enough space for all
gtt buffers in physical mode.  Change the default size based on
the asic type.
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 871594e7
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,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 int amdgpu_vis_vram_limit;
extern unsigned amdgpu_gart_size; extern int amdgpu_gart_size;
extern int amdgpu_gtt_size; extern int amdgpu_gtt_size;
extern int amdgpu_moverate; extern int amdgpu_moverate;
extern int amdgpu_benchmarking; extern int amdgpu_benchmarking;
......
...@@ -1062,11 +1062,11 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev) ...@@ -1062,11 +1062,11 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev)
amdgpu_sched_jobs = roundup_pow_of_two(amdgpu_sched_jobs); amdgpu_sched_jobs = roundup_pow_of_two(amdgpu_sched_jobs);
} }
if (amdgpu_gart_size < 32) { if (amdgpu_gart_size != -1 && amdgpu_gart_size < 32) {
/* gart size must be greater or equal to 32M */ /* gart size must be greater or equal to 32M */
dev_warn(adev->dev, "gart size (%d) too small\n", dev_warn(adev->dev, "gart size (%d) too small\n",
amdgpu_gart_size); amdgpu_gart_size);
amdgpu_gart_size = 32; amdgpu_gart_size = -1;
} }
if (amdgpu_gtt_size != -1 && amdgpu_gtt_size < 32) { if (amdgpu_gtt_size != -1 && amdgpu_gtt_size < 32) {
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
int amdgpu_vram_limit = 0; int amdgpu_vram_limit = 0;
int amdgpu_vis_vram_limit = 0; int amdgpu_vis_vram_limit = 0;
unsigned amdgpu_gart_size = 256; int amdgpu_gart_size = -1; /* auto */
int amdgpu_gtt_size = -1; /* auto */ int amdgpu_gtt_size = -1; /* auto */
int amdgpu_moverate = -1; /* auto */ int amdgpu_moverate = -1; /* auto */
int amdgpu_benchmarking = 0; int amdgpu_benchmarking = 0;
...@@ -128,7 +128,7 @@ module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); ...@@ -128,7 +128,7 @@ module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
MODULE_PARM_DESC(vis_vramlimit, "Restrict visible VRAM for testing, in megabytes"); MODULE_PARM_DESC(vis_vramlimit, "Restrict visible VRAM for testing, in megabytes");
module_param_named(vis_vramlimit, amdgpu_vis_vram_limit, int, 0444); 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 gart to setup in megabytes (32, 64, etc., -1=auto)");
module_param_named(gartsize, amdgpu_gart_size, uint, 0600); module_param_named(gartsize, amdgpu_gart_size, uint, 0600);
MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)"); MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)");
......
...@@ -65,7 +65,21 @@ ...@@ -65,7 +65,21 @@
*/ */
void amdgpu_gart_set_defaults(struct amdgpu_device *adev) void amdgpu_gart_set_defaults(struct amdgpu_device *adev)
{ {
adev->mc.gart_size = (uint64_t)amdgpu_gart_size << 20; u64 gart_size;
if (amdgpu_gart_size == -1) {
/* make the GART larger for chips that
* dont' support VM for all rings
*/
if (adev->asic_type <= CHIP_STONEY)
gart_size = 1024;
else
gart_size = 256;
} else {
gart_size = amdgpu_gart_size;
}
adev->mc.gart_size = gart_size << 20;
} }
/** /**
......
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