]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
Merge tag 'ceph-for-4.16-rc1' of git://github.com/ceph/ceph-client
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_gem.c
index e87eedcc0da9d5363d7742782281683d6bb842dd..e48b4ec88c8c72b84599d8f85b38836c92c26523 100644 (file)
@@ -72,7 +72,7 @@ retry:
                                initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
                                goto retry;
                        }
-                       DRM_ERROR("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
+                       DRM_DEBUG("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
                                  size, initial_domain, alignment, r);
                }
                return r;
@@ -282,6 +282,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
 int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,
                             struct drm_file *filp)
 {
+       struct ttm_operation_ctx ctx = { true, false };
        struct amdgpu_device *adev = dev->dev_private;
        struct drm_amdgpu_gem_userptr *args = data;
        struct drm_gem_object *gobj;
@@ -335,7 +336,7 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,
                        goto free_pages;
 
                amdgpu_ttm_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_GTT);
-               r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
+               r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
                amdgpu_bo_unreserve(bo);
                if (r)
                        goto free_pages;
@@ -517,10 +518,6 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev,
        if (!amdgpu_vm_ready(vm))
                return;
 
-       r = amdgpu_vm_update_directories(adev, vm);
-       if (r)
-               goto error;
-
        r = amdgpu_vm_clear_freed(adev, vm, NULL);
        if (r)
                goto error;
@@ -529,6 +526,10 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev,
            operation == AMDGPU_VA_OP_REPLACE)
                r = amdgpu_vm_bo_update(adev, bo_va, false);
 
+       r = amdgpu_vm_update_directories(adev, vm);
+       if (r)
+               goto error;
+
 error:
        if (r && r != -ERESTARTSYS)
                DRM_ERROR("Couldn't update BO_VA (%d)\n", r);
@@ -557,14 +558,25 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
        int r = 0;
 
        if (args->va_address < AMDGPU_VA_RESERVED_SIZE) {
-               dev_err(&dev->pdev->dev,
+               dev_dbg(&dev->pdev->dev,
                        "va_address 0x%LX is in reserved area 0x%LX\n",
                        args->va_address, AMDGPU_VA_RESERVED_SIZE);
                return -EINVAL;
        }
 
+       if (args->va_address >= AMDGPU_VA_HOLE_START &&
+           args->va_address < AMDGPU_VA_HOLE_END) {
+               dev_dbg(&dev->pdev->dev,
+                       "va_address 0x%LX is in VA hole 0x%LX-0x%LX\n",
+                       args->va_address, AMDGPU_VA_HOLE_START,
+                       AMDGPU_VA_HOLE_END);
+               return -EINVAL;
+       }
+
+       args->va_address &= AMDGPU_VA_HOLE_MASK;
+
        if ((args->flags & ~valid_flags) && (args->flags & ~prt_flags)) {
-               dev_err(&dev->pdev->dev, "invalid flags combination 0x%08X\n",
+               dev_dbg(&dev->pdev->dev, "invalid flags combination 0x%08X\n",
                        args->flags);
                return -EINVAL;
        }
@@ -576,7 +588,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
        case AMDGPU_VA_OP_REPLACE:
                break;
        default:
-               dev_err(&dev->pdev->dev, "unsupported operation %d\n",
+               dev_dbg(&dev->pdev->dev, "unsupported operation %d\n",
                        args->operation);
                return -EINVAL;
        }
@@ -839,7 +851,7 @@ static const struct drm_info_list amdgpu_debugfs_gem_list[] = {
 };
 #endif
 
-int amdgpu_gem_debugfs_init(struct amdgpu_device *adev)
+int amdgpu_debugfs_gem_init(struct amdgpu_device *adev)
 {
 #if defined(CONFIG_DEBUG_FS)
        return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_gem_list, 1);
This page took 0.039423 seconds and 4 git commands to generate.