aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2017-07-07 07:17:45 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-07-14 11:06:31 -0400
commit36d3837266c53a92a909f22f6bbf0846c0e6464f (patch)
tree5b5f9bca8890ebccc39f88ba8af33da70161dbd3
parentbb84284e10ec3447b4bb74cfa493d5c384a0b798 (diff)
drm/amdgpu: add new gttsize module parameter v2
This allows setting the gtt size independent of the gart size. v2: fix copy and paste typo Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@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_device.c7
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c12
4 files changed, 21 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index b19557b8c683..c7436ea425b4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -76,6 +76,7 @@
76extern int amdgpu_modeset; 76extern int amdgpu_modeset;
77extern int amdgpu_vram_limit; 77extern int amdgpu_vram_limit;
78extern int amdgpu_gart_size; 78extern int amdgpu_gart_size;
79extern int amdgpu_gtt_size;
79extern int amdgpu_moverate; 80extern int amdgpu_moverate;
80extern int amdgpu_benchmarking; 81extern int amdgpu_benchmarking;
81extern int amdgpu_testing; 82extern int amdgpu_testing;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 84ff824ea260..49dd8e0ddd17 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1141,6 +1141,13 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev)
1141 } 1141 }
1142 } 1142 }
1143 1143
1144 if (amdgpu_gtt_size != -1 && amdgpu_gtt_size < 32) {
1145 /* gtt size must be greater or equal to 32M */
1146 dev_warn(adev->dev, "gtt size (%d) too small\n",
1147 amdgpu_gtt_size);
1148 amdgpu_gtt_size = -1;
1149 }
1150
1144 amdgpu_check_vm_size(adev); 1151 amdgpu_check_vm_size(adev);
1145 1152
1146 amdgpu_check_block_size(adev); 1153 amdgpu_check_block_size(adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index d90dc426ee5b..b83e87fef6a8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -75,6 +75,7 @@
75 75
76int amdgpu_vram_limit = 0; 76int amdgpu_vram_limit = 0;
77int amdgpu_gart_size = -1; /* auto */ 77int amdgpu_gart_size = -1; /* auto */
78int amdgpu_gtt_size = -1; /* auto */
78int amdgpu_moverate = -1; /* auto */ 79int amdgpu_moverate = -1; /* auto */
79int amdgpu_benchmarking = 0; 80int amdgpu_benchmarking = 0;
80int amdgpu_testing = 0; 81int amdgpu_testing = 0;
@@ -123,6 +124,9 @@ module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
123MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc., -1 = auto)"); 124MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc., -1 = auto)");
124module_param_named(gartsize, amdgpu_gart_size, int, 0600); 125module_param_named(gartsize, amdgpu_gart_size, int, 0600);
125 126
127MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)");
128module_param_named(gttsize, amdgpu_gtt_size, int, 0600);
129
126MODULE_PARM_DESC(moverate, "Maximum buffer migration rate in MB/s. (32, 64, etc., -1=auto, 0=1=disabled)"); 130MODULE_PARM_DESC(moverate, "Maximum buffer migration rate in MB/s. (32, 64, etc., -1=auto, 0=1=disabled)");
127module_param_named(moverate, amdgpu_moverate, int, 0600); 131module_param_named(moverate, amdgpu_moverate, int, 0600);
128 132
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 4e711d9af67c..b5420b20c2f5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1097,6 +1097,7 @@ static struct ttm_bo_driver amdgpu_bo_driver = {
1097 1097
1098int amdgpu_ttm_init(struct amdgpu_device *adev) 1098int amdgpu_ttm_init(struct amdgpu_device *adev)
1099{ 1099{
1100 uint64_t gtt_size;
1100 int r; 1101 int r;
1101 1102
1102 r = amdgpu_ttm_global_init(adev); 1103 r = amdgpu_ttm_global_init(adev);
@@ -1143,14 +1144,19 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
1143 } 1144 }
1144 DRM_INFO("amdgpu: %uM of VRAM memory ready\n", 1145 DRM_INFO("amdgpu: %uM of VRAM memory ready\n",
1145 (unsigned) (adev->mc.real_vram_size / (1024 * 1024))); 1146 (unsigned) (adev->mc.real_vram_size / (1024 * 1024)));
1146 r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT, 1147
1147 adev->mc.gart_size >> PAGE_SHIFT); 1148 if (amdgpu_gtt_size == -1)
1149 gtt_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
1150 adev->mc.mc_vram_size);
1151 else
1152 gtt_size = (uint64_t)amdgpu_gtt_size << 20;
1153 r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT, gtt_size >> PAGE_SHIFT);
1148 if (r) { 1154 if (r) {
1149 DRM_ERROR("Failed initializing GTT heap.\n"); 1155 DRM_ERROR("Failed initializing GTT heap.\n");
1150 return r; 1156 return r;
1151 } 1157 }
1152 DRM_INFO("amdgpu: %uM of GTT memory ready.\n", 1158 DRM_INFO("amdgpu: %uM of GTT memory ready.\n",
1153 (unsigned)(adev->mc.gart_size / (1024 * 1024))); 1159 (unsigned)(gtt_size / (1024 * 1024)));
1154 1160
1155 adev->gds.mem.total_size = adev->gds.mem.total_size << AMDGPU_GDS_SHIFT; 1161 adev->gds.mem.total_size = adev->gds.mem.total_size << AMDGPU_GDS_SHIFT;
1156 adev->gds.mem.gfx_partition_size = adev->gds.mem.gfx_partition_size << AMDGPU_GDS_SHIFT; 1162 adev->gds.mem.gfx_partition_size = adev->gds.mem.gfx_partition_size << AMDGPU_GDS_SHIFT;