aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index ffbe9aa9f232..86b93245bf9d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -768,8 +768,13 @@ int amdgpu_cs_wait_ioctl(struct drm_device *dev, void *data,
768 uint64_t seq[AMDGPU_MAX_RINGS] = {0}; 768 uint64_t seq[AMDGPU_MAX_RINGS] = {0};
769 struct amdgpu_ring *ring = NULL; 769 struct amdgpu_ring *ring = NULL;
770 unsigned long timeout = amdgpu_gem_timeout(wait->in.timeout); 770 unsigned long timeout = amdgpu_gem_timeout(wait->in.timeout);
771 struct amdgpu_ctx *ctx;
771 long r; 772 long r;
772 773
774 ctx = amdgpu_ctx_get(filp->driver_priv, wait->in.ctx_id);
775 if (ctx == NULL)
776 return -EINVAL;
777
773 r = amdgpu_cs_get_ring(adev, wait->in.ip_type, wait->in.ip_instance, 778 r = amdgpu_cs_get_ring(adev, wait->in.ip_type, wait->in.ip_instance,
774 wait->in.ring, &ring); 779 wait->in.ring, &ring);
775 if (r) 780 if (r)
@@ -778,6 +783,7 @@ int amdgpu_cs_wait_ioctl(struct drm_device *dev, void *data,
778 seq[ring->idx] = wait->in.handle; 783 seq[ring->idx] = wait->in.handle;
779 784
780 r = amdgpu_fence_wait_seq_timeout(adev, seq, true, timeout); 785 r = amdgpu_fence_wait_seq_timeout(adev, seq, true, timeout);
786 amdgpu_ctx_put(ctx);
781 if (r < 0) 787 if (r < 0)
782 return r; 788 return r;
783 789