aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
diff options
context:
space:
mode:
authorJoerg Roedel <jroedel@suse.de>2020-06-30 11:32:02 +0200
committerJoerg Roedel <jroedel@suse.de>2020-06-30 11:32:02 +0200
commit77346a704c913268a2dad68d59523fd85dc74088 (patch)
tree62c66bcb163b0db42a1fd0a397a6973e52f4ddce /drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
parentiommu/qcom: add optional 'tbu' clock for TLB invalidate (diff)
parentLinux 5.8-rc3 (diff)
downloadwireguard-linux-77346a704c913268a2dad68d59523fd85dc74088.tar.xz
wireguard-linux-77346a704c913268a2dad68d59523fd85dc74088.zip
Merge tag 'v5.8-rc3' into arm/qcom
Linux 5.8-rc3
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
index 7531527067df..d878fe7fee51 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
@@ -192,14 +192,22 @@ int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f,
* Used For polling fence.
* Returns 0 on success, -ENOMEM on failure.
*/
-int amdgpu_fence_emit_polling(struct amdgpu_ring *ring, uint32_t *s)
+int amdgpu_fence_emit_polling(struct amdgpu_ring *ring, uint32_t *s,
+ uint32_t timeout)
{
uint32_t seq;
+ signed long r;
if (!s)
return -EINVAL;
seq = ++ring->fence_drv.sync_seq;
+ r = amdgpu_fence_wait_polling(ring,
+ seq - ring->fence_drv.num_fences_mask,
+ timeout);
+ if (r < 1)
+ return -ETIMEDOUT;
+
amdgpu_ring_emit_fence(ring, ring->fence_drv.gpu_addr,
seq, 0);