* [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage
@ 2026-03-11 8:02 Guoniu Zhou
2026-03-11 8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou
2026-03-11 8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou
0 siblings, 2 replies; 9+ messages in thread
From: Guoniu Zhou @ 2026-03-11 8:02 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger,
Guoniu Zhou
This series fixes a hang issue when capturing single frames and improves
buffer utilization by prioritizing user buffers over discard buffers.
Patch 1 reduces min_queued_buffers to allow streaming with a single buffer,
fixing hangs in applications like libcamera's cam tool.
Patch 2 changes the buffer selection logic to use pending user buffers first,
minimizing unnecessary frame drops at stream start.
Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
---
Guoniu Zhou (2):
media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1
media: nxp: imx8-isi: Prioritize pending buffers over discard buffers
drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
---
base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
change-id: 20260310-isi_min_buffers-4b490a124223
Best regards,
--
Guoniu Zhou <guoniu.zhou@nxp.com>
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 2026-03-11 8:02 [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage Guoniu Zhou @ 2026-03-11 8:02 ` Guoniu Zhou 2026-03-11 12:50 ` Jacopo Mondi 2026-03-11 15:22 ` Frank Li 2026-03-11 8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou 1 sibling, 2 replies; 9+ messages in thread From: Guoniu Zhou @ 2026-03-11 8:02 UTC (permalink / raw) To: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou From: Guoniu Zhou <guoniu.zhou@nxp.com> Fix a hang issue when capturing a single frame with applications like cam in libcamera. It would hang waiting for the driver to complete the buffer, but streaming never starts because min_queued_buffers was set to 2. The ISI module uses a ping-pong buffer mechanism that requires two buffers to be programmed at all times. However, when fewer than 2 user buffers are available, the driver use internal discard buffers to fill the remaining slot(s). Reduce minimum queued buffers from 2 to 1 allows streaming to start with a single buffer providing more flexibility for applications. Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> --- drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c index 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b349234313c5e103b7802 100644 --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe, q->mem_ops = &vb2_dma_contig_memops; q->buf_struct_size = sizeof(struct mxc_isi_buffer); q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; - q->min_queued_buffers = 2; + q->min_queued_buffers = 1; q->lock = &video->lock; q->dev = pipe->isi->dev; -- 2.34.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 2026-03-11 8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou @ 2026-03-11 12:50 ` Jacopo Mondi 2026-03-12 2:21 ` G.N. Zhou (OSS) 2026-03-11 15:22 ` Frank Li 1 sibling, 1 reply; 9+ messages in thread From: Jacopo Mondi @ 2026-03-11 12:50 UTC (permalink / raw) To: Guoniu Zhou Cc: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou Hello Guoniu On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote: > From: Guoniu Zhou <guoniu.zhou@nxp.com> > > Fix a hang issue when capturing a single frame with applications like cam > in libcamera. It would hang waiting for the driver to complete the buffer, > but streaming never starts because min_queued_buffers was set to 2. > > The ISI module uses a ping-pong buffer mechanism that requires two buffers > to be programmed at all times. However, when fewer than 2 user buffers are > available, the driver use internal discard buffers to fill the remaining > slot(s). Reduce minimum queued buffers from 2 to 1 allows streaming to Does it mean the ISI can use internal buffer discard for both buffer slots ? Can we make min_queued_buffers == 0 ? > start with a single buffer providing more flexibility for applications. > > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> > --- > drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > index 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b349234313c5e103b7802 100644 > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe, > q->mem_ops = &vb2_dma_contig_memops; > q->buf_struct_size = sizeof(struct mxc_isi_buffer); > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > - q->min_queued_buffers = 2; > + q->min_queued_buffers = 1; > q->lock = &video->lock; > q->dev = pipe->isi->dev; > > > -- > 2.34.1 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 2026-03-11 12:50 ` Jacopo Mondi @ 2026-03-12 2:21 ` G.N. Zhou (OSS) 0 siblings, 0 replies; 9+ messages in thread From: G.N. Zhou (OSS) @ 2026-03-12 2:21 UTC (permalink / raw) To: Jacopo Mondi, G.N. Zhou (OSS) Cc: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Alexi Birlinger, G.N. Zhou Hi Jacopo, Thanks for your review. > -----Original Message----- > From: Jacopo Mondi <jacopo.mondi@ideasonboard.com> > Sent: Wednesday, March 11, 2026 8:51 PM > To: G.N. Zhou (OSS) <guoniu.zhou@oss.nxp.com> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>; Mauro Carvalho > Chehab <mchehab@kernel.org>; Frank Li <frank.li@nxp.com>; Sascha Hauer > <s.hauer@pengutronix.de>; Pengutronix Kernel Team > <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; linux- > media@vger.kernel.org; imx@lists.linux.dev; linux-arm- > kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Alexi Birlinger > <alexi.birlinger@nxp.com>; G.N. Zhou <guoniu.zhou@nxp.com> > Subject: Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers > from 2 to 1 > > Hello Guoniu > > On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote: > > From: Guoniu Zhou <guoniu.zhou@nxp.com> > > > > Fix a hang issue when capturing a single frame with applications like > > cam in libcamera. It would hang waiting for the driver to complete the > > buffer, but streaming never starts because min_queued_buffers was set to 2. > > > > The ISI module uses a ping-pong buffer mechanism that requires two > > buffers to be programmed at all times. However, when fewer than 2 user > > buffers are available, the driver use internal discard buffers to fill > > the remaining slot(s). Reduce minimum queued buffers from 2 to 1 > > allows streaming to > > Does it mean the ISI can use internal buffer discard for both buffer slots ? Can > we make min_queued_buffers == 0 ? Yes, will update in next version. > > > start with a single buffer providing more flexibility for applications. > > > > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> > > --- > > drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > index > > > 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b3492 > 3431 > > 3c5e103b7802 100644 > > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe > *pipe, > > q->mem_ops = &vb2_dma_contig_memops; > > q->buf_struct_size = sizeof(struct mxc_isi_buffer); > > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > > - q->min_queued_buffers = 2; > > + q->min_queued_buffers = 1; > > q->lock = &video->lock; > > q->dev = pipe->isi->dev; > > > > > > -- > > 2.34.1 > > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 2026-03-11 8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou 2026-03-11 12:50 ` Jacopo Mondi @ 2026-03-11 15:22 ` Frank Li 2026-03-12 2:22 ` G.N. Zhou (OSS) 1 sibling, 1 reply; 9+ messages in thread From: Frank Li @ 2026-03-11 15:22 UTC (permalink / raw) To: Guoniu Zhou Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote: > From: Guoniu Zhou <guoniu.zhou@nxp.com> > > Fix a hang issue when capturing a single frame with applications like cam > in libcamera. It would hang waiting for the driver to complete the buffer, > but streaming never starts because min_queued_buffers was set to 2. > > The ISI module uses a ping-pong buffer mechanism that requires two buffers > to be programmed at all times. However, when fewer than 2 user buffers are > available, the driver use internal discard buffers to fill the remaining > slot(s). Reduce minimum queued buffers from 2 to 1 allows streaming to > start with a single buffer providing more flexibility for applications. > Fix tags? Frank > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> > --- > drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > index 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b349234313c5e103b7802 100644 > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe, > q->mem_ops = &vb2_dma_contig_memops; > q->buf_struct_size = sizeof(struct mxc_isi_buffer); > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > - q->min_queued_buffers = 2; > + q->min_queued_buffers = 1; > q->lock = &video->lock; > q->dev = pipe->isi->dev; > > > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 2026-03-11 15:22 ` Frank Li @ 2026-03-12 2:22 ` G.N. Zhou (OSS) 0 siblings, 0 replies; 9+ messages in thread From: G.N. Zhou (OSS) @ 2026-03-12 2:22 UTC (permalink / raw) To: Frank Li, G.N. Zhou (OSS) Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Alexi Birlinger, G.N. Zhou Hi Frank, Thanks for your review. > -----Original Message----- > From: Frank Li <frank.li@nxp.com> > Sent: Wednesday, March 11, 2026 11:22 PM > To: G.N. Zhou (OSS) <guoniu.zhou@oss.nxp.com> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>; Mauro Carvalho > Chehab <mchehab@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>; > Pengutronix Kernel Team <kernel@pengutronix.de>; Fabio Estevam > <festevam@gmail.com>; linux-media@vger.kernel.org; imx@lists.linux.dev; > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Alexi > Birlinger <alexi.birlinger@nxp.com>; G.N. Zhou <guoniu.zhou@nxp.com> > Subject: Re: [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers > from 2 to 1 > > On Wed, Mar 11, 2026 at 04:02:58PM +0800, Guoniu Zhou wrote: > > From: Guoniu Zhou <guoniu.zhou@nxp.com> > > > > Fix a hang issue when capturing a single frame with applications like > > cam in libcamera. It would hang waiting for the driver to complete the > > buffer, but streaming never starts because min_queued_buffers was set to 2. > > > > The ISI module uses a ping-pong buffer mechanism that requires two > > buffers to be programmed at all times. However, when fewer than 2 user > > buffers are available, the driver use internal discard buffers to fill > > the remaining slot(s). Reduce minimum queued buffers from 2 to 1 > > allows streaming to start with a single buffer providing more flexibility for > applications. > > > > Fix tags? Okay, will add in next version. > > Frank > > > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> > > --- > > drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > index > > > 13682bf6e9f8895bb9eb1f92d5f74b0d5968544e..2405baf21594cd18cf2b3492 > 3431 > > 3c5e103b7802 100644 > > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > @@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe > *pipe, > > q->mem_ops = &vb2_dma_contig_memops; > > q->buf_struct_size = sizeof(struct mxc_isi_buffer); > > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > > - q->min_queued_buffers = 2; > > + q->min_queued_buffers = 1; > > q->lock = &video->lock; > > q->dev = pipe->isi->dev; > > > > > > -- > > 2.34.1 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers 2026-03-11 8:02 [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage Guoniu Zhou 2026-03-11 8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou @ 2026-03-11 8:02 ` Guoniu Zhou 2026-03-11 15:33 ` Frank Li 1 sibling, 1 reply; 9+ messages in thread From: Guoniu Zhou @ 2026-03-11 8:02 UTC (permalink / raw) To: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou From: Guoniu Zhou <guoniu.zhou@nxp.com> Change the buffer selection logic to use pending buffers first (up to the number available), and only use discard buffers to fill remaining slots when insufficient pending buffers are queued. This ensures user buffers are utilized as soon as possible, improving efficiency and reducing the number of discarded frames at stream start. For example: - 2 pending buffers: both slots use pending buffers - 1 pending buffer: first slot uses pending, second uses discard - 0 pending buffers: both slots use discard buffers Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> --- drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c index 2405baf21594cd18cf2b349234313c5e103b7802..53f4f74369f7855fe6b6f372294ee569f40a8ae6 100644 --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c @@ -786,13 +786,14 @@ static void mxc_isi_video_queue_first_buffers(struct mxc_isi_video *video) : list_is_singular(&video->out_pending) ? 1 : 0; + /* Queue buffers: prioritize pending buffers, then discard buffers */ for (i = 0; i < 2; ++i) { enum mxc_isi_buf_id buf_id = i == 0 ? MXC_ISI_BUF1 : MXC_ISI_BUF2; struct mxc_isi_buffer *buf; struct list_head *list; - list = i < discard ? &video->out_discard : &video->out_pending; + list = (i < 2 - discard) ? &video->out_pending : &video->out_discard; buf = list_first_entry(list, struct mxc_isi_buffer, list); mxc_isi_channel_set_outbuf(video->pipe, buf->dma_addrs, buf_id); -- 2.34.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers 2026-03-11 8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou @ 2026-03-11 15:33 ` Frank Li 2026-03-12 2:29 ` G.N. Zhou (OSS) 0 siblings, 1 reply; 9+ messages in thread From: Frank Li @ 2026-03-11 15:33 UTC (permalink / raw) To: Guoniu Zhou Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-media, imx, linux-arm-kernel, linux-kernel, Alexi Birlinger, Guoniu Zhou On Wed, Mar 11, 2026 at 04:02:59PM +0800, Guoniu Zhou wrote: > From: Guoniu Zhou <guoniu.zhou@nxp.com> > > Change the buffer selection logic to use pending buffers first (up to the > number available), and only use discard buffers to fill remaining slots > when insufficient pending buffers are queued. This ensures user buffers Nit: Ensure user ... > are utilized as soon as possible, improving efficiency and reducing the > number of discarded frames at stream start. > > For example: > - 2 pending buffers: both slots use pending buffers > - 1 pending buffer: first slot uses pending, second uses discard > - 0 pending buffers: both slots use discard buffers > > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> > --- > drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > index 2405baf21594cd18cf2b349234313c5e103b7802..53f4f74369f7855fe6b6f372294ee569f40a8ae6 100644 > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > @@ -786,13 +786,14 @@ static void mxc_isi_video_queue_first_buffers(struct mxc_isi_video *video) > : list_is_singular(&video->out_pending) ? 1 > : 0; > > + /* Queue buffers: prioritize pending buffers, then discard buffers */ > for (i = 0; i < 2; ++i) { > enum mxc_isi_buf_id buf_id = i == 0 ? MXC_ISI_BUF1 > : MXC_ISI_BUF2; > struct mxc_isi_buffer *buf; > struct list_head *list; > > - list = i < discard ? &video->out_discard : &video->out_pending; > + list = (i < 2 - discard) ? &video->out_pending : &video->out_discard; Is (2 - discard) the number of pending buffers? put commit's example as comments here. Frank > buf = list_first_entry(list, struct mxc_isi_buffer, list); > > mxc_isi_channel_set_outbuf(video->pipe, buf->dma_addrs, buf_id); > > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers 2026-03-11 15:33 ` Frank Li @ 2026-03-12 2:29 ` G.N. Zhou (OSS) 0 siblings, 0 replies; 9+ messages in thread From: G.N. Zhou (OSS) @ 2026-03-12 2:29 UTC (permalink / raw) To: Frank Li, G.N. Zhou (OSS) Cc: Laurent Pinchart, Mauro Carvalho Chehab, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Alexi Birlinger, G.N. Zhou Hi Frank, Thanks for your review. > -----Original Message----- > From: Frank Li <frank.li@nxp.com> > Sent: Wednesday, March 11, 2026 11:34 PM > To: G.N. Zhou (OSS) <guoniu.zhou@oss.nxp.com> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>; Mauro Carvalho > Chehab <mchehab@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>; > Pengutronix Kernel Team <kernel@pengutronix.de>; Fabio Estevam > <festevam@gmail.com>; linux-media@vger.kernel.org; imx@lists.linux.dev; > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Alexi > Birlinger <alexi.birlinger@nxp.com>; G.N. Zhou <guoniu.zhou@nxp.com> > Subject: Re: [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over > discard buffers > > On Wed, Mar 11, 2026 at 04:02:59PM +0800, Guoniu Zhou wrote: > > From: Guoniu Zhou <guoniu.zhou@nxp.com> > > > > Change the buffer selection logic to use pending buffers first (up to > > the number available), and only use discard buffers to fill remaining > > slots when insufficient pending buffers are queued. This ensures user > > buffers > > Nit: Ensure user ... Will update. > > > are utilized as soon as possible, improving efficiency and reducing > > the number of discarded frames at stream start. > > > > For example: > > - 2 pending buffers: both slots use pending buffers > > - 1 pending buffer: first slot uses pending, second uses discard > > - 0 pending buffers: both slots use discard buffers > > > > Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com> > > --- > > drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > index > > > 2405baf21594cd18cf2b349234313c5e103b7802..53f4f74369f7855fe6b6f372 > 294e > > e569f40a8ae6 100644 > > --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c > > @@ -786,13 +786,14 @@ static void > mxc_isi_video_queue_first_buffers(struct mxc_isi_video *video) > > : list_is_singular(&video->out_pending) ? 1 > > : 0; > > > > + /* Queue buffers: prioritize pending buffers, then discard buffers > > +*/ > > for (i = 0; i < 2; ++i) { > > enum mxc_isi_buf_id buf_id = i == 0 ? MXC_ISI_BUF1 > > : MXC_ISI_BUF2; > > struct mxc_isi_buffer *buf; > > struct list_head *list; > > > > - list = i < discard ? &video->out_discard : &video->out_pending; > > + list = (i < 2 - discard) ? &video->out_pending : > > +&video->out_discard; > > Is (2 - discard) the number of pending buffers? put commit's example as > comments here. Yes, will update in next version. > > Frank > > > buf = list_first_entry(list, struct mxc_isi_buffer, list); > > > > mxc_isi_channel_set_outbuf(video->pipe, buf->dma_addrs, > buf_id); > > > > -- > > 2.34.1 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-03-12 2:29 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-11 8:02 [PATCH 0/2] media: nxp: imx8-isi: Fix single frame capture and optimize buffer usage Guoniu Zhou 2026-03-11 8:02 ` [PATCH 1/2] media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 1 Guoniu Zhou 2026-03-11 12:50 ` Jacopo Mondi 2026-03-12 2:21 ` G.N. Zhou (OSS) 2026-03-11 15:22 ` Frank Li 2026-03-12 2:22 ` G.N. Zhou (OSS) 2026-03-11 8:02 ` [PATCH 2/2] media: nxp: imx8-isi: Prioritize pending buffers over discard buffers Guoniu Zhou 2026-03-11 15:33 ` Frank Li 2026-03-12 2:29 ` G.N. Zhou (OSS)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox