>-----Original Message-----
>From: Jacopo Mondi <[email protected]>
>Sent: Saturday, August 2, 2025 5:23 PM
>To: Mauro Carvalho Chehab <[email protected]>; Devarsh Thakkar
><[email protected]>; Benoit Parrot <[email protected]>; Hans Verkuil
><[email protected]>; Mike Isely <[email protected]>; Laurent Pinchart
><[email protected]>; Hans de Goede <[email protected]>;
>Parthiban Veerasooran <[email protected]>; Christian
>Gromm <[email protected]>; Greg Kroah-Hartman
><[email protected]>; Alex Shi <[email protected]>; Yanteng Si
><[email protected]>; Dongliang Mu <[email protected]>; Jonathan
>Corbet <[email protected]>; Tomasz Figa <[email protected]>; Marek
>Szyprowski <[email protected]>; Andy Walls
><[email protected]>; Michael Tretter <[email protected]>;
>Pengutronix Kernel Team <[email protected]>; Bin Liu
><[email protected]>; Matthias Brugger <[email protected]>;
>AngeloGioacchino Del Regno <[email protected]>;
>Dmitry Osipenko <[email protected]>; Thierry Reding
><[email protected]>; Jonathan Hunter <[email protected]>;
>Mirela Rabulea <[email protected]>; Shawn Guo
><[email protected]>; Sascha Hauer <[email protected]>; Fabio
>Estevam <[email protected]>; Kieran Bingham
><[email protected]>; Michal Simek
><[email protected]>; Ming Qian <[email protected]>; Eagle Zhou
><[email protected]>; Xavier Roumegue (OSS)
><[email protected]>; Philipp Zabel <[email protected]>;
>Vikash Garodia <[email protected]>; Dikshita Agarwal
><[email protected]>; Abhinav Kumar <[email protected]>;
>Bryan O'Donoghue <[email protected]>; Sylwester Nawrocki
><[email protected]>; Jernej Skrabec <[email protected]>;
>Chen-Yu Tsai <[email protected]>; Samuel Holland <[email protected]>;
>Daniel Almeida <[email protected]>; Neil Armstrong
><[email protected]>; Kevin Hilman <[email protected]>; Jerome
>Brunet <[email protected]>; Martin Blumenstingl
><[email protected]>; Nas Chung
><[email protected]>; Jackson Lee
><[email protected]>; Minghsiu Tsai
><[email protected]>; Houlong Wei <[email protected]>;
>Andrew-CT Chen <[email protected]>; Tiffany Lin
><[email protected]>; Yunfei Dong <[email protected]>;
>Geert Uytterhoeven <[email protected]>; Magnus Damm
><[email protected]>; Mikhail Ulyanov
><[email protected]>; Jacob Chen <jacob-
>[email protected]>; Ezequiel Garcia <[email protected]>; Heiko
>Stuebner <[email protected]>; Detlev Casanova
><[email protected]>; Krzysztof Kozlowski <[email protected]>;
>Alim Akhtar <[email protected]>; Sylwester Nawrocki
><[email protected]>; Łukasz Stelmach <[email protected]>;
>Andrzej Pietrasiewicz <[email protected]>; Jacek Anaszewski
><[email protected]>; Andrzej Hajda <[email protected]>;
>Fabien Dessenne <[email protected]>; Hugues Fruchet
><[email protected]>; Jean-Christophe Trotin <jean-
>[email protected]>; Maxime Coquelin
><[email protected]>; Alexandre Torgue
><[email protected]>; Nicolas Dufresne
><[email protected]>; Benjamin Gaignard
><[email protected]>; Steve Longerbeam
><[email protected]>; Maxime Ripard <[email protected]>; Paul
>Kocialkowski <[email protected]>; Niklas Söderlund
><[email protected]>; Robert Foss <[email protected]>; Todor
>Tomov <[email protected]>; Vladimir Zapolskiy
><[email protected]>; Corentin Labbe <[email protected]>;
>Sakari Ailus <[email protected]>; Bingbu Cao
><[email protected]>; Tianshu Qiu <[email protected]>; Stanislaw
>Gruszka <[email protected]>
>Cc: [email protected]; [email protected]; linux-
>[email protected]; [email protected]; linux-arm-
>[email protected]; [email protected]; linux-
>[email protected]; [email protected]; [email protected];
>[email protected]; [email protected]; linux-
>[email protected]; [email protected]; linux-
>[email protected]; [email protected]; linux-
>[email protected]; [email protected];
>Jacopo Mondi <[email protected]>
>Subject: [EXT] [PATCH 14/65] media: amphion: Delete v4l2_fh synchronously
>in .release()
>
>Caution: This is an external email. Please take care when clicking links or
>opening attachments. When in doubt, report the message using the 'Report
>this email' button
>
>
>From: Laurent Pinchart <[email protected]>
>
>The v4l2_fh initialized and added in vpu_v4l2_open() is delete and cleaned up
>when the last reference to the vpu_inst is released. This may happen later than
>at vpu_v4l2_close() time.
>
>Not deleting and cleaning up the v4l2_fh when closing the file handle to the
>video device is not ideal, as the v4l2_fh will still be present in the video 
>device's
>fh_list, and will store a copy of events queued to the video device. There may
>also be other side effects of keeping alive an object that represents an open 
>file
>handle after the file handle is closed.
>
>The v4l2_fh instance is embedded in the vpu_inst structure, and is accessed in
>two different ways:
>
>- in vpu_notify_eos() and vpu_notify_source_change(), to queue V4L2
>  events to the file handle ; and
>
>- through the driver to access the v4l2_fh.m2m_ctx pointer.
>
>The v4l2_fh.m2m_ctx pointer is not touched by v4l2_fh_del() and
>v4l2_fh_exit(). It is set to NULL by the driver when closing the file handle, 
>in
>vpu_v4l2_close().
>
>The vpu_notify_eos() and vpu_notify_source_change() functions are called in
>vpu_set_last_buffer_dequeued() and vdec_handle_resolution_change()
>respectively, only if the v4l2_fh.m2m_ctx pointer is not NULL. There is 
>therefore
>a guarantee that no new event will be queued to the v4l2_fh after
>vpu_v4l2_close() destroys the m2m_ctx.
>
>The vpu_notify_eos() function is also called from vpu_vb2_buf_finish(), which
>is guaranteed to be called for all queued buffers when
>vpu_v4l2_close() calls v4l2_m2m_ctx_release(), and will not be called later.
>
>It is therefore safe to assume that the driver will not touch the v4l2_fh, 
>except
>to check the m2m_ctx pointer, after vpu_v4l2_close() destroys the m2m_ctx.
>We can safely delete and cleanup the v4l2_fh synchronously in
>vpu_v4l2_close().
>
>Signed-off-by: Laurent Pinchart <[email protected]>
>Signed-off-by: Jacopo Mondi <[email protected]>

