]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commit
[media] v4l: vb2: Add fatal error condition flag
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 3 Jun 2014 21:53:25 +0000 (18:53 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 17 Jul 2014 19:19:04 +0000 (16:19 -0300)
commit4bb7267dc41247810815e8b15f0e9fb1456c8d8c
tree04379e02986bc6de1d6d395a9f66b33c27cef9b0
parent9241650d62f79a3da01f1d5e8ebd195083330b75
[media] v4l: vb2: Add fatal error condition flag

When a fatal error occurs that render the device unusable, the only
options for a driver to signal the error condition to userspace is to
set the V4L2_BUF_FLAG_ERROR flag when dequeuing buffers and to return an
error from the buffer prepare handler when queuing buffers.

The buffer error flag indicates a transient error and can't be used by
applications to detect fatal errors. Returning an error from vb2_qbuf()
is thus the only real indication that a fatal error occurred. However,
this is difficult to handle for multithreaded applications that requeue
buffers from a thread other than the control thread. In particular the
poll() call in the control thread will not notify userspace of the
error.

This patch adds an explicit mechanism to report fatal errors to
userspace. Drivers can call the vb2_queue_error() function to signal a
fatal error. From this moment on, buffer preparation will return -EIO to
userspace, and vb2_poll() will set the POLLERR flag and return
immediately. The error flag is cleared when cancelling the queue, either
at stream off time (through vb2_streamoff) or when releasing the queue
with vb2_queue_release().

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/v4l2-core/videobuf2-core.c
include/media/videobuf2-core.h