aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-09-03 23:06:29 -0400
committerDave Airlie <airlied@redhat.com>2015-09-03 23:06:29 -0400
commit99495589aa4de7166af254bc497cdbe133fc24bb (patch)
treed525e957854064f2492976e9beb8a04dddc28143 /drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
parent879a37d00f1882b1e56a66e626af4194d592d257 (diff)
parentbddf8026386927985ef6d0d11c3ba78f70b76bad (diff)
Merge branch 'drm-next-4.3' of git://people.freedesktop.org/~agd5f/linux into drm-next
More fixes for radeon and amdgpu for 4.3: - Send full DP aux address fixes for radeon and amdgpu - Fix an HDMI display regression for pre-DCE5 parts - UVD suspend fixes for amdgpu - Add an rs480 suspend quirk - Fix bo reserve handling in amdgpu GEM_OP ioctl - GPU scheduler fixes - SDMA optimizations - MEC fix for Fiji * 'drm-next-4.3' of git://people.freedesktop.org/~agd5f/linux: (21 commits) drm/amdgpu: set MEC doorbell range for Fiji drm/amdgpu: implement burst NOP for SDMA drm/amdgpu: add insert_nop ring func and default implementation drm/amdgpu: add amdgpu_get_sdma_instance helper function drm/amdgpu: add AMDGPU_MAX_SDMA_INSTANCES drm/amdgpu: add burst_nop flag for sdma drm/amdgpu: add count field for the SDMA NOP packet v2 drm/amdgpu: use PT for VM sync on unmap drm/amdgpu: make wait_event uninterruptible in push_job drm/amdgpu: fix amdgpu_bo_unreserve order in GEM_OP IOCTL v2 drm/amdgpu: partially revert "modify amdgpu_fence_wait_any() to amdgpu_fence_wait_multiple()" v2 Add radeon suspend/resume quirk for HP Compaq dc5750. drm/amdgpu: re-work sync_resv drm/amdgpu/atom: Send out the full AUX address drm/radeon/native: Send out the full AUX address drm/radeon/atom: Send out the full AUX address drm/amdgpu: use IB for fill_buffer instead of direct command drm/amdgpu: stop trying to suspend UVD sessions v2 drm/amdgpu: add scheduler dependency callback v2 drm/amdgpu: let the scheduler work more with jobs v2 ...
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 4afc507820c0..4b36e779622f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -615,6 +615,7 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
615 info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT; 615 info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT;
616 info.domains = robj->initial_domain; 616 info.domains = robj->initial_domain;
617 info.domain_flags = robj->flags; 617 info.domain_flags = robj->flags;
618 amdgpu_bo_unreserve(robj);
618 if (copy_to_user(out, &info, sizeof(info))) 619 if (copy_to_user(out, &info, sizeof(info)))
619 r = -EFAULT; 620 r = -EFAULT;
620 break; 621 break;
@@ -622,17 +623,19 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
622 case AMDGPU_GEM_OP_SET_PLACEMENT: 623 case AMDGPU_GEM_OP_SET_PLACEMENT:
623 if (amdgpu_ttm_tt_has_userptr(robj->tbo.ttm)) { 624 if (amdgpu_ttm_tt_has_userptr(robj->tbo.ttm)) {
624 r = -EPERM; 625 r = -EPERM;
626 amdgpu_bo_unreserve(robj);
625 break; 627 break;
626 } 628 }
627 robj->initial_domain = args->value & (AMDGPU_GEM_DOMAIN_VRAM | 629 robj->initial_domain = args->value & (AMDGPU_GEM_DOMAIN_VRAM |
628 AMDGPU_GEM_DOMAIN_GTT | 630 AMDGPU_GEM_DOMAIN_GTT |
629 AMDGPU_GEM_DOMAIN_CPU); 631 AMDGPU_GEM_DOMAIN_CPU);
632 amdgpu_bo_unreserve(robj);
630 break; 633 break;
631 default: 634 default:
635 amdgpu_bo_unreserve(robj);
632 r = -EINVAL; 636 r = -EINVAL;
633 } 637 }
634 638
635 amdgpu_bo_unreserve(robj);
636out: 639out:
637 drm_gem_object_unreference_unlocked(gobj); 640 drm_gem_object_unreference_unlocked(gobj);
638 return r; 641 return r;