]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
Merge remote-tracking branch 'drm/drm-next' into drm-misc-next
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_gem.c
index 28c2706e48d7d46847d463d834d55e3603b639aa..46b9ea4e61031d13f9e701b03f6c9ca53559751f 100644 (file)
@@ -56,11 +56,23 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
                alignment = PAGE_SIZE;
        }
 
+retry:
        r = amdgpu_bo_create(adev, size, alignment, initial_domain,
                             flags, type, resv, &bo);
        if (r) {
-               DRM_DEBUG("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
-                         size, initial_domain, alignment, r);
+               if (r != -ERESTARTSYS) {
+                       if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
+                               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);
+               }
                return r;
        }
        *obj = &bo->gem_base;
This page took 0.035155 seconds and 4 git commands to generate.