[3/4] media: pisp_be: add missing wait_prepare/finish ops

Message ID dbe984e9d94781de82a157e96274db04774cbc27.1725265884.git.hverkuil-cisco@xs4all.nl (mailing list archive)
State New
Headers
Series media: add missing wait_prepare/finish ops |

Commit Message

Hans Verkuil Sept. 2, 2024, 8:31 a.m. UTC
  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(+)
  

Comments

Jacopo Mondi Sept. 2, 2024, 11:22 a.m. UTC | #1
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
>
>
  

Patch

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 = {