diff options
author | Christian König <christian.koenig@amd.com> | 2018-04-10 07:42:38 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-05-15 14:43:19 -0400 |
commit | 0808210478c76606c12bb475b3272b7780240812 (patch) | |
tree | 301f9dc5f2e30ce5802be87b0a3e595457644563 /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
parent | 1afd30efeddbb1b32cf35d3bf6477b35690eeca6 (diff) |
drm/amdgpu: revert "Don't change preferred domian when fallback GTT v6"
This reverts commit 7d1ca1325260a9e9329b10a21e3692e6f188936f.
Makes fallback handling to complicated. This is just a feature for the
GEM interface and shouldn't leak into the core BO create function.
The intended change to preserve the preferred domains is implemented in
a follow up patch.
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 37 |
1 files changed, 13 insertions, 24 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 1de6864da717..24f582c696cc 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |||
@@ -356,7 +356,6 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, unsigned long size, | |||
356 | struct amdgpu_bo *bo; | 356 | struct amdgpu_bo *bo; |
357 | unsigned long page_align; | 357 | unsigned long page_align; |
358 | size_t acc_size; | 358 | size_t acc_size; |
359 | u32 domains, preferred_domains, allowed_domains; | ||
360 | int r; | 359 | int r; |
361 | 360 | ||
362 | page_align = roundup(byte_align, PAGE_SIZE) >> PAGE_SHIFT; | 361 | page_align = roundup(byte_align, PAGE_SIZE) >> PAGE_SHIFT; |
@@ -370,24 +369,22 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, unsigned long size, | |||
370 | acc_size = ttm_bo_dma_acc_size(&adev->mman.bdev, size, | 369 | acc_size = ttm_bo_dma_acc_size(&adev->mman.bdev, size, |
371 | sizeof(struct amdgpu_bo)); | 370 | sizeof(struct amdgpu_bo)); |
372 | 371 | ||
373 | preferred_domains = domain & (AMDGPU_GEM_DOMAIN_VRAM | | ||
374 | AMDGPU_GEM_DOMAIN_GTT | | ||
375 | AMDGPU_GEM_DOMAIN_CPU | | ||
376 | AMDGPU_GEM_DOMAIN_GDS | | ||
377 | AMDGPU_GEM_DOMAIN_GWS | | ||
378 | AMDGPU_GEM_DOMAIN_OA); | ||
379 | allowed_domains = preferred_domains; | ||
380 | if (type != ttm_bo_type_kernel && | ||
381 | allowed_domains == AMDGPU_GEM_DOMAIN_VRAM) | ||
382 | allowed_domains |= AMDGPU_GEM_DOMAIN_GTT; | ||
383 | domains = preferred_domains; | ||
384 | retry: | ||
385 | bo = kzalloc(sizeof(struct amdgpu_bo), GFP_KERNEL); | 372 | bo = kzalloc(sizeof(struct amdgpu_bo), GFP_KERNEL); |
386 | if (bo == NULL) | 373 | if (bo == NULL) |
387 | return -ENOMEM; | 374 | return -ENOMEM; |
388 | drm_gem_private_object_init(adev->ddev, &bo->gem_base, size); | 375 | drm_gem_private_object_init(adev->ddev, &bo->gem_base, size); |
389 | INIT_LIST_HEAD(&bo->shadow_list); | 376 | INIT_LIST_HEAD(&bo->shadow_list); |
390 | INIT_LIST_HEAD(&bo->va); | 377 | INIT_LIST_HEAD(&bo->va); |
378 | bo->preferred_domains = domain & (AMDGPU_GEM_DOMAIN_VRAM | | ||
379 | AMDGPU_GEM_DOMAIN_GTT | | ||
380 | AMDGPU_GEM_DOMAIN_CPU | | ||
381 | AMDGPU_GEM_DOMAIN_GDS | | ||
382 | AMDGPU_GEM_DOMAIN_GWS | | ||
383 | AMDGPU_GEM_DOMAIN_OA); | ||
384 | bo->allowed_domains = bo->preferred_domains; | ||
385 | if (type != ttm_bo_type_kernel && | ||
386 | bo->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM) | ||
387 | bo->allowed_domains |= AMDGPU_GEM_DOMAIN_GTT; | ||
391 | 388 | ||
392 | bo->flags = flags; | 389 | bo->flags = flags; |
393 | 390 | ||
@@ -420,20 +417,12 @@ retry: | |||
420 | #endif | 417 | #endif |
421 | 418 | ||
422 | bo->tbo.bdev = &adev->mman.bdev; | 419 | bo->tbo.bdev = &adev->mman.bdev; |
423 | amdgpu_ttm_placement_from_domain(bo, domains); | 420 | amdgpu_ttm_placement_from_domain(bo, domain); |
421 | |||
424 | r = ttm_bo_init_reserved(&adev->mman.bdev, &bo->tbo, size, type, | 422 | r = ttm_bo_init_reserved(&adev->mman.bdev, &bo->tbo, size, type, |
425 | &bo->placement, page_align, &ctx, acc_size, | 423 | &bo->placement, page_align, &ctx, acc_size, |
426 | NULL, resv, &amdgpu_ttm_bo_destroy); | 424 | NULL, resv, &amdgpu_ttm_bo_destroy); |
427 | if (unlikely(r && r != -ERESTARTSYS) && type == ttm_bo_type_device) { | 425 | if (unlikely(r != 0)) |
428 | if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) { | ||
429 | flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED; | ||
430 | goto retry; | ||
431 | } else if (domains != allowed_domains) { | ||
432 | domains = allowed_domains; | ||
433 | goto retry; | ||
434 | } | ||
435 | } | ||
436 | if (unlikely(r)) | ||
437 | return r; | 426 | return r; |
438 | 427 | ||
439 | if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size && | 428 | if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size && |