Message ID | dbe984e9d94781de82a157e96274db04774cbc27.1725265884.git.hverkuil-cisco@xs4all.nl (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | media: add missing wait_prepare/finish ops | expand |
Hi Hans On Mon, Sep 02, 2024 at 10:31:23AM GMT, Hans Verkuil wrote: > Without these ops the v4l2-compliance blocking wait test will fail. > These ops are required to ensure that when VIDIOC_DQBUF has to > wait for buffers to arrive, the queue lock is correctly released > and retaken. Otherwise the wait for a buffer would block all other > queue ioctls. > > Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> > Cc: Jacopo Mondi <jacopo.mondi@ideasonboard.com> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> I can confirm it fixes a previously failing test was: fail: v4l2-test-buffers.cpp(3050): !thread_streamoff.done fail: v4l2-test-buffers.cpp(3078): testBlockingDQBuf(node, q) test blocking wait: FAIL now: test blocking wait: OK Acked-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Tested-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> > --- > drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c > index 65ff2382cffe..7ce3be626c4a 100644 > --- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c > +++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c > @@ -964,6 +964,8 @@ static const struct vb2_ops pispbe_node_queue_ops = { > .buf_queue = pispbe_node_buffer_queue, > .start_streaming = pispbe_node_start_streaming, > .stop_streaming = pispbe_node_stop_streaming, > + .wait_prepare = vb2_ops_wait_prepare, > + .wait_finish = vb2_ops_wait_finish, > }; > > static const struct v4l2_file_operations pispbe_fops = { > -- > 2.43.0 > >
diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c index 65ff2382cffe..7ce3be626c4a 100644 --- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c +++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c @@ -964,6 +964,8 @@ static const struct vb2_ops pispbe_node_queue_ops = { .buf_queue = pispbe_node_buffer_queue, .start_streaming = pispbe_node_start_streaming, .stop_streaming = pispbe_node_stop_streaming, + .wait_prepare = vb2_ops_wait_prepare, + .wait_finish = vb2_ops_wait_finish, }; static const struct v4l2_file_operations pispbe_fops = {
Without these ops the v4l2-compliance blocking wait test will fail. These ops are required to ensure that when VIDIOC_DQBUF has to wait for buffers to arrive, the queue lock is correctly released and retaken. Otherwise the wait for a buffer would block all other queue ioctls. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Cc: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 2 ++ 1 file changed, 2 insertions(+)