Reviewed-by: Ming Qian <[email protected]>

>---
> drivers/media/platform/amphion/vpu_v4l2.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/media/platform/amphion/vpu_v4l2.c
>b/drivers/media/platform/amphion/vpu_v4l2.c
>index
>306d94e0f8e79faaacfa35b28e5786860f7bd1ca..57ca6262bb04b356a85e217ef
>51cfb13cb9a0a36 100644
>--- a/drivers/media/platform/amphion/vpu_v4l2.c
>+++ b/drivers/media/platform/amphion/vpu_v4l2.c
>@@ -724,8 +724,6 @@ static int vpu_v4l2_release(struct vpu_inst *inst)
>
>        v4l2_ctrl_handler_free(&inst->ctrl_handler);
>        mutex_destroy(&inst->lock);
>-       v4l2_fh_del(&inst->fh);
>-       v4l2_fh_exit(&inst->fh);
>
>        call_void_vop(inst, cleanup);
>
>@@ -794,6 +792,8 @@ int vpu_v4l2_open(struct file *file, struct vpu_inst
>*inst)
>
>        return 0;
> error:
>+       v4l2_fh_del(&inst->fh);
>+       v4l2_fh_exit(&inst->fh);
>        vpu_inst_put(inst);
>        return ret;
> }
>@@ -813,6 +813,9 @@ int vpu_v4l2_close(struct file *file)
>        call_void_vop(inst, release);
>        vpu_inst_unlock(inst);
>
>+       v4l2_fh_del(&inst->fh);
>+       v4l2_fh_exit(&inst->fh);
>+
>        vpu_inst_unregister(inst);
>        vpu_inst_put(inst);
>
>
>--
>2.49.0


_______________________________________________
Mjpeg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mjpeg-users

Reply via email to