]> Git Repo - J-linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
Merge tag 'drm-next-2022-12-23' of git://anongit.freedesktop.org/drm/drm
[J-linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_gem.c
index bee38c326537de308e0b3bdf47bcbb1884add21b..bb7350ea1d7594d486eff9b3f2baff582bde4a45 100644 (file)
@@ -113,7 +113,7 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
        bp.resv = resv;
        bp.preferred_domain = initial_domain;
        bp.flags = flags;
-       bp.domain = initial_domain | AMDGPU_GEM_DOMAIN_CPU;
+       bp.domain = initial_domain;
        bp.bo_ptr_size = sizeof(struct amdgpu_bo);
 
        r = amdgpu_bo_create_user(adev, &bp, &ubo);
@@ -332,10 +332,20 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
        }
 
        initial_domain = (u32)(0xffffffff & args->in.domains);
+retry:
        r = amdgpu_gem_object_create(adev, size, args->in.alignment,
-                                    initial_domain, flags, ttm_bo_type_device,
-                                    resv, &gobj);
+                                    initial_domain,
+                                    flags, ttm_bo_type_device, resv, &gobj);
        if (r && 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 (%llu, %d, %llu, %d)\n",
                                size, initial_domain, args->in.alignment, r);
        }
This page took 0.028338 seconds and 4 git commands to generate.