[Intel-gfx] [PATCH] drm: Wake up next in drm_read() chain if we are forced to putback the event
Daniel Vetter
daniel at ffwll.ch
Mon Aug 7 09:28:58 UTC 2017
On Fri, Aug 04, 2017 at 09:23:28AM +0100, Chris Wilson wrote:
> After an event is sent, we try to copy it into the user buffer of the
> first waiter in drm_read() and if the user buffer doesn't have enough
> room we put it back onto the list. However, we didn't wake up any
> subsequent waiter, so that event may sit on the list until either a new
> vblank event is sent or a new waiter appears. Rare, but in the worst
> case may lead to a stuck process.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
New subtestcase in igt at drm_read?
-Daniel
> ---
> drivers/gpu/drm/drm_file.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index 59b75a974357..7e6db9f7a058 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -524,6 +524,7 @@ ssize_t drm_read(struct file *filp, char __user *buffer,
> file_priv->event_space -= length;
> list_add(&e->link, &file_priv->event_list);
> spin_unlock_irq(&dev->event_lock);
> + wake_up_interruptible(&file_priv->event_wait);
> break;
> }
>
> --
> 2.13.3
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list