diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 22 |
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, | |||
282 | int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data, | 282 | int 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 | } |