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.zhou at amd.com> > > Reviewed-by: Christian König <christian.koenig at 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 && >