diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 |
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 | ||