All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
To: mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com,
	ming.qian@nxp.com, ezequiel@vanguardiasur.com.ar,
	p.zabel@pengutronix.de, gregkh@linuxfoundation.org,
	hverkuil-cisco@xs4all.nl, nicolas.dufresne@collabora.com
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-rockchip@lists.infradead.org,
	linux-staging@lists.linux.dev, kernel@collabora.com,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>
Subject: [PATCH v9 50/53] media: core: Free range of buffers
Date: Mon,  2 Oct 2023 14:06:14 +0200	[thread overview]
Message-ID: <20231002120617.119602-51-benjamin.gaignard@collabora.com> (raw)
In-Reply-To: <20231002120617.119602-1-benjamin.gaignard@collabora.com>

Improve __vb2_queue_free() and __vb2_free_mem() to free
range of buffers and not only the last few buffers.
Intoduce starting index to be flexible on range and change the loops
according to this parameters.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
version 9:
- fix compilation issue

 .../media/common/videobuf2/videobuf2-core.c   | 40 ++++++++-----------
 1 file changed, 17 insertions(+), 23 deletions(-)

diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
index 4cbc17e8b53e..b9b8a44b378c 100644
--- a/drivers/media/common/videobuf2/videobuf2-core.c
+++ b/drivers/media/common/videobuf2/videobuf2-core.c
@@ -515,13 +515,12 @@ static int __vb2_queue_alloc(struct vb2_queue *q, enum vb2_memory memory,
 /*
  * __vb2_free_mem() - release all video buffer memory for a given queue
  */
-static void __vb2_free_mem(struct vb2_queue *q, unsigned int buffers)
+static void __vb2_free_mem(struct vb2_queue *q, unsigned int start, unsigned int count)
 {
-	unsigned int buffer = 0;
-	long i = q->max_num_buffers;
+	unsigned int i;
 	struct vb2_buffer *vb;
 
-	for (i = q->max_num_buffers; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		vb = vb2_get_buffer(q, i);
 		if (!vb)
 			continue;
@@ -533,36 +532,32 @@ static void __vb2_free_mem(struct vb2_queue *q, unsigned int buffers)
 			__vb2_buf_dmabuf_put(vb);
 		else
 			__vb2_buf_userptr_put(vb);
-		buffer++;
 	}
 }
 
 /*
- * __vb2_queue_free() - free buffers at the end of the queue - video memory and
+ * __vb2_queue_free() - free count buffers from start index of the queue - video memory and
  * related information, if no buffers are left return the queue to an
  * uninitialized state. Might be called even if the queue has already been freed.
  */
-static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
+static void __vb2_queue_free(struct vb2_queue *q, unsigned int start, unsigned int count)
 {
-	unsigned int buffer;
-	long i = q->max_num_buffers;
+	unsigned int i;
 
 	lockdep_assert_held(&q->mmap_lock);
 
 	/* Call driver-provided cleanup function for each buffer, if provided */
-	for (i = q->max_num_buffers, buffer = 0; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 
 		if (!vb)
 			continue;
-		if (vb->planes[0].mem_priv) {
+		if (vb->planes[0].mem_priv)
 			call_void_vb_qop(vb, buf_cleanup, vb);
-			buffer++;
-		}
 	}
 
 	/* Release video buffer memory */
-	__vb2_free_mem(q, buffers);
+	__vb2_free_mem(q, start, count);
 
 #ifdef CONFIG_VIDEO_ADV_DEBUG
 	/*
@@ -595,8 +590,8 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 		q->cnt_stop_streaming = 0;
 		q->cnt_unprepare_streaming = 0;
 	}
-	for (buffer = 0; buffer < q->max_num_buffers; buffer++) {
-		struct vb2_buffer *vb = vb2_get_buffer(q, buffer);
+	for (i = 0; i < q->max_num_buffers; i++) {
+		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 		bool unbalanced;
 
 		if (!vb)
@@ -613,7 +608,7 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 
 		if (unbalanced) {
 			pr_info("unbalanced counters for queue %p, buffer %d:\n",
-				q, buffer);
+				q, i);
 			if (vb->cnt_buf_init != vb->cnt_buf_cleanup)
 				pr_info("     buf_init: %u buf_cleanup: %u\n",
 					vb->cnt_buf_init, vb->cnt_buf_cleanup);
@@ -647,7 +642,7 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 #endif
 
 	/* Free vb2 buffers */
-	for (i = q->max_num_buffers, buffer = 0; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 
 		if (!vb)
@@ -655,7 +650,6 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 
 		vb2_queue_remove_buffer(vb);
 		kfree(vb);
-		buffer++;
 	}
 
 	if (!vb2_get_num_buffers(q)) {
@@ -849,7 +843,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * queued without ever calling STREAMON.
 		 */
 		__vb2_queue_cancel(q);
-		__vb2_queue_free(q, q_num_bufs);
+		__vb2_queue_free(q, 0, q_num_bufs);
 		mutex_unlock(&q->mmap_lock);
 
 		/*
@@ -959,7 +953,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * from already queued buffers and it will reset q->memory to
 		 * VB2_MEMORY_UNKNOWN.
 		 */
-		__vb2_queue_free(q, allocated_buffers);
+		__vb2_queue_free(q, first_index, allocated_buffers);
 		mutex_unlock(&q->mmap_lock);
 		return ret;
 	}
@@ -1099,7 +1093,7 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * from already queued buffers and it will reset q->memory to
 		 * VB2_MEMORY_UNKNOWN.
 		 */
-		__vb2_queue_free(q, allocated_buffers);
+		__vb2_queue_free(q, *first_index, allocated_buffers);
 		mutex_unlock(&q->mmap_lock);
 		return -ENOMEM;
 	}
@@ -2565,7 +2559,7 @@ void vb2_core_queue_release(struct vb2_queue *q)
 	__vb2_cleanup_fileio(q);
 	__vb2_queue_cancel(q);
 	mutex_lock(&q->mmap_lock);
-	__vb2_queue_free(q, q->max_num_buffers);
+	__vb2_queue_free(q, 0, q->max_num_buffers);
 	kfree(q->bufs);
 	q->bufs = NULL;
 	bitmap_free(q->bufs_bitmap);
-- 
2.39.2


WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
To: mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com,
	ming.qian@nxp.com, ezequiel@vanguardiasur.com.ar,
	p.zabel@pengutronix.de, gregkh@linuxfoundation.org,
	hverkuil-cisco@xs4all.nl, nicolas.dufresne@collabora.com
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-rockchip@lists.infradead.org,
	linux-staging@lists.linux.dev, kernel@collabora.com,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>
Subject: [PATCH v9 50/53] media: core: Free range of buffers
Date: Mon,  2 Oct 2023 14:06:14 +0200	[thread overview]
Message-ID: <20231002120617.119602-51-benjamin.gaignard@collabora.com> (raw)
In-Reply-To: <20231002120617.119602-1-benjamin.gaignard@collabora.com>

Improve __vb2_queue_free() and __vb2_free_mem() to free
range of buffers and not only the last few buffers.
Intoduce starting index to be flexible on range and change the loops
according to this parameters.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
version 9:
- fix compilation issue

 .../media/common/videobuf2/videobuf2-core.c   | 40 ++++++++-----------
 1 file changed, 17 insertions(+), 23 deletions(-)

diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
index 4cbc17e8b53e..b9b8a44b378c 100644
--- a/drivers/media/common/videobuf2/videobuf2-core.c
+++ b/drivers/media/common/videobuf2/videobuf2-core.c
@@ -515,13 +515,12 @@ static int __vb2_queue_alloc(struct vb2_queue *q, enum vb2_memory memory,
 /*
  * __vb2_free_mem() - release all video buffer memory for a given queue
  */
-static void __vb2_free_mem(struct vb2_queue *q, unsigned int buffers)
+static void __vb2_free_mem(struct vb2_queue *q, unsigned int start, unsigned int count)
 {
-	unsigned int buffer = 0;
-	long i = q->max_num_buffers;
+	unsigned int i;
 	struct vb2_buffer *vb;
 
-	for (i = q->max_num_buffers; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		vb = vb2_get_buffer(q, i);
 		if (!vb)
 			continue;
@@ -533,36 +532,32 @@ static void __vb2_free_mem(struct vb2_queue *q, unsigned int buffers)
 			__vb2_buf_dmabuf_put(vb);
 		else
 			__vb2_buf_userptr_put(vb);
-		buffer++;
 	}
 }
 
 /*
- * __vb2_queue_free() - free buffers at the end of the queue - video memory and
+ * __vb2_queue_free() - free count buffers from start index of the queue - video memory and
  * related information, if no buffers are left return the queue to an
  * uninitialized state. Might be called even if the queue has already been freed.
  */
-static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
+static void __vb2_queue_free(struct vb2_queue *q, unsigned int start, unsigned int count)
 {
-	unsigned int buffer;
-	long i = q->max_num_buffers;
+	unsigned int i;
 
 	lockdep_assert_held(&q->mmap_lock);
 
 	/* Call driver-provided cleanup function for each buffer, if provided */
-	for (i = q->max_num_buffers, buffer = 0; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 
 		if (!vb)
 			continue;
-		if (vb->planes[0].mem_priv) {
+		if (vb->planes[0].mem_priv)
 			call_void_vb_qop(vb, buf_cleanup, vb);
-			buffer++;
-		}
 	}
 
 	/* Release video buffer memory */
-	__vb2_free_mem(q, buffers);
+	__vb2_free_mem(q, start, count);
 
 #ifdef CONFIG_VIDEO_ADV_DEBUG
 	/*
@@ -595,8 +590,8 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 		q->cnt_stop_streaming = 0;
 		q->cnt_unprepare_streaming = 0;
 	}
-	for (buffer = 0; buffer < q->max_num_buffers; buffer++) {
-		struct vb2_buffer *vb = vb2_get_buffer(q, buffer);
+	for (i = 0; i < q->max_num_buffers; i++) {
+		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 		bool unbalanced;
 
 		if (!vb)
@@ -613,7 +608,7 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 
 		if (unbalanced) {
 			pr_info("unbalanced counters for queue %p, buffer %d:\n",
-				q, buffer);
+				q, i);
 			if (vb->cnt_buf_init != vb->cnt_buf_cleanup)
 				pr_info("     buf_init: %u buf_cleanup: %u\n",
 					vb->cnt_buf_init, vb->cnt_buf_cleanup);
@@ -647,7 +642,7 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 #endif
 
 	/* Free vb2 buffers */
-	for (i = q->max_num_buffers, buffer = 0; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 
 		if (!vb)
@@ -655,7 +650,6 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 
 		vb2_queue_remove_buffer(vb);
 		kfree(vb);
-		buffer++;
 	}
 
 	if (!vb2_get_num_buffers(q)) {
@@ -849,7 +843,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * queued without ever calling STREAMON.
 		 */
 		__vb2_queue_cancel(q);
-		__vb2_queue_free(q, q_num_bufs);
+		__vb2_queue_free(q, 0, q_num_bufs);
 		mutex_unlock(&q->mmap_lock);
 
 		/*
@@ -959,7 +953,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * from already queued buffers and it will reset q->memory to
 		 * VB2_MEMORY_UNKNOWN.
 		 */
-		__vb2_queue_free(q, allocated_buffers);
+		__vb2_queue_free(q, first_index, allocated_buffers);
 		mutex_unlock(&q->mmap_lock);
 		return ret;
 	}
@@ -1099,7 +1093,7 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * from already queued buffers and it will reset q->memory to
 		 * VB2_MEMORY_UNKNOWN.
 		 */
-		__vb2_queue_free(q, allocated_buffers);
+		__vb2_queue_free(q, *first_index, allocated_buffers);
 		mutex_unlock(&q->mmap_lock);
 		return -ENOMEM;
 	}
@@ -2565,7 +2559,7 @@ void vb2_core_queue_release(struct vb2_queue *q)
 	__vb2_cleanup_fileio(q);
 	__vb2_queue_cancel(q);
 	mutex_lock(&q->mmap_lock);
-	__vb2_queue_free(q, q->max_num_buffers);
+	__vb2_queue_free(q, 0, q->max_num_buffers);
 	kfree(q->bufs);
 	q->bufs = NULL;
 	bitmap_free(q->bufs_bitmap);
-- 
2.39.2


_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
To: mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com,
	ming.qian@nxp.com, ezequiel@vanguardiasur.com.ar,
	p.zabel@pengutronix.de, gregkh@linuxfoundation.org,
	hverkuil-cisco@xs4all.nl, nicolas.dufresne@collabora.com
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-rockchip@lists.infradead.org,
	linux-staging@lists.linux.dev, kernel@collabora.com,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>
Subject: [PATCH v9 50/53] media: core: Free range of buffers
Date: Mon,  2 Oct 2023 14:06:14 +0200	[thread overview]
Message-ID: <20231002120617.119602-51-benjamin.gaignard@collabora.com> (raw)
In-Reply-To: <20231002120617.119602-1-benjamin.gaignard@collabora.com>

Improve __vb2_queue_free() and __vb2_free_mem() to free
range of buffers and not only the last few buffers.
Intoduce starting index to be flexible on range and change the loops
according to this parameters.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
version 9:
- fix compilation issue

 .../media/common/videobuf2/videobuf2-core.c   | 40 ++++++++-----------
 1 file changed, 17 insertions(+), 23 deletions(-)

diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
index 4cbc17e8b53e..b9b8a44b378c 100644
--- a/drivers/media/common/videobuf2/videobuf2-core.c
+++ b/drivers/media/common/videobuf2/videobuf2-core.c
@@ -515,13 +515,12 @@ static int __vb2_queue_alloc(struct vb2_queue *q, enum vb2_memory memory,
 /*
  * __vb2_free_mem() - release all video buffer memory for a given queue
  */
-static void __vb2_free_mem(struct vb2_queue *q, unsigned int buffers)
+static void __vb2_free_mem(struct vb2_queue *q, unsigned int start, unsigned int count)
 {
-	unsigned int buffer = 0;
-	long i = q->max_num_buffers;
+	unsigned int i;
 	struct vb2_buffer *vb;
 
-	for (i = q->max_num_buffers; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		vb = vb2_get_buffer(q, i);
 		if (!vb)
 			continue;
@@ -533,36 +532,32 @@ static void __vb2_free_mem(struct vb2_queue *q, unsigned int buffers)
 			__vb2_buf_dmabuf_put(vb);
 		else
 			__vb2_buf_userptr_put(vb);
-		buffer++;
 	}
 }
 
 /*
- * __vb2_queue_free() - free buffers at the end of the queue - video memory and
+ * __vb2_queue_free() - free count buffers from start index of the queue - video memory and
  * related information, if no buffers are left return the queue to an
  * uninitialized state. Might be called even if the queue has already been freed.
  */
-static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
+static void __vb2_queue_free(struct vb2_queue *q, unsigned int start, unsigned int count)
 {
-	unsigned int buffer;
-	long i = q->max_num_buffers;
+	unsigned int i;
 
 	lockdep_assert_held(&q->mmap_lock);
 
 	/* Call driver-provided cleanup function for each buffer, if provided */
-	for (i = q->max_num_buffers, buffer = 0; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 
 		if (!vb)
 			continue;
-		if (vb->planes[0].mem_priv) {
+		if (vb->planes[0].mem_priv)
 			call_void_vb_qop(vb, buf_cleanup, vb);
-			buffer++;
-		}
 	}
 
 	/* Release video buffer memory */
-	__vb2_free_mem(q, buffers);
+	__vb2_free_mem(q, start, count);
 
 #ifdef CONFIG_VIDEO_ADV_DEBUG
 	/*
@@ -595,8 +590,8 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 		q->cnt_stop_streaming = 0;
 		q->cnt_unprepare_streaming = 0;
 	}
-	for (buffer = 0; buffer < q->max_num_buffers; buffer++) {
-		struct vb2_buffer *vb = vb2_get_buffer(q, buffer);
+	for (i = 0; i < q->max_num_buffers; i++) {
+		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 		bool unbalanced;
 
 		if (!vb)
@@ -613,7 +608,7 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 
 		if (unbalanced) {
 			pr_info("unbalanced counters for queue %p, buffer %d:\n",
-				q, buffer);
+				q, i);
 			if (vb->cnt_buf_init != vb->cnt_buf_cleanup)
 				pr_info("     buf_init: %u buf_cleanup: %u\n",
 					vb->cnt_buf_init, vb->cnt_buf_cleanup);
@@ -647,7 +642,7 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 #endif
 
 	/* Free vb2 buffers */
-	for (i = q->max_num_buffers, buffer = 0; i >= 0 && buffer < buffers; i--) {
+	for (i = start; i < q->max_num_buffers && i < start + count; i++) {
 		struct vb2_buffer *vb = vb2_get_buffer(q, i);
 
 		if (!vb)
@@ -655,7 +650,6 @@ static void __vb2_queue_free(struct vb2_queue *q, unsigned int buffers)
 
 		vb2_queue_remove_buffer(vb);
 		kfree(vb);
-		buffer++;
 	}
 
 	if (!vb2_get_num_buffers(q)) {
@@ -849,7 +843,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * queued without ever calling STREAMON.
 		 */
 		__vb2_queue_cancel(q);
-		__vb2_queue_free(q, q_num_bufs);
+		__vb2_queue_free(q, 0, q_num_bufs);
 		mutex_unlock(&q->mmap_lock);
 
 		/*
@@ -959,7 +953,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * from already queued buffers and it will reset q->memory to
 		 * VB2_MEMORY_UNKNOWN.
 		 */
-		__vb2_queue_free(q, allocated_buffers);
+		__vb2_queue_free(q, first_index, allocated_buffers);
 		mutex_unlock(&q->mmap_lock);
 		return ret;
 	}
@@ -1099,7 +1093,7 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
 		 * from already queued buffers and it will reset q->memory to
 		 * VB2_MEMORY_UNKNOWN.
 		 */
-		__vb2_queue_free(q, allocated_buffers);
+		__vb2_queue_free(q, *first_index, allocated_buffers);
 		mutex_unlock(&q->mmap_lock);
 		return -ENOMEM;
 	}
@@ -2565,7 +2559,7 @@ void vb2_core_queue_release(struct vb2_queue *q)
 	__vb2_cleanup_fileio(q);
 	__vb2_queue_cancel(q);
 	mutex_lock(&q->mmap_lock);
-	__vb2_queue_free(q, q->max_num_buffers);
+	__vb2_queue_free(q, 0, q->max_num_buffers);
 	kfree(q->bufs);
 	q->bufs = NULL;
 	bitmap_free(q->bufs_bitmap);
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-10-02 12:06 UTC|newest]

Thread overview: 171+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-02 12:05 [PATCH v9 00/53] Add DELETE_BUF ioctl Benjamin Gaignard
2023-10-02 12:05 ` Benjamin Gaignard
2023-10-02 12:05 ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 01/53] media: videobuf2: Rework offset 'cookie' encoding pattern Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 13:46   ` Hans Verkuil
2023-10-02 13:46     ` Hans Verkuil
2023-10-02 13:46     ` Hans Verkuil
2023-10-02 13:57   ` Hans Verkuil
2023-10-02 13:57     ` Hans Verkuil
2023-10-02 13:57     ` Hans Verkuil
2023-10-02 12:05 ` [PATCH v9 02/53] media: videobuf2: Stop spamming kernel log with all queue counter Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 03/53] media: videobuf2: Use vb2_buffer instead of index Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 04/53] media: amphion: Use vb2_get_buffer() instead of directly access to buffers array Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 05/53] media: mediatek: jpeg: " Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 06/53] media: mediatek: vdec: Remove useless loop Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 07/53] media: sti: hva: Use vb2_get_buffer() instead of directly access to buffers array Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 08/53] media: visl: " Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 09/53] media: atomisp: " Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 10/53] media: dvb-core: " Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 11/53] media: videobuf2: Access vb2_queue bufs array through helper functions Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 12/53] media: videobuf2: Be more flexible on the number of queue stored buffers Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 13/53] media: Report the maximum possible number of buffers for the queue Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 14/53] media: test-drivers: vivid: Increase max supported buffers for capture queues Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 15/53] media: test-drivers: vicodec: Increase max supported capture queue buffers Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 16/53] media: verisilicon: Refactor postprocessor to store more buffers Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 17/53] media: verisilicon: Store chroma and motion vectors offset Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 18/53] media: verisilicon: g2: Use common helpers to compute chroma and mv offsets Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 19/53] media: verisilicon: vp9: Allow to change resolution while streaming Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 20/53] media: Remove duplicated index vs q->num_buffers check Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 21/53] media: core: Add helper to get queue number of buffers Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 22/53] media: dvb-core: Do not initialize twice queue num_buffer field Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 23/53] media: dvb-frontends: rtl2832_srd: Use queue min_buffers_needed field Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 24/53] media: video-i2c: Set min_buffers_needed to 2 Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 25/53] media: pci: cx18: Set correct value to min_buffers_needed field Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 26/53] media: pci: dt3155: Remove useless check Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 27/53] media: pci: netup_unidvb: Remove useless number of buffers check Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 28/53] media: pci: tw68: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 29/53] media: pci: tw686x: Set min_buffers_needed to 3 Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 30/53] media: amphion: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 31/53] media: coda: " Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 32/53] media: mediatek: vcodec: " Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 33/53] media: nxp: " Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 34/53] media: renesas: Set min_buffers_needed to 16 Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05 ` [PATCH v9 35/53] media: ti: Use queue min_buffers_needed field to set the min number of buffers Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:05   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 36/53] media: verisilicon: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 37/53] media: test-drivers: " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 38/53] media: usb: airspy: Set min_buffers_needed to 8 Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 39/53] media: usb: cx231xx: Set min_buffers_needed to CX231XX_MIN_BUF Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 40/53] media: usb: hackrf: Set min_buffers_needed to 8 Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 41/53] media: usb: usbtv: Set min_buffers_needed to 2 Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 42/53] media: atomisp: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 43/53] media: imx: " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 44/53] media: meson: vdec: " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 45/53] touchscreen: sur40: " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 46/53] sample: v4l: " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 47/53] media: cedrus: " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 48/53] media: core: Rework how create_buf index returned value is computed Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 49/53] media: core: Add bitmap manage bufs array entries Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` Benjamin Gaignard [this message]
2023-10-02 12:06   ` [PATCH v9 50/53] media: core: Free range of buffers Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 51/53] media: v4l2: Add DELETE_BUFS ioctl Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 52/53] media: v4l2: Add mem2mem helpers for " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06 ` [PATCH v9 53/53] media: test-drivers: Use helper " Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 12:06   ` Benjamin Gaignard
2023-10-02 14:46 ` [PATCH v9 00/53] Add DELETE_BUF ioctl Hans Verkuil
2023-10-02 14:46   ` Hans Verkuil
2023-10-02 14:46   ` Hans Verkuil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231002120617.119602-51-benjamin.gaignard@collabora.com \
    --to=benjamin.gaignard@collabora.com \
    --cc=ezequiel@vanguardiasur.com.ar \
    --cc=gregkh@linuxfoundation.org \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=kernel@collabora.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=m.szyprowski@samsung.com \
    --cc=mchehab@kernel.org \
    --cc=ming.qian@nxp.com \
    --cc=nicolas.dufresne@collabora.com \
    --cc=p.zabel@pengutronix.de \
    --cc=tfiga@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.