aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index e87eedcc0da9..eb75eb44efc6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -72,7 +72,7 @@ retry:
72 initial_domain |= AMDGPU_GEM_DOMAIN_GTT; 72 initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
73 goto retry; 73 goto retry;
74 } 74 }
75 DRM_ERROR("Failed to allocate GEM object (%ld, %d, %u, %d)\n", 75 DRM_DEBUG("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
76 size, initial_domain, alignment, r); 76 size, initial_domain, alignment, r);
77 } 77 }
78 return r; 78 return r;
@@ -282,6 +282,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
282int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data, 282int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,
283 struct drm_file *filp) 283 struct drm_file *filp)
284{ 284{
285 struct ttm_operation_ctx ctx = { true, false };
285 struct amdgpu_device *adev = dev->dev_private; 286 struct amdgpu_device *adev = dev->dev_private;
286 struct drm_amdgpu_gem_userptr *args = data; 287 struct drm_amdgpu_gem_userptr *args = data;
287 struct drm_gem_object *gobj; 288 struct drm_gem_object *gobj;
@@ -335,7 +336,7 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,
335 goto free_pages; 336 goto free_pages;
336 337
337 amdgpu_ttm_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_GTT); 338 amdgpu_ttm_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_GTT);
338 r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false); 339 r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
339 amdgpu_bo_unreserve(bo); 340 amdgpu_bo_unreserve(bo);
340 if (r) 341 if (r)
341 goto free_pages; 342 goto free_pages;
@@ -557,14 +558,25 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
557 int r = 0; 558 int r = 0;
558 559
559 if (args->va_address < AMDGPU_VA_RESERVED_SIZE) { 560 if (args->va_address < AMDGPU_VA_RESERVED_SIZE) {
560 dev_err(&dev->pdev->dev, 561 dev_dbg(&dev->pdev->dev,
561 "va_address 0x%LX is in reserved area 0x%LX\n", 562 "va_address 0x%LX is in reserved area 0x%LX\n",
562 args->va_address, AMDGPU_VA_RESERVED_SIZE); 563 args->va_address, AMDGPU_VA_RESERVED_SIZE);
563 return -EINVAL; 564 return -EINVAL;
564 } 565 }
565 566
567 if (args->va_address >= AMDGPU_VA_HOLE_START &&
568 args->va_address < AMDGPU_VA_HOLE_END) {
569 dev_dbg(&dev->pdev->dev,
570 "va_address 0x%LX is in VA hole 0x%LX-0x%LX\n",
571 args->va_address, AMDGPU_VA_HOLE_START,
572 AMDGPU_VA_HOLE_END);
573 return -EINVAL;
574 }
575
576 args->va_address &= AMDGPU_VA_HOLE_MASK;
577
566 if ((args->flags & ~valid_flags) && (args->flags & ~prt_flags)) { 578 if ((args->flags & ~valid_flags) && (args->flags & ~prt_flags)) {
567 dev_err(&dev->pdev->dev, "invalid flags combination 0x%08X\n", 579 dev_dbg(&dev->pdev->dev, "invalid flags combination 0x%08X\n",
568 args->flags); 580 args->flags);
569 return -EINVAL; 581 return -EINVAL;
570 } 582 }
@@ -576,7 +588,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
576 case AMDGPU_VA_OP_REPLACE: 588 case AMDGPU_VA_OP_REPLACE:
577 break; 589 break;
578 default: 590 default:
579 dev_err(&dev->pdev->dev, "unsupported operation %d\n", 591 dev_dbg(&dev->pdev->dev, "unsupported operation %d\n",
580 args->operation); 592 args->operation);
581 return -EINVAL; 593 return -EINVAL;
582 } 594 }