On 2018年03月19日 18:03, Christian König wrote:
Am 19.03.2018 um 11:00 schrieb Chunming Zhou:
v2: add sanity checking
v3: make code open

Change-Id: I2cf672ad36b8b4cc1a6b2e704f786bf6a155d9ce
Signed-off-by: Chunming Zhou <david1.z...@amd.com>

Reviewed-by: Christian König <christian.koe...@amd.com>
With more thinking, this change breaks the order of fallback.
visible to invisible should be first.
So I will make v4 for handle visible to invisible fallback.

Regards,
David Zhou

---
  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    |  5 -----
  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 16 ++++++++++++----
  2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 6e6570ff9f8b..660f5e44b1a5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -85,11 +85,6 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
                  flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
                  goto retry;
              }
-
-            if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {
-                initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
-                goto retry;
-            }
              DRM_DEBUG("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
                    size, initial_domain, alignment, r);
          }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index b3310219e0ac..e167e98c746c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -440,13 +440,21 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
  #endif
        bo->tbo.bdev = &adev->mman.bdev;
-    amdgpu_ttm_placement_from_domain(bo, domain);
-
+    amdgpu_ttm_placement_from_domain(bo, bo->preferred_domains);
      r = ttm_bo_init_reserved(&adev->mman.bdev, &bo->tbo, size, type,
                   &bo->placement, page_align, &ctx, acc_size,
                   sg, resv, &amdgpu_ttm_bo_destroy);
-    if (unlikely(r != 0))
-        return r;
+
+    if (unlikely(r && r != -ERESTARTSYS) && bo->allowed_domains !=
+        bo->preferred_domains) {
+        amdgpu_ttm_placement_from_domain(bo, bo->allowed_domains);
+        r = ttm_bo_init_reserved(&adev->mman.bdev, &bo->tbo, size, type,
+                     &bo->placement, page_align, &ctx,
+                     acc_size, sg, resv,
+                     &amdgpu_ttm_bo_destroy);
+        if (unlikely(r != 0))
+            return r;
+    }
        if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
          bo->tbo.mem.mem_type == TTM_PL_VRAM &&


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to