diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-07-18 05:31:18 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-07-19 02:31:49 -0400 |
commit | bf0901731ddf68e8c6d52d7fc0841fe3d4f66847 (patch) | |
tree | 418b7305193076fcfc9812e11844e8d9f40f422c | |
parent | a026df4c5fa6bae8eb03b58be720b911494e3da5 (diff) |
drm/vgem: Remember to offset relative timeouts to mod_timer() by jiffies
mod_timer() takes an absolute jiffie value, not a relative timeout and
quietly fixup the missed ret=0 otherwise gcc just always returns that
the fence timed out.
Testcase: igt/vgem_basic/fence
Fixes: 407779848445 ("drm/vgem: Attach sw fences to exported vGEM dma-buf")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1468834278-26716-1-git-send-email-chris@chris-wilson.co.uk
-rw-r--r-- | drivers/gpu/drm/vgem/vgem_fence.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c index e77b52208699..892417ba2622 100644 --- a/drivers/gpu/drm/vgem/vgem_fence.c +++ b/drivers/gpu/drm/vgem/vgem_fence.c | |||
@@ -107,7 +107,7 @@ static struct fence *vgem_fence_create(struct vgem_file *vfile, | |||
107 | setup_timer(&fence->timer, vgem_fence_timeout, (unsigned long)fence); | 107 | setup_timer(&fence->timer, vgem_fence_timeout, (unsigned long)fence); |
108 | 108 | ||
109 | /* We force the fence to expire within 10s to prevent driver hangs */ | 109 | /* We force the fence to expire within 10s to prevent driver hangs */ |
110 | mod_timer(&fence->timer, VGEM_FENCE_TIMEOUT); | 110 | mod_timer(&fence->timer, jiffies + VGEM_FENCE_TIMEOUT); |
111 | 111 | ||
112 | return &fence->base; | 112 | return &fence->base; |
113 | } | 113 | } |
@@ -240,7 +240,7 @@ int vgem_fence_signal_ioctl(struct drm_device *dev, | |||
240 | struct vgem_file *vfile = file->driver_priv; | 240 | struct vgem_file *vfile = file->driver_priv; |
241 | struct drm_vgem_fence_signal *arg = data; | 241 | struct drm_vgem_fence_signal *arg = data; |
242 | struct fence *fence; | 242 | struct fence *fence; |
243 | int ret; | 243 | int ret = 0; |
244 | 244 | ||
245 | if (arg->flags) | 245 | if (arg->flags) |
246 | return -EINVAL; | 246 | return -EINVAL; |