diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2017-03-15 09:45:48 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-03-29 23:53:52 -0400 |
commit | d2d51d8192f1e42a9351ab4d82f85f0c79e1780d (patch) | |
tree | 0e0bed09759d67eed822d17930e52d18d384bf2a /drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | |
parent | 11ba13e179c271bb21f1a710fc4229e6d9574833 (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.c | 45 |
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); |