Replace DRM_WAIT_ON() with wait_event_interruptible(). Be careful to keep same return value semantics Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx> Cc: Kevin Brace <kevinbrace@xxxxxxx> Cc: Thomas Hellstrom <thellstrom@xxxxxxxxxx> Cc: "Gustavo A. R. Silva" <gustavo@xxxxxxxxxxxxxx> Cc: Mike Marshall <hubcap@xxxxxxxxxxxx> Cc: Ira Weiny <ira.weiny@xxxxxxxxx> Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> Cc: Emil Velikov <emil.velikov@xxxxxxxxxxxxx> --- drivers/gpu/drm/via/via_video.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/via/via_video.c b/drivers/gpu/drm/via/via_video.c index 4e165b1b0b18..1f88180affef 100644 --- a/drivers/gpu/drm/via/via_video.c +++ b/drivers/gpu/drm/via/via_video.c @@ -26,7 +26,6 @@ */ #include <drm/drm_device.h> -#include <drm/drm_os_linux.h> #include <drm/via_drm.h> #include "via_drv.h" @@ -73,7 +72,7 @@ int via_decoder_futex(struct drm_device *dev, void *data, struct drm_file *file_ volatile int *lock; drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; drm_via_sarea_t *sAPriv = dev_priv->sarea_priv; - int ret = 0; + int ret; DRM_DEBUG("\n"); @@ -84,9 +83,21 @@ int via_decoder_futex(struct drm_device *dev, void *data, struct drm_file *file_ switch (fx->func) { case VIA_FUTEX_WAIT: - DRM_WAIT_ON(ret, dev_priv->decoder_queue[fx->lock], - (fx->ms / 10) * (HZ / 100), *lock != fx->val); - return ret; + ret = wait_event_interruptible_timeout( + dev_priv->decoder_queue[fx->lock], + *lock != fx->val, + msecs_to_jiffies(fx->ms)); + switch (ret) { + case 0: + /* timeout */ + return -EBUSY; + case -ERESTARTSYS: + /* interrupted by signal */ + return -EINTR; + default: + return 0; + } + case VIA_FUTEX_WAKE: wake_up(&(dev_priv->decoder_queue[fx->lock])); return 0; -- 2.20.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel