aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2017-03-15 09:45:48 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-03-29 23:53:52 -0400
commitd2d51d8192f1e42a9351ab4d82f85f0c79e1780d (patch)
tree0e0bed09759d67eed822d17930e52d18d384bf2a /drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
parent11ba13e179c271bb21f1a710fc4229e6d9574833 (diff)
drm/amdgpu: don't init GDS pool if GDS size is 0 (v2)
SI cards don't expose GDS as a separate pool. The CP manages GDS and the UMDs use special CP packets to allocate GDS memory. v2: drop extra whitespace change bug: https://bugzilla.kernel.org/show_bug.cgi?id=194867 Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c45
1 files changed, 27 insertions, 18 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 987f8f02348d..244bb9aacf86 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1158,27 +1158,33 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
1158 adev->gds.oa.gfx_partition_size = adev->gds.oa.gfx_partition_size << AMDGPU_OA_SHIFT; 1158 adev->gds.oa.gfx_partition_size = adev->gds.oa.gfx_partition_size << AMDGPU_OA_SHIFT;
1159 adev->gds.oa.cs_partition_size = adev->gds.oa.cs_partition_size << AMDGPU_OA_SHIFT; 1159 adev->gds.oa.cs_partition_size = adev->gds.oa.cs_partition_size << AMDGPU_OA_SHIFT;
1160 /* GDS Memory */ 1160 /* GDS Memory */
1161 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS, 1161 if (adev->gds.mem.total_size) {
1162 adev->gds.mem.total_size >> PAGE_SHIFT); 1162 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
1163 if (r) { 1163 adev->gds.mem.total_size >> PAGE_SHIFT);
1164 DRM_ERROR("Failed initializing GDS heap.\n"); 1164 if (r) {
1165 return r; 1165 DRM_ERROR("Failed initializing GDS heap.\n");
1166 return r;
1167 }
1166 } 1168 }
1167 1169
1168 /* GWS */ 1170 /* GWS */
1169 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS, 1171 if (adev->gds.gws.total_size) {
1170 adev->gds.gws.total_size >> PAGE_SHIFT); 1172 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
1171 if (r) { 1173 adev->gds.gws.total_size >> PAGE_SHIFT);
1172 DRM_ERROR("Failed initializing gws heap.\n"); 1174 if (r) {
1173 return r; 1175 DRM_ERROR("Failed initializing gws heap.\n");
1176 return r;
1177 }
1174 } 1178 }
1175 1179
1176 /* OA */ 1180 /* OA */
1177 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA, 1181 if (adev->gds.oa.total_size) {
1178 adev->gds.oa.total_size >> PAGE_SHIFT); 1182 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
1179 if (r) { 1183 adev->gds.oa.total_size >> PAGE_SHIFT);
1180 DRM_ERROR("Failed initializing oa heap.\n"); 1184 if (r) {
1181 return r; 1185 DRM_ERROR("Failed initializing oa heap.\n");
1186 return r;
1187 }
1182 } 1188 }
1183 1189
1184 r = amdgpu_ttm_debugfs_init(adev); 1190 r = amdgpu_ttm_debugfs_init(adev);
@@ -1206,9 +1212,12 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
1206 } 1212 }
1207 ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_VRAM); 1213 ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_VRAM);
1208 ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_TT); 1214 ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_TT);
1209 ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS); 1215 if (adev->gds.mem.total_size)
1210 ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS); 1216 ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
1211 ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA); 1217 if (adev->gds.gws.total_size)
1218 ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
1219 if (adev->gds.oa.total_size)
1220 ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
1212 ttm_bo_device_release(&adev->mman.bdev); 1221 ttm_bo_device_release(&adev->mman.bdev);
1213 amdgpu_gart_fini(adev); 1222 amdgpu_gart_fini(adev);
1214 amdgpu_ttm_global_fini(adev); 1223 amdgpu_ttm_global_fini(adev